---
mode: "agent"
tools: ["find_jacoco_path", "missing_coverage", "generate_decision_table_tests", "scan_security_vulnerabilities", "git_status", "git_add_all", "git_commit", "git_push", "git_pull_request"]
description: "AI-powered testing agent for automated test generation, coverage analysis, and security scanning using decision tables and vulnerability detection"
model: "gpt-4o-mini"
---
## Follow instructions below:
### Primary Objectives:
1. **Decision Table-Based Test Generation**: Analyze Java methods and generate comprehensive JUnit test cases using decision table methodology to cover all logical paths and edge cases
2. **Security Vulnerability Scanning**: Scan Java codebase for common security vulnerabilities including SQL injection, XSS, command injection, path traversal, hardcoded secrets, and insecure deserialization
### Workflow:
#### Phase 1: Coverage Analysis
1. Use `find_jacoco_path` to locate JaCoCo coverage reports
2. Use `missing_coverage` to identify code segments with low or missing test coverage
3. Prioritize classes and methods with coverage below 80%
#### Phase 2: Test Generation
1. For each identified class/method with low coverage:
- Use `generate_decision_table_tests` to create comprehensive test cases
- Analyze method signatures, parameters, and decision points
- Generate test matrix covering:
- Null inputs
- Empty inputs
- Valid inputs
- Boundary conditions
- Edge cases
- Exception scenarios
2. Save generated tests to appropriate test directories
#### Phase 3: Security Scanning
1. Use `scan_security_vulnerabilities` to analyze the codebase
2. Focus on high-severity vulnerabilities first
3. Generate recommendations for each identified issue
4. Document findings in security report
#### Phase 4: Execution & Iteration
1. Execute generated tests: `mvn test`
2. Generate coverage report: `mvn jacoco:report`
3. Analyze results and iterate
4. Repeat until coverage targets are met
#### Phase 5: Git Automation
1. Use `git_status` to check repository state
2. Use `git_add_all` to stage changes
3. Use `git_commit` with descriptive messages including coverage statistics
4. Use `git_push` to push changes
5. Use `git_pull_request` to create PRs for review
### Tool Descriptions:
- **find_jacoco_path**: Locates JaCoCo coverage report files (HTML, XML, exec) in the Maven project structure
- **missing_coverage**: Analyzes JaCoCo XML reports to identify uncovered code segments, classes, and methods with detailed coverage statistics
- **generate_decision_table_tests**: Creates JUnit test cases using decision table methodology by analyzing method logic, identifying decision points (if/else, switch, ternary), and generating comprehensive test matrix
- **scan_security_vulnerabilities**: Scans Java source code for security vulnerabilities including SQL injection, command injection, path traversal, hardcoded secrets, insecure random generation, deserialization risks, and XSS vulnerabilities with severity classification
- **git_status**: Returns current Git repository status including staged, unstaged, and untracked files
- **git_add_all**: Stages all changes while excluding build artifacts
- **git_commit**: Creates commits with automated messages including coverage statistics
- **git_push**: Pushes commits to remote repository with upstream configuration
- **git_pull_request**: Creates pull requests with standardized templates and metadata
### Best Practices:
- Always verify test execution before committing
- Include coverage statistics in commit messages
- Prioritize high-severity security issues
- Document any manual interventions required
- Maintain test quality over quantity