Manual SonarCloud
Manual - SonarCloud
Versão: 1.0.0
Data: 2024
Visão Geral
SonarCloud é a ferramenta de Análise Estática de Código (SAST) utilizada no projeto nCommand Lite. Realiza análise contínua de qualidade e segurança do código, detectando bugs, vulnerabilidades e code smells.
Função no Processo: Quality Gate obrigatório no pipeline (Gate A), análise de segurança estática antes do merge.
Configuração Inicial
Passo 1: Criar Projeto
- Acessar: https://sonarcloud.io
- Login com GitHub/Microsoft account
- Organization:
ionic-health - Create New Project
- Nome:
nCommand Lite - Key:
ionic-health_ncommand-lite - Visibility: Private
Passo 2: Obter Token
- My Account → Security → Generate Token
- Nome:
azure-devops-pipeline - Type: Global Analysis Token
- Expires: [Definir expiração ou nunca]
- Generate
- ⚠️ Copiar e salvar (não será exibido novamente)
- Adicionar como secret no Azure DevOps:
SONARCLOUD_TOKEN
Passo 3: Configurar Azure DevOps
Instalar Extensão:
- Azure DevOps → Organization Settings → Extensions
- Browse Marketplace → SonarCloud
- Install
Criar Service Connection:
- Project Settings → Service connections → New service connection
- SonarCloud
- Organization:
ionic-health - Token: Token gerado no passo 2
- Service connection name:
SonarCloud - Save
Passo 4: Configurar Pipeline
Adicionar Tasks ao Pipeline:
- task: SonarCloudPrepare@1
inputs:
SonarCloud: 'SonarCloud'
organization: 'ionic-health'
scannerMode: 'CLI'
configMode: 'manual'
cliProjectKey: 'ionic-health_ncommand-lite'
cliProjectName: 'nCommand Lite'
cliSources: 'src'
- task: SonarCloudAnalyze@1
- task: SonarCloudPublish@1
inputs:
pollingTimeoutSec: '300'
Quality Gate
Critérios do Quality Gate A
Obrigatório para nCommand Lite:
| Métrica | Critério | Status |
|---|---|---|
| Bugs | 0 | ✅ Bloqueante |
| Vulnerabilities | 0 | ✅ Bloqueante |
| Code Smells | 0 | ✅ Bloqueante |
| Coverage | ≥ 80% | ✅ Bloqueante |
| Duplicated Lines | < 3% | ⚠️ Aviso |
Configuração do Quality Gate
- SonarCloud → Quality Gates → Create
- Nome:
nCommand-Lite-Strict - Configurar condições:
- Bugs: 0
- Vulnerabilities: 0
- Coverage: ≥ 80%
- Code Smells: 0
- Set as Default para o projeto
Bloqueio de Pipeline
Configuração:
O pipeline bloqueia automaticamente se Quality Gate não for A:
- script: |
# Verificar Quality Gate
# Pipeline falha se gate não passar
displayName: 'Validar Quality Gate A'
Análise de Código
O Que É Analisado
Bugs:
- Erros de lógica
- Null pointer exceptions
- Condições impossíveis
- Etc.
Vulnerabilities:
- SQL Injection
- XSS
- Insecure randomness
- Hardcoded secrets
- Etc.
Code Smells:
- Código duplicado
- Complexidade ciclomática alta
- Código morto
- Etc.
Relatórios
Dashboard Principal:
- Overview: Métricas gerais
- Issues: Lista de problemas
- Security Hotspots: Pontos de atenção
- Code: Análise do código
Relatórios por Pull Request:
- Comentários automáticos no PR
- Diff analysis
- Novos issues encontrados
Integração com Pipeline
Execução no Pipeline
Ordem de Execução:
- SonarCloudPrepare: Preparar análise
- Build: Compilar código
- Tests: Executar testes com cobertura
- SonarCloudAnalyze: Analisar código
- SonarCloudPublish: Publicar resultados
- Verificação: Validar Quality Gate
Condições de Falha:
- Quality Gate ≠ A → Pipeline falha
- Novas vulnerabilidades → Pipeline falha
- Bugs críticos → Pipeline falha
Relatórios no DefectDojo
Integração:
- Pipeline executa SonarCloud
- Gerar relatório em formato compatível
- Script envia para DefectDojo API
- DefectDojo processa e deduplica
Formato: JSON ou XML
Configurações Específicas do Projeto
Exclusões
Arquivos/Pastas Excluídas:
# SonarCloud Analysis Configuration
sonar.exclusions=**/node_modules/**,**/dist/**,**/build/**,**/*.test.ts,**/*.spec.ts
sonar.test.inclusions=**/*.test.ts,**/*.spec.ts
sonar.coverage.exclusions=**/*.test.ts,**/*.spec.ts,**/node_modules/**
Configurar em: sonar-project.properties ou via pipeline
Regras Customizadas
Desabilitar Regras (se necessário):
- SonarCloud → Rules → Search
- Filtrar regras aplicáveis
- Desabilitar se não aplicável ao projeto
⚠️ Cuidado: Desabilitar regras pode reduzir qualidade. Justificar sempre.
Troubleshooting
Problema: Quality Gate sempre falha
Solução:
- Revisar métricas no dashboard
- Corrigir bugs e vulnerabilidades
- Aumentar cobertura de testes
- Ajustar critérios se necessário (com aprovação)
Problema: Análise muito lenta
Solução:
- Excluir arquivos não relevantes
- Reduzir escopo de análise
- Verificar cache do SonarCloud
- Otimizar configuração do scanner
Problema: Falsos positivos
Solução:
- Adicionar comentário "NOSONAR" (esporadicamente)
- Criar issue no SonarCloud para revisar regra
- Documentar justificativa
Boas Práticas
- Corrigir issues imediatamente antes de criar novos
- Manter cobertura alta (≥ 80%)
- Revisar Security Hotspots prioritariamente
- Não desabilitar regras sem justificativa
- Integrar com PRs para feedback rápido
Referências
- Documentação SonarCloud
- SonarCloud Quality Gates
- Processo no projeto:
docs/PROCESS.md - SOP-003:
docs/sop/SOP-003-Vulnerability-Management.md
Última Atualização: 2024
Responsável: Dev Team / DevOps