Herramienta autocontenida de análisis estático de seguridad para múltiples lenguajes
Project description
SemBicho CLI
🔒 Static Application Security Testing + Code Quality Analysis Tool
Herramienta completa de línea de comandos para análisis estático de seguridad y calidad de código.
✨ Características
- 🔐 Security Scanning: SAST para 12+ lenguajes
- 📝 Code Linting: Análisis de estilo y formato (Python, JavaScript/TypeScript)
- � Complexity Analysis: Métricas de complejidad ciclomática y cognitiva
- 📊 Quality Reports: Reportes unificados con scoring y grading
- 🔄 CI/CD Integration: GitHub Actions, GitLab CI, Jenkins
- 📈 Multi-format Output: JSON, HTML, Console, Summary
�🚀 Instalación
Desde PyPI (Recomendado)
# Instalación básica (solo seguridad)
pip install sembicho-cli
# Con herramientas de calidad (recomendado)
pip install sembicho-cli[quality]
# Instalación completa
pip install sembicho-cli[all]
Desde el código fuente
cd sembicho-cli
pip install -e .[all]
Con Docker
docker build -t sembicho-cli .
docker run --rm -v $(pwd):/workspace sembicho-cli scan --path /workspace
🔧 Herramientas Adicionales
Para aprovechar todas las características de análisis de calidad:
# Python
pip install radon flake8 black pylint
# JavaScript/TypeScript
npm install -g eslint prettier escomplex
📖 Uso
🔐 Security Scanning
# Escaneo básico de seguridad
sembicho scan --path .
# Escaneo con reporte JSON
sembicho scan --path ./mi-proyecto --output security.json --format json
# Escaneo con reporte HTML
sembicho scan --path ./mi-proyecto --output security.html --format html
# Modo CI/CD
sembicho scan --path . --ci-mode --fail-on critical,high
📝 Code Linting
# Linting de código Python
sembicho lint --path ./backend --language python
# Linting de código JavaScript
sembicho lint --path ./frontend/src --language javascript
# Con reporte JSON
sembicho lint --path ./src --output linting-report.json --format json
🔢 Complexity Analysis
# Análisis de complejidad
sembicho complexity --path ./src --language python
# Con umbral personalizado
sembicho complexity --path ./src --threshold 15
# Guardar reporte
sembicho complexity --path ./src --output complexity.json --format json
📊 Complete Quality Analysis
# Análisis completo de calidad (linting + complexity + more)
sembicho quality --path .
# Con grado mínimo para CI/CD
sembicho quality --path . --fail-on-grade B+
# Reporte completo JSON
sembicho quality --path . --output quality-report.json --format json
Integración con Backend
# Enviar resultados al backend
sembicho scan --path . --api-url http://localhost:8000/api/results --token abc123
# Con configuración
sembicho config --init
# Editar .sembicho.json con tu configuración
sembicho scan --path .
Filtros y opciones avanzadas
# Filtrar por severidad
sembicho scan --path . --severity high
# Modo verbose
sembicho scan --path . --verbose
# Herramientas específicas
sembicho scan --path . --tools bandit,semgrep
# Fallar en CI con vulnerabilidades críticas
sembicho scan --path . --ci-mode --fail-on critical
🛠️ Herramientas Integradas
- Bandit: Análisis de seguridad para Python
- ESLint: Análisis de JavaScript/TypeScript
- Semgrep: Análisis multi-lenguaje con reglas OWASP
📊 Formatos de Salida
JSON
sembicho scan --path . --format json --output results.json
Estructura del JSON:
{
"project_name": "mi-proyecto",
"scan_date": "2024-01-15T10:30:00Z",
"language": "python",
"total_vulnerabilities": 5,
"severity_counts": {
"critical": 1,
"high": 2,
"medium": 2,
"low": 0
},
"tools_used": ["bandit", "semgrep"],
"vulnerabilities": [
{
"file": "app/auth.py",
"line": 25,
"rule_id": "B101",
"severity": "high",
"message": "Hardcoded password detected",
"cwe": "CWE-798",
"tool": "bandit"
}
]
}
HTML
sembicho scan --path . --format html --output report.html
Genera un reporte HTML completo con:
- Resumen ejecutivo con métricas
- Lista detallada de vulnerabilidades
- Filtros por severidad
- Información de herramientas utilizadas
Console
sembicho scan --path .
Salida de consola con colores y formato legible.
⚙️ Configuración
Crear configuración inicial
sembicho config --init
Esto crea un archivo .sembicho.json:
{
"api_url": "http://localhost:8000/api/results",
"token": "",
"default_format": "console",
"fail_on": ["critical", "high"],
"tools": ["bandit", "eslint", "semgrep"],
"exclude_patterns": [
"*.min.js",
"node_modules/*",
".git/*",
"__pycache__/*"
]
}
Ver configuración actual
sembicho config --show
🔧 Integración CI/CD
GitHub Actions
- name: Security Scan
run: |
pip install -r sembicho-cli/requirements.txt
python sembicho-cli/main.py scan --path . --ci-mode --fail-on critical,high
GitLab CI
security_scan:
script:
- cd sembicho-cli
- pip install -r requirements.txt
- python main.py scan --path .. --ci-mode --fail-on critical,high
Jenkins
stage('Security Scan') {
steps {
sh '''
cd sembicho-cli
pip install -r requirements.txt
python main.py scan --path .. --ci-mode --fail-on critical,high
'''
}
}
🐳 Docker
Dockerfile incluido
El proyecto incluye un Dockerfile optimizado para análisis de seguridad.
# Construir imagen
docker build -t sembicho-cli .
# Ejecutar escaneo
docker run --rm -v $(pwd):/workspace sembicho-cli scan --path /workspace
# Con configuración personalizada
docker run --rm -v $(pwd):/workspace -v $(pwd)/.sembicho.json:/app/.sembicho.json sembicho-cli scan --path /workspace
📝 Códigos de Salida
0: Escaneo exitoso sin errores críticos1: Error en argumentos o ejecución1: Vulnerabilidades encontradas (cuando se usa--fail-on)
🔍 Lenguajes Soportados
- Python (.py) - Bandit, Semgrep
- JavaScript/TypeScript (.js, .ts, .jsx, .tsx) - ESLint, Semgrep
- Java (.java) - Semgrep
- PHP (.php) - Semgrep
- Go (.go) - Semgrep
- C/C++ (.c, .cpp) - Semgrep
- Ruby (.rb) - Semgrep
- C# (.cs) - Semgrep
🤝 Contribución
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/nueva-funcionalidad) - Commit tus cambios (
git commit -am 'Agregar nueva funcionalidad') - Push a la rama (
git push origin feature/nueva-funcionalidad) - Abre un Pull Request
📄 Licencia
MIT License - ver LICENSE para detalles.
🆘 Soporte
- 📧 Email: support@sembicho.com
- 🐛 Issues: GitHub Issues
- 📖 Documentación: Docs
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 sembicho_cli-2.1.2.tar.gz.
File metadata
- Download URL: sembicho_cli-2.1.2.tar.gz
- Upload date:
- Size: 80.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd70f7a48e1b2a29fc9b6a139d06aa66ac6835bae26b3d3db6b3b21b60837f1a
|
|
| MD5 |
7716e280e129bbd5a10cc3c5fc7a8d3f
|
|
| BLAKE2b-256 |
06637f6783d8e1aaba86b91702ad6803997d3857c367c59fb0730e4ed0c456cc
|
File details
Details for the file sembicho_cli-2.1.2-py3-none-any.whl.
File metadata
- Download URL: sembicho_cli-2.1.2-py3-none-any.whl
- Upload date:
- Size: 70.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ef2761ab7726302321a4f17a1be32407a974afb4b3073d5b6c818c240b4ba6d
|
|
| MD5 |
f4fb353c8ac42de67e72c24515961aee
|
|
| BLAKE2b-256 |
e7f46df934a76ae394cf60b6b3c657c3117170a6b1dd563baefb1d75574f74d2
|