AI-powered code analysis tool for CI/CD pipelines with GitHub Actions integration
Project description
๐ค AI Code Analyzer
A comprehensive AI-powered code analysis package that integrates with CI/CD pipelines to analyze code commits, execute tests, perform load testing, and generate detailed release notes with risk assessments.
๐ Quick Start
Installation
# Install from PyPI
pip install ai-code-analyzer
# Or install with all optional dependencies
pip install ai-code-analyzer[all]
GitHub Action Usage
Add this to your .github/workflows/ci.yml:
name: AI Code Analysis
on:
pull_request:
push:
branches: [main]
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ai-code-analyzer/ai-code-analyzer@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
Command Line Usage
# Initialize configuration
ai-code-analyzer init
# Analyze a commit
ai-code-analyzer analyze --commit HEAD
# Analyze a pull request
ai-code-analyzer analyze --pr 123
# Validate configuration
ai-code-analyzer validate
๐ Features
Core Analysis Capabilities
- Multi-language support: Python, JavaScript/TypeScript, Java, Go, Rust, C/C++, Ruby, PHP, Swift, Kotlin, Scala
- Static code analysis: Security vulnerabilities, code quality, complexity metrics
- Dynamic testing: Unit tests, integration tests, end-to-end tests
- Load testing: Performance testing with Locust and Artillery
- Security scanning: Bandit, Safety, Semgrep, and custom security rules
- AI-powered risk assessment: Using OpenAI GPT-4 or Anthropic Claude
CI/CD Integration
- GitHub Actions: Automated analysis on PR and push events
- PR status updates: Automatic comments and status checks
- Risk-based deployment: Blocks high-risk changes from merging
- Release notes generation: AI-generated release notes with metrics
Advanced Features
- Comprehensive reporting: JSON, HTML, and Markdown outputs
- Performance metrics: Response times, throughput, failure rates
- Test coverage analysis: Multi-framework support with detailed reporting
- Code quality scoring: Weighted scoring system with customizable thresholds
- Recommendation engine: AI-powered suggestions for improvements
๐ฆ Package Features
- Easy Installation: Available on PyPI with simple
pip install - GitHub Action: Ready-to-use GitHub Action for seamless CI/CD integration
- CLI Interface: Rich command-line interface with beautiful output
- Configuration Templates: Pre-built configuration templates for different use cases
- Extensible: Modular architecture for easy customization and extension
๐ ๏ธ Installation Options
Option 1: PyPI Package (Recommended)
# Basic installation
pip install ai-code-analyzer
# With development tools
pip install ai-code-analyzer[dev]
# With all optional dependencies
pip install ai-code-analyzer[all]
Option 2: GitHub Action
Create .github/workflows/ai-analysis.yml:
name: AI Code Analysis
on: [push, pull_request]
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ai-code-analyzer/ai-code-analyzer@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
Option 3: From Source
git clone https://github.com/ai-code-analyzer/ai-code-analyzer.git
cd ai-code-analyzer
pip install -e .
โ๏ธ Quick Configuration
Generate Configuration File
# Basic configuration
ai-code-analyzer init
# Advanced configuration
ai-code-analyzer init --template advanced
# Enterprise configuration
ai-code-analyzer init --template enterprise
Set Environment Variables
export GITHUB_TOKEN="your-github-token"
export OPENAI_API_KEY="your-openai-api-key"
# OR
export ANTHROPIC_API_KEY="your-anthropic-api-key"
๐ฏ GitHub Action Inputs
| Input | Description | Required | Default |
|---|---|---|---|
github-token |
GitHub token for API access | Yes | ${{ github.token }} |
openai-api-key |
OpenAI API key for AI analysis | No | - |
anthropic-api-key |
Anthropic API key for AI analysis | No | - |
commit-hash |
Specific commit to analyze | No | Auto-detect |
pr-number |
PR number to analyze | No | Auto-detect |
config-file |
Configuration file path | No | .ai-code-analyzer.yml |
load-testing |
Enable load testing | No | false |
fail-on-high-risk |
Fail on high/critical risk | No | true |
๐ GitHub Action Outputs
| Output | Description |
|---|---|
risk-level |
Overall risk level (low, medium, high, critical) |
risk-score |
Risk score (0-100) |
code-quality-score |
Code quality score (0-100) |
test-coverage |
Test coverage percentage |
security-issues |
Number of security issues |
performance-issues |
Number of performance issues |
analysis-results |
Path to detailed results file |
๐ง CLI Commands
Analyze Code
# Analyze current commit
ai-code-analyzer analyze --commit HEAD
# Analyze specific commit
ai-code-analyzer analyze --commit abc123
# Analyze pull request
ai-code-analyzer analyze --pr 123
# Custom output file
ai-code-analyzer analyze --commit HEAD --output my-results.json
# Verbose output
ai-code-analyzer analyze --commit HEAD --verbose
Configuration Management
# Initialize configuration
ai-code-analyzer init
# Validate configuration
ai-code-analyzer validate
# Validate specific config file
ai-code-analyzer validate --config my-config.yml
Version Information
# Show version
ai-code-analyzer version
# Show help
ai-code-analyzer --help
๐ Prerequisites
- Python 3.8+
- Git
- GitHub token (for GitHub integration)
- OpenAI API key or Anthropic API key (for AI features)
- Node.js 16+ (optional, for JavaScript analysis)
- Go 1.19+ (optional, for Go analysis)
๐ Usage Examples
Basic GitHub Action
name: Code Analysis
on: [push, pull_request]
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ai-code-analyzer/ai-code-analyzer@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
Advanced GitHub Action with Load Testing
name: Advanced Code Analysis
on: [push, pull_request]
jobs:
analyze:
runs-on: ubuntu-latest
services:
app:
image: my-app:latest
ports:
- 8000:8000
steps:
- uses: actions/checkout@v4
- uses: ai-code-analyzer/ai-code-analyzer@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
load-testing: true
load-testing-host: http://localhost:8000
config-file: .ai-code-analyzer.yml
Python Package Usage
from ai_code_analyzer import CodeAnalysisTool
# Initialize the tool
tool = CodeAnalysisTool('config.yaml')
# Analyze a commit
results = await tool.analyze_commit('abc123')
# Analyze a PR
pr_results = await tool.analyze_pr(123)
CLI Usage
# Initialize configuration
ai-code-analyzer init --template advanced
# Analyze current commit
ai-code-analyzer analyze --commit HEAD
# Analyze with custom config
ai-code-analyzer analyze --commit HEAD --config my-config.yml
# Validate configuration
ai-code-analyzer validate
๐ Configuration Examples
Basic Configuration
# .ai-code-analyzer.yml
repository:
path: "."
github:
token: "${GITHUB_TOKEN}"
owner: "${GITHUB_REPOSITORY_OWNER}"
repo: "${GITHUB_REPOSITORY_NAME}"
ai:
openai_api_key: "${OPENAI_API_KEY}"
risk_assessment:
thresholds:
low: 0
medium: 40
high: 60
critical: 80
Advanced Configuration
# .ai-code-analyzer.yml
repository:
path: "."
github:
token: "${GITHUB_TOKEN}"
owner: "${GITHUB_REPOSITORY_OWNER}"
repo: "${GITHUB_REPOSITORY_NAME}"
ai:
openai_api_key: "${OPENAI_API_KEY}"
anthropic_api_key: "${ANTHROPIC_API_KEY}"
load_testing:
enabled: true
host: "http://localhost:8000"
basic:
users: 10
duration: 60
analysis:
languages:
- python
- javascript
- java
- go
security:
enable_bandit: true
enable_safety: true
enable_semgrep: true
testing:
frameworks:
python: ["pytest"]
javascript: ["jest"]
coverage:
min_coverage: 80
risk_assessment:
weights:
security: 0.3
performance: 0.2
reliability: 0.25
maintainability: 0.15
testing: 0.1
thresholds:
low: 0
medium: 40
high: 60
critical: 80
๐ Example Workflows
Workflow 1: Basic PR Analysis
# .github/workflows/pr-analysis.yml
name: PR Analysis
on:
pull_request:
types: [opened, synchronize]
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ai-code-analyzer/ai-code-analyzer@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
fail-on-high-risk: true
Workflow 2: Release Analysis
# .github/workflows/release-analysis.yml
name: Release Analysis
on:
push:
branches: [main]
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ai-code-analyzer/ai-code-analyzer@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
load-testing: true
fail-on-high-risk: false
- name: Create Release Notes
if: success()
run: |
# Use the generated release notes for creating releases
echo "Release notes generated in analysis results"
๐ Output Examples
Risk Assessment Output
{
"risk_assessment": {
"risk_level": "medium",
"risk_score": 45.7,
"confidence": 0.85,
"recommendations": [
"Address security vulnerabilities immediately",
"Increase test coverage to at least 80%",
"Optimize performance bottlenecks"
]
},
"analysis": {
"quality_score": 78.5,
"security_issues": 2,
"performance_issues": 1
},
"tests": {
"summary": {
"total_tests": 150,
"passed_tests": 145,
"coverage_percentage": 82.3
}
}
}
CLI Output
๐ฏ Risk Assessment
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Risk Level: MEDIUM โ
โ Risk Score: 45.7/100 โ
โ Confidence: 0.85 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Analysis Metrics
โโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโ
โ Metric โ Value โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Code Quality Score โ 78.5/100 โ
โ Security Issues โ 2 โ
โ Performance Issues โ 1 โ
โ Test Coverage โ 82.3% โ
โ Tests Passed โ 145/150 โ
โโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโ
๐ก Top Recommendations:
1. Address security vulnerabilities immediately
2. Increase test coverage to at least 80%
3. Optimize performance bottlenecks
๐ง Development
Setting Up Development Environment
# Clone the repository
git clone https://github.com/ai-code-analyzer/ai-code-analyzer.git
cd ai-code-analyzer
# Install in development mode
pip install -e .[dev]
# Run tests
pytest
# Run linting
black src/ tests/
isort src/ tests/
flake8 src/ tests/
Building the Package
# Build the package
python -m build
# Check the package
twine check dist/*
# Upload to Test PyPI
twine upload --repository testpypi dist/*
๐ API Reference
CodeAnalysisTool
from ai_code_analyzer import CodeAnalysisTool
tool = CodeAnalysisTool(config_path="config.yaml")
# Analyze a commit
results = await tool.analyze_commit("abc123")
# Analyze a PR
pr_results = await tool.analyze_pr(123)
Configuration
from ai_code_analyzer import Config
config = Config("config.yaml")
value = config.get("github.token")
config.set("load_testing.enabled", True)
๐ Analysis Results
Risk Assessment Levels
- ๐ข LOW (0-39): Safe to merge, minimal risk
- ๐ก MEDIUM (40-59): Proceed with caution, additional review recommended
- ๐ HIGH (60-79): Requires thorough review, consider additional testing
- ๐ด CRITICAL (80-100): DO NOT MERGE, critical issues must be resolved
Output Format
The tool generates comprehensive results in JSON format:
{
"commit_hash": "abc123",
"risk_assessment": {
"risk_level": "medium",
"risk_score": 45.7,
"confidence": 0.85,
"recommendations": [
"Address security vulnerabilities immediately",
"Increase test coverage to at least 80%"
]
},
"analysis": {
"quality_score": 78.5,
"security_issues": ["Potential SQL injection in auth.py"],
"performance_issues": ["Inefficient database query in search.py"]
},
"tests": {
"summary": {
"total_tests": 150,
"passed_tests": 145,
"failed_tests": 5,
"coverage_percentage": 82.3
}
},
"release_notes": "# Release Notes\n\n## Features\n- Added user authentication..."
}
๐ฏ Supported Test Frameworks
Python
- pytest
- unittest
- nose2
JavaScript/TypeScript
- Jest
- Mocha
- Cypress
- Playwright
Java
- JUnit
- TestNG
- Maven
- Gradle
Go
- go test
Rust
- cargo test
๐ Security Analysis
Static Analysis Tools
- Bandit: Python security linter
- Safety: Python dependency vulnerability scanner
- Semgrep: Multi-language static analysis
- ESLint: JavaScript/TypeScript security rules
- Gosec: Go security analyzer
Security Checks
- Hardcoded secrets detection
- SQL injection patterns
- XSS vulnerability patterns
- Command injection detection
- Insecure cryptographic practices
โก Performance Testing
Load Testing Scenarios
- Basic Load Test: 10 users, 60 seconds
- Spike Test: 50 users, 30 seconds
- Stress Test: 100 users, 5 minutes
- Endurance Test: 20 users, 30 minutes
Performance Metrics
- Average response time
- Requests per second
- Error rate
- Resource utilization
๐ค AI Integration
OpenAI GPT-4
- Advanced code analysis
- Risk assessment
- Recommendation generation
- Release notes creation
Anthropic Claude
- Alternative AI provider
- Advanced reasoning capabilities
- Code understanding
๐ง Customization
Custom Risk Rules
Add custom rules to config.yaml:
risk_assessment:
custom_rules:
- pattern: "eval\\s*\\("
severity: "critical"
message: "Use of eval() is dangerous"
- pattern: "TODO|FIXME"
severity: "medium"
message: "Unresolved TODO items"
Custom Test Commands
testing:
custom_commands:
python: ["python -m pytest --cov=src"]
javascript: ["npm test", "npm run test:integration"]
๐ API Documentation
Core Classes
CodeAnalyzer
Performs static code analysis and quality checks.
TestExecutor
Executes tests and collects results.
LoadTester
Performs load testing using Locust and Artillery.
AIRiskAssessment
AI-powered risk assessment using OpenAI or Anthropic.
ReleaseNotesGenerator
Generates comprehensive release notes.
GitHubIntegration
Handles GitHub API integration.
๐จ Troubleshooting
Common Issues
- Permission Denied: Ensure GitHub token has required permissions
- API Rate Limits: Implement rate limiting for AI API calls
- Memory Issues: Increase memory limits for large repositories
- Network Timeouts: Configure appropriate timeouts for external calls
Debug Mode
Enable debug logging:
python src/main.py --verbose --commit HEAD
๐ค Contributing to the Package
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
Development Guidelines
# Install in development mode
pip install -e .[dev]
# Run tests
pytest
# Format code
black src/ tests/
isort src/ tests/
# Type checking
mypy src/
# Linting
flake8 src/ tests/
๐ฆ Publishing
The package is automatically published to PyPI when a new release is created on GitHub.
Manual Publishing
# Build the package
python -m build
# Upload to PyPI
twine upload dist/*
๐ Links
- PyPI Package: https://pypi.org/project/ai-code-analyzer/
- GitHub Repository: https://github.com/ai-code-analyzer/ai-code-analyzer
- Documentation: https://ai-code-analyzer.readthedocs.io/
- GitHub Action: https://github.com/marketplace/actions/ai-code-analyzer
- Issue Tracker: https://github.com/ai-code-analyzer/ai-code-analyzer/issues
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgments
- OpenAI for GPT-4 API
- Anthropic for Claude API
- GitHub for Actions and API
- All open-source security and testing tools
- Python packaging community
๐ Support
For support and questions:
- Check the Documentation
- Search existing Issues
- Create a new issue with detailed information
- Join our Discord Community
Made with โค๏ธ by the AI Code Analysis Team
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ai_code_analyzer-1.0.1.tar.gz.
File metadata
- Download URL: ai_code_analyzer-1.0.1.tar.gz
- Upload date:
- Size: 44.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
604578db1250dec10b56a291e04557af971b514853ee99be3e87d8e297d1239c
|
|
| MD5 |
1cbf98532cb262b0f9bf57b14906e2c8
|
|
| BLAKE2b-256 |
d1b583dd573da19f9d9cd5767f9efc682c11fe180600f677d80ba23239408b5c
|
File details
Details for the file ai_code_analyzer-1.0.1-py3-none-any.whl.
File metadata
- Download URL: ai_code_analyzer-1.0.1-py3-none-any.whl
- Upload date:
- Size: 37.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca0441caa1146c608dc3139fad6846f4374fd666ae6bebc87643f4094d5d5703
|
|
| MD5 |
a826e9fbbe7d5de9fe53ba82ab216a91
|
|
| BLAKE2b-256 |
372962332ff63e6f9d6a5faa5b492782cec166148b03ec32977ab242c66a1c7c
|