sonarqube-fix
Use when fixing SonarQube code quality issues automatically across any language or framework
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Use when fixing SonarQube code quality issues automatically across any language or framework
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Use when creating, updating, or standardizing GitHub Actions workflows for a .NET repository, especially C# libraries, NuGet packages, ABP/EAF web apps, or Angular frontends.
Bootstrap a complete production-ready agent harness in a repository — CLAUDE.md, .claude/, .devin/, skills/, rules/, ignore files, and sub-agents. Use when initializing AI agent support in a new repo, restructuring existing agent files into modern File-based Context conventions, or generating harness artifacts following Agent = Model + Harness principles. Targets Claude Code and Devin CLI only — does NOT create artifacts for OpenCode, Cursor, Gemini, Copilot or JetBrains AI. Do NOT use for building MCP servers (use building-mcp-servers).
Install and configure RTK (Rust Token Killer) — a high-performance CLI proxy that reduces LLM token consumption by 60-90%. Automatically rewrites shell commands to their rtk equivalents via hooks. Use when setting up a new dev environment or when token optimization is needed. Do NOT use when raw unfiltered output is required (use rtk proxy for that).
Apply Test-Driven Development to skill authoring — write pressure scenarios with subagents (test cases), observe baseline failures (RED), write the skill (GREEN), close loopholes through refactor cycles. Use when creating new skills, editing existing skills, or verifying skills work before deployment. Do NOT use for one-off solutions, project-specific conventions (put in AGENTS.md/CLAUDE.md), or mechanical constraints enforceable via regex/validation. Companion skills: brainstorming (for design phase), create-agent-harness (for bootstrapping agent harness in a repo).
Use when working with ABP module system, dependency injection, base classes, time handling, business exceptions, or localization patterns
Use when designing and implementing RESTful APIs with ASP.NET Core, or when applying security, error handling, documentation, testing, or performance optimization to API endpoints
| name | sonarqube-fix |
| license | UNLICENSED |
| description | Use when fixing SonarQube code quality issues automatically across any language or framework |
| subagent | false |
| user-invokable | true |
| argument-hint | <project-name> [--new-code-only] [--issues=<issue-id1,issue-id2,...>] |
| metadata | {"version":"1.0.0","author":"afonsoft","visibility":"public","rt":"Portais","squad":"360"} |
Corrigir automaticamente as issues reportadas pelo SonarQube, independentemente da linguagem ou framework, seguindo um processo estruturado com:
A skill suporta múltiplas edições do SonarQube através de variáveis de ambiente. A detecção é automática baseada na disponibilidade das variáveis (em ordem de prioridade):
⚠️ IMPORTANTE: Por segurança, NUNCA leia, print ou inspecione o valor de variáveis de ambiente que contenham tokens. O máximo que você pode saber é em qual variável o token está armazenado. Use as variáveis diretamente nos comandos sem acessar seu conteúdo.
SONARQUBE_CUSTOM_URL: URL base do SonarQube customizadoSONARQUBE_CUSTOM_TOKEN: Token de autenticação para o SonarQube customizadoSONARQUBE_CUSTOM_EDITION: Edição do SonarQube customizado (open ou enterprise, padrão: open)SONARQUBE_ENTERPRISE_TOKEN: Token de autenticação para o SonarQube EnterpriseSONARQUBE_ENTERPRISE_URL: URL base do SonarQube Enterprise (opcional, usa automática como fallback)https://sonarqube.prod.aws.cloud.ihfSONARQUBE_OPEN_TOKEN: Token de autenticação para o SonarQube Open (preferencial)SONAR_TK: Token de autenticação para o SonarQube Open (fallback para compatibilidade, usado apenas se SONARQUBE_OPEN_TOKEN não estiver definido)SONARQUBE_OPEN_URL: URL base do SonarQube Open (opcional, usa automática como fallback)https://sonaropen.prod.aws.cloud.ihfAs edições Enterprise e Custom com edição enterprise suportam automaticamente o parâmetro branch na API. A skill detecta automaticamente o branch atual usando git branch --show-current.
A skill detecta automaticamente a stack do projeto analisando os arquivos de configuração. Carregue o script references/detect-stack.sh para determinar a stack e configurar os comandos apropriados.
| Arquivo | Stack | Gerenciador | Ferramenta de Testes | Ferramenta de Cobertura |
|---|---|---|---|---|
pom.xml | Java/Kotlin | Maven | Maven Surefire/Failsafe | JaCoCo |
build.gradle / build.gradle.kts | Java/Kotlin | Gradle | Gradle Test | JaCoCo |
package.json | JavaScript/TypeScript | npm/yarn/pnpm | Jest/Vitest/Mocha | Istanbul |
requirements.txt / pyproject.toml | Python | pip | pytest | Coverage.py |
.csproj / .sln | C#/.NET | dotnet | dotnet test | OpenCover/Cobertura |
go.mod | Go | go mod | go test | go test -cover |
Gemfile | Ruby | bundler | rspec/minitest | SimpleCov |
composer.json | PHP | composer | phpunit | phpunit |
build.sbt | Scala | sbt | sbt test | sbt coverage |
Carregue o script references/detect-stack.sh para detectar automaticamente a stack do projeto e configurar os comandos apropriados.
angular.json ou angular-cli.json# Testes com cobertura
ng test --code-coverage --watch=false
# Linting
ng lint
# Formatação
npx prettier --write src/
npx eslint --fix src/
# Build para validação
ng build --configuration=production
references/validate-angular.sh — Validação Angular (ng lint, ng test, prettier, eslint)references/templates/test-angular.md — Template para testes Karma/Jasmine com TestBed.csproj ou .sln# Testes com cobertura
dotnet test /p:CollectCoverage=true /p:CoverageFormat=cobertura
# Linting e análise
dotnet build /p:RunAnalyzersDuringBuild=true
# Formatação
dotnet format
# Restore de pacotes
dotnet restore
references/validate-csharp.sh — Validação C#/.NET (dotnet build, dotnet test, dotnet format)references/templates/test-csharp.md — Template para testes xUnit/MoqCarregue o script references/sonar-local-scan.sh para executar SonarQube localmente e revalidar as correções antes do commit.
# Executar scan local
bash references/sonar-local-scan.sh
O script sonar-local-scan.sh requer:
sonar-scanner instalado (disponível em https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/)sonar-project.properties na raiz do projeto (opcional, script configura automaticamente)sonar.projectKey=my-project
sonar.sources=src
sonar.tests=tests
sonar.exclusions=**/node_modules/**,**/dist/**,**/bin/**,**/obj/**
sonar.coverage.exclusions=**/*Tests.cs,**/Program.cs
sonar.cs.vscoveragexml.reportPaths=coverage.xml
sonar.javascript.lcov.reportPaths=coverage/lcov.info
Detectar Stack do Projeto
references/detect-stack.sh para detectar automaticamente a stackSTACK, BUILD_TOOL, TEST_FRAMEWORK, COVERAGE_TOOLVerificar arquivo de issues
issues e passando uma lista csv com os IDs das issues, caso contrário baixe todas as issues não resolvidas do projeto usando a API do SonarQube.
Se o usuário solicitar para corrigir só as issues novas, baixe as issues não resolvidas, e adicione o filtro inNewCodePeriod como true.Detecção automática de edição do SonarQube: A skill detecta automaticamente qual edição usar baseada nas variáveis de ambiente disponíveis (em ordem de prioridade):
$SONARQUBE_CUSTOM_URL estiver definida$SONARQUBE_ENTERPRISE_TOKEN estiver definido$SONARQUBE_OPEN_TOKEN ou $SONAR_TK estiver definido$SONAR_TK com URL automática OpenDownload das issues com detecção automática:
Carregue o script de referência references/download-issues.sh e execute-o.
references/jsonf.sh.sonar_devin_auto_fix/sonarqube_issues.json existe e é parseávelCriar ToDo Board
.sonar_devin_auto_fix/SONAR_FIX_TODO_BOARD.md# SonarQube Auto-Fix ToDo Board
## Checklist de issues do SonarQube
- [ ] Issue <ID> — Regra: <RuleKey> — Arquivo: `<caminho/do/arquivo>` — Linha: <linha>
Resumo: <mensagem curta da issue>
Para cada issue, execute em ordem:
[x] quando corrigidaAtualizar .gitignore
.gitignore na raiz do projeto.sonar_devin_auto_fix/**Gerar Guia de Revisão
.sonar_devin_auto_fix/SONAR_FIX_REVIEW_NOTES.mdValidação final
Gerar Dashboard de Métricas
.sonar_devin_auto_fix/SONAR_FIX_METRICS.htmlA skill integra automaticamente ferramentas externas por stack para validar e formatar o código após as correções.
| Stack | Linter | Comando |
|---|---|---|
| Java/Kotlin | Checkstyle, PMD | mvn checkstyle:check pmd:check |
| JavaScript/TypeScript | ESLint | npx eslint src/ |
| Python | Pylint, Flake8 | python -m pylint src/ |
| C#/.NET | StyleCop, Roslyn Analyzers | dotnet build /p:RunAnalyzersDuringBuild=true |
| Go | golint, golangci-lint | golangci-lint run |
| Ruby | RuboCop | bundle exec rubocop |
| PHP | PHPStan | vendor/bin/phpstan analyse |
| Scala | Scalastyle, Scapegoat | sbt scalastyle scapegoat |
| Stack | Formatter | Comando |
|---|---|---|
| Java/Kotlin | Spotless, Google Java Format | mvn spotless:apply |
| JavaScript/TypeScript | Prettier | npx prettier --write src/ |
| Python | Black, isort | python -m black src/ |
| C#/.NET | dotnet format | dotnet format |
| Go | gofmt, goimports | gofmt -w . |
| Ruby | Rufo | bundle exec rufo |
| PHP | PHP CS Fixer | vendor/bin/php-cs-fixer fix |
| Stack | Ferramenta | Comando |
|---|---|---|
| Java/Kotlin | JaCoCo | mvn jacoco:report |
| JavaScript/TypeScript | Istanbul | npx vitest run --coverage |
| Python | Coverage.py | python -m coverage run -m pytest |
| C#/.NET | OpenCover, Cobertura | dotnet test /p:CollectCoverage=true /p:CoverageFormat=cobertura |
| Go | go test -cover | go test -cover ./... |
| Ruby | SimpleCov | bundle exec rspec --coverage |
| PHP | phpunit --coverage-clover | vendor/bin/phpunit --coverage-clover=coverage.xml |
| Scala | sbt coverage | sbt clean coverage test coverageReport |
A skill pode utilizar SonarLint e SonarScanner para validação local antes do commit:
SonarLint (IDE Integration):
SonarScanner CLI:
sonar-scanner -Dsonar.projectKey=<project> -Dsonar.sources=srcA skill carrega scripts de referência para validação automática por stack:
references/validate-java.sh — Validação Java/Kotlin (Checkstyle, PMD, Spotless, JaCoCo)references/validate-js.sh — Validação JavaScript/TypeScript (ESLint, Prettier, Vitest)references/validate-python.sh — Validação Python (Pylint, Flake8, Black, pytest)references/validate-csharp.sh — Validação C#/.NET (Roslyn Analyzers, dotnet format, dotnet test)references/validate-go.sh — Validação Go (golangci-lint, gofmt, go test)references/validate-ruby.sh — Validação Ruby (RuboCop, Rufo, rspec)references/validate-php.sh — Validação PHP (PHPStan, PHP CS Fixer, phpunit)references/validate-scala.sh — Validação Scala (Scalastyle, Scapegoat, sbt)A skill gera testes automaticamente baseados em templates específicos por stack. Carregue o template apropriado da pasta references/templates/:
test-java.md — Template para testes JUnit/Mockitotest-kotlin.md — Template para testes KotlinTest/Mockktest-python.md — Template para testes pytest/unittesttest-javascript.md — Template para testes Jest/Vitesttest-typescript.md — Template para testes TypeScripttest-csharp.md — Template para testes xUnit/Moqtest-go.md — Template para testes Gotest-ruby.md — Template para testes RSpec/Minitesttest-php.md — Template para testes PHPUnittest-scala.md — Template para testes ScalaTest/ScalaCheck// NOSONAR, // no sonar, # noqa, # pragma: no cover, etc.@IgnoreCoverage, ExcludeFromCodeCoverage, @Suppress, etc.#pragma, etc.sonar-project.properties, sonar-scanner.properties, etc., Remova também outros scanners, como o SonarScanner for Maven geralmente presente no POM.xml, pois nossa pipeline é autonoma e não depende desses arquivos para funcionar. (Mantenha por enquanto apenas configurações relacionadas ao SonarQube em arquivos .csproj)..sonar_devin_auto_fix/**Os comandos estão configurados para forçar ambientes isolados. O prefixo de isolamento é obrigatório, mas você pode adicionar mais parâmetros após ele.
Regra: Mantenha o parâmetro de isolamento (ex: -Dmaven.repo.local=./.m2/repository), mas pode adicionar mais flags.
# ✅ PERMITIDO - Isolamento obrigatório + parâmetros adicionais
mvn -Dmaven.repo.local=./.m2/repository clean test
mvn -Dmaven.repo.local=./.m2/repository -DskipTests=false jacoco:report
mvn -Dmaven.repo.local=./.m2/repository -Dorg.slf4j.simpleLogger.defaultLogLevel=debug clean test
# ❌ NÃO PERMITIDO - Sem isolamento
mvn clean test
# ✅ PERMITIDO - Isolamento obrigatório + flags adicionais
gradle --gradle-user-home ./.gradle test
gradle --gradle-user-home ./.gradle test --info
gradle --gradle-user-home ./.gradle clean build -x test
# ❌ NÃO PERMITIDO - Sem isolamento
gradle test
# npm ✅ PERMITIDO
npm install --no-save
npm install --no-save --verbose
npm test -- --coverage --verbose
# yarn ✅ PERMITIDO
yarn install --offline
yarn install --offline --verbose
# pnpm ✅ PERMITIDO
pnpm install
pnpm install --verbose
# npx ✅ PERMITIDO (qualquer parâmetro)
npx vitest run --coverage
npx eslint src/
# Criar venv (se não existir) ✅ PERMITIDO
python -m venv .venv
python -m venv .venv --upgrade-deps
# pip com isolamento ✅ PERMITIDO
python -m pip install -r requirements.txt -q
python -m pip install --target ./.venv/lib -q package-name
python -m pip install --target ./.venv/lib --upgrade package-name
# pytest e coverage ✅ PERMITIDO
python -m pytest --cov=src tests/ -v
python -m pytest --cov=src tests/ --cov-report=html
python -m coverage run -m pytest
python -m coverage report --skip-covered
# ✅ PERMITIDO
dotnet test
dotnet test /p:CollectCoverage=true /p:CoverageFormat=cobertura
dotnet test /p:CollectCoverage=true /p:Exclude=\"[*Tests]*\"
# ✅ PERMITIDO
go test -cover ./...
go test -cover ./... -v
go test -coverprofile=coverage.out ./... -timeout=10m
# ✅ PERMITIDO
bundle install --local
bundle install --local --no-deployment
bundle exec rspec --coverage
bundle exec rspec --coverage -f progress
# ✅ PERMITIDO
composer install --no-dev
composer install --no-dev --optimize-autoloader
composer install --no-dev --classmap-authoritative
vendor/bin/phpunit --coverage-clover=coverage.xml
vendor/bin/phpunit --coverage-clover=coverage.xml -v
# ✅ PERMITIDO
sbt clean coverage test coverageReport
sbt clean coverage test coverageReport -Dconfig=test
sbt "test -- -Dverbose=true"
Ao finalizar todas as correções, rode:
git status
Analise a saída e:
.gitignoregit restore --staged <arquivo>.sonar_devin_auto_fix/ não aparece como staged⚠️ Não faça commit. Deixe o repositório limpo e organizado para que o desenvolvedor humano revise e decida o que commitar.
Se desejar remover ambientes isolados após conclusão:
# Python venv
rm -rf .venv
# Maven local repository (mantém src/pom.xml intacto)
rm -rf .m2
# Node modules (se necessário)
rm -rf node_modules .npm
# Outros caches
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
find . -type d -name ".pytest_cache" -exec rm -rf {} + 2>/dev/null || true
find . -type d -name "node_modules/.cache" -exec rm -rf {} + 2>/dev/null || true
Importante: Verifique que os ambientes isolados estão no .gitignore:
# Verificar se já estão no .gitignore
grep -E "^\.venv$|^\.m2$|^node_modules$|^__pycache__$" .gitignore
# Se não encontrar, adicionar:
echo ".venv" >> .gitignore
echo ".m2" >> .gitignore
echo "node_modules" >> .gitignore
echo ".pytest_cache" >> .gitignore
echo "__pycache__" >> .gitignore
sonarqube_issues.json. Não refatore sem necessidade, não melhore, não adicione funcionalidades, não reorganize código que não esteja diretamente relacionado à issue.NO COVERAGE EXCLUSIONS
Nenhuma exclusão de cobertura deve ser usada para contornar a falta de testes.
No exceptions:
// NOSONAR, // no sonar, # noqa, # pragma: no cover@IgnoreCoverage, ExcludeFromCodeCoverage, @Suppress#pragma para exclusões| Erro | Consequência | Como evitar |
|---|---|---|
| Adicionar exclusões de cobertura | Código sem testes aprovado | Implemente testes para todas as linhas modificadas |
| Corrigir issues sem testes | Regressões não detectadas | Sempre adicionar testes unitários para cada correção |
| Modificar lógica de negócio sem necessidade | Risco de bugs | Limite-se ao escopo da issue do SonarQube |
| Não rodar linters após correção | Novas violações introduzidas | Execute linters da stack após cada correção |
| Não limpar ambiente ao final | Arquivos temporários no repo | Execute limpeza de ambiente ao finalizar |
| Printar valores de variáveis de ambiente | Violação de segurança | NUNCA leia ou print tokens, use variáveis diretamente nos comandos |
Mesmo código simples pode ter bugs. TDD aplica-se a qualquer correção, não importa a complexidade.
Exclusões de cobertura violam o princípio de qualidade. Se o código é complexo demais para testar, refatore-o.
SonarQube pode ter falsos positivos, mas a maioria das issues é válida. Corrija e discuta casos legítimos com a equipe.
Correções em massa sem testes aumentam drasticamente o risco de regressões. Corrija uma issue por vez com testes.
Validação local economiza tempo e evita rejeições no pipeline. Use o script sonar-local-scan.sh.
This skill follows the agent catalog standards:
license: UNLICENSED, metadata.version, metadata.author, tripartite description with explicit Do NOT use for clausefeature/{agent}-{YYYYMMDD}-{descricao-curta} from rules/global-rules.instructions.mddevelop, PR target is develop (not main)This skill was created following patterns from obra/superpowers/skills/writing-skills and adapted for SonarQube auto-fix workflows across multiple stacks.