O CodeMender oferece três modos de verificação distintos usando o comando cm find.
Cada modo foi projetado para uma fase específica do ciclo de vida de desenvolvimento de software, equilibrando velocidade, escopo e profundidade.
Comparar modos de localização
A tabela a seguir compara os três modos de verificação cm find:
| Modo | Comando | Escopo de destino | Tempo de execução típico | Ideal para |
|---|---|---|---|---|
| Verificação padrão | cm find PATH |
Diretório especificado | Tempo de execução moderado | Descoberta de desenvolvedores locais, verificações rápidas, revisões exploratórias |
| Verificação de diferenças | cm find PATH --diff[=REF] |
Arquivos modificados e arquivos dependentes (como chamadores e chamados) | Tempo de execução rápido | Pipelines de CI/CD de solicitação de pull (GitHub Actions, Cloud Build), hooks de pré-commit |
| Verificação avançada | cm find PATH --deep |
Repositório inteiro | Tempo de execução mais longo | Auditorias programadas, prontidão para lançamento, certificações de conformidade (SOC 2, ISO) |
Verificação padrão (padrão)
Uma verificação padrão é o modo padrão quando você executa cm find sem fornecer outras flags de verificação. Ela executa uma verificação autônoma de sessão única do diretório de destino especificado. Durante a verificação, o CodeMender descobre arquivos de origem, prioriza-os com base em padrões de vulnerabilidade, realiza uma análise de segurança inicial e informa possíveis vulnerabilidades agrupadas por gravidade e tipo.
Os exemplos a seguir demonstram como executar uma verificação padrão em um diretório de destino:
# Scan a directory using the default model
cm find ./src
# Scan with a specific Gemini model
cm find ./src --model gemini-3.8-flash
Pontos fortes
Uma verificação padrão funciona sem configuração e sem flags ou parâmetros extras. Ela equilibra velocidade e cobertura com um tempo de execução moderado e usa tokens e computação mínimos, tornando-a econômica para o desenvolvimento diário.
Vantagens, desvantagens e limitações
Uma verificação padrão tem menor recall em bases de código grandes e pode não explorar todos os arquivos em repositórios empresariais grandes e com vários pacotes porque opera em um contexto de sessão única. Ela também se concentra principalmente em padrões locais em arquivos individuais, o que limita a análise entre pacotes e pode perder vulnerabilidades que abrangem pacotes distantes.
Quando usar
Use uma verificação padrão nos seguintes cenários:
- Execute uma verificação na sua máquina local antes de confirmar as mudanças para receber feedback rápido durante o desenvolvimento local.
- Inspecione um repositório recém-clonado ou um projeto pequeno para uma avaliação inicial da postura de segurança.
- Inspecione um subdiretório ou módulo específico ao investigar um possível problema.
Verificação de diferenças
Uma verificação de diferenças realiza a análise de diferenças do Git para fluxos de trabalho de solicitação de envio e pipelines de CI/CD, inspecionando arquivos modificados e adicionados, com foco nos intervalos de linhas exatos (pedaços de diferenças) que foram alterados. Além de inspecionar as linhas alteradas, ela realiza uma análise de impacto para descobrir arquivos não modificados no repositório que chamam, importam ou dependem das funções e símbolos modificados. Isso ajuda a garantir que as mudanças que alteram contratos ou assinaturas de função em um arquivo não introduzam vulnerabilidades em arquivos dependentes.
Durante a verificação, o CodeMender isola automaticamente as vulnerabilidades pré-existentes no código não modificado para que problemas legados não causem falha na verificação ou bloqueiem a solicitação de envio. Em seguida, ele avalia as descobertas em relação à política --fail-on e gera resultados no formato de tabela, JSON ou SARIF v2.1.0.
Os exemplos a seguir demonstram como executar uma verificação de diferenças em relação a mudanças na cópia de trabalho, mudanças preparadas ou uma ramificação de destino:
# Scan working copy changes versus HEAD
cm find . --diff
# Scan staged changes only (pre-commit)
cm find . --diff --staged
# Scan a pull request branch against the main branch in CI/CD
cm find . --diff=origin/main --format=sarif --output=results.sarif \
--fail-on=CRITICAL,HIGH
Para configurações de pipeline de ponta a ponta, consulte Integrar com CI/CD.
Pontos fortes
Uma verificação de diferenças é rápida e determinística, geralmente terminando em menos de 2 minutos para manter os tempos de execução do pipeline de CI/CD curtos. Ao contrário dos verificadores de diferenças que inspecionam apenas as linhas alteradas, --diff inspeciona as relações de chamador e chamado para detectar regressões de segurança e violações de contrato entre arquivos. Como ela suprime as descobertas em código não modificado, a verificação só bloqueia as solicitações de pull em problemas introduzidos ou afetados pelas mudanças, evitando relatórios ruidosos e falhas de build desnecessárias. Uma verificação de diferenças também emite SARIF v2.1.0 para integração direta em anotações de verificação de código do GitHub e painéis do Cloud Build.
Vantagens, desvantagens e limitações
Uma verificação de diferenças só analisa o código na área afetada da solicitação de envio e não encontra vulnerabilidades pré-existentes em partes não modificadas do repositório. Ela também exige um repositório Git com acesso à referência de base de destino.
Quando usar
Use uma verificação de diferenças nos seguintes cenários:
- Execute verificações automatizadas em cada solicitação de envio em pipelines de CI/CD, como GitHub Actions, Cloud Build, GitLab CI ou Jenkins.
- Verifique se as mudanças locais estão limpas em hooks de pré-commit ou pré-push antes de enviar o código para o repositório remoto.
- Valide se as mesclagens entre ramificações de lançamento não introduzem regressões.
Verificação avançada
Uma verificação avançada é um modo de verificação exaustivo projetado para auditorias de segurança abrangentes em todo o repositório. Ela audita arquivos de origem em todo o
repositório simultaneamente usando workers paralelos (configurados com
--deep-workers, que tem o valor padrão 8 e aceita um intervalo de 1 a 16). À medida que
descobre possíveis descobertas, ela as valida e corrobora com o contexto de código ao redor para filtrar falsos positivos antes de informar os resultados.
Os exemplos a seguir demonstram como executar uma verificação avançada em um repositório:
# Run an exhaustive deep scan across the entire repository
cm find . --deep
# Tune concurrency and use the cyber-specialized security model
cm find . --deep --deep-workers=8 --model=gemini-3.8-flash-cyber
Pontos fortes
Uma verificação avançada oferece alto recall e descoberta abrangente de vulnerabilidades em grandes bases de código empresariais, superando verificações de sessão única e usando a verificação automatizada para manter alta precisão. Ela oferece suporte a vários idiomas e é independente de plataforma, funcionando em todos os idiomas com suporte do Gemini sem exigir compiladores, configurações de build ou arquivos de gramática específicos do idioma. Ela também otimiza o uso de recursos, concentrando a análise no código de produção e minimizando o consumo de computação e tokens em arquivos não de produção.
Vantagens, desvantagens e limitações
Não use uma verificação avançada como uma verificação síncrona que bloqueia solicitações de pull. As verificações avançadas realizam uma análise completa em todo o repositório. Como resultado, elas exigem um tempo de execução mais longo e um gasto de token maior do que as verificações padrão ou de diferenças.
Quando usar
Use uma verificação avançada nos seguintes cenários:
- Execute auditorias de segurança programadas em uma programação noturna ou semanal em todos os repositórios de produção.
- Realize uma auditoria de segurança completa de pré-lançamento antes de lançamentos de versões principais ou implantações de produção.
- Gere evidências de auditoria para revisões de conformidade e certificação SOC 2, ISO 27001, FedRAMP ou PCI-DSS.
- Estabeleça um valor de referência de segurança inicial ao integrar uma nova base de código ao CodeMender.
Escolher um modo de localização
Use a tabela de referência a seguir para selecionar o modo de verificação certo para seu fluxo de trabalho:
| Fluxo de trabalho ou ambiente | Caso de uso e meta | Modo recomendado | Exemplo de comando |
|---|---|---|---|
| Terminal local | Descoberta rápida ou verificação de confiança em um módulo específico | Verificação padrão | cm find ./src |
| Terminal local | Verificação de pré-commit em mudanças preparadas antes do envio | Verificação de diferenças | cm find . --diff --staged |
| Pipeline de CI/CD | Gating automatizado de solicitação de envio em código e chamadores alterados | Verificação de diferenças |
cm find . --diff=origin/main --fail-on=CRITICAL,HIGH
|
| Pipeline ou auditoria programada | Auditorias noturnas, gates de pré-lançamento, conformidade com SOC 2 | Verificação avançada | cm find . --deep --deep-workers=8 |
Referência de flag de comando por modo
As tabelas a seguir descrevem as flags de linha de comando com suporte para cada modo de verificação.
Flags comuns (todos os modos)
As flags a seguir se aplicam a todos os modos de verificação cm find:
| Sinalização | padrão | Descrição |
|---|---|---|
-c, --context TEXT |
"" |
Contexto adicional para orientar o agente de verificação, como observações de arquitetura. |
--model MODEL_NAME |
gemini-3.8-flash |
Modelo do Gemini a ser usado (gemini-3.8-flash,
gemini-3.8-flash-cyber).
|
-y, --yes |
false |
Ignorar todos os prompts de confirmação interativos. |
--unrestricted |
false |
Desativar a sandbox do sistema de arquivos. |
Flags de verificação de diferenças
As flags a seguir configuram verificações cm find --diff:
| Sinalização | padrão | Descrição |
|---|---|---|
--diff[=REF] |
Desativado |
Ativar o modo de diferenças em relação à referência de destino, como
origin/main ou HEAD~1. Sem
REF, compara com HEAD. Não pode ser usado com --deep.
|
--staged |
Desativado |
Limitar a diferença ao índice preparado (git diff --cached). Requer --diff.
|
--diff-depth DEPTH |
1 |
Profundidade de travessia para análise de impacto (1 a 3, padrão: 1-hop). |
--diff-workers COUNT |
4 |
Número de workers simultâneos para jobs de auditoria de solicitação de envio (1 a 16). |
--diff-max-neighbors COUNT |
10 |
Número máximo de arquivos de chamador ou chamado dependentes a serem inspecionados. |
--fail-on SEVERITIES |
CRITICAL,HIGH |
Gravidades separadas por vírgulas que fazem com que cm find seja encerrado com
o código 1.
|
--fail-on-truncation |
Desativado | Sair com o código 1 se a descoberta de vizinhos exceder o limite. |
--format FORMAT |
table |
Formato da saída: table, json ou
sarif.
|
--output FILE |
Saída padrão | Gravar o relatório em um arquivo em vez da saída padrão. |
Flags de verificação avançada
As flags a seguir configuram verificações cm find --deep:
| Sinalização | padrão | Descrição |
|---|---|---|
--deep |
false |
Ativar a verificação avançada exaustiva em todo o repositório. Não pode ser usado com
--diff.
|
--deep-workers COUNT |
8 |
Número de workers simultâneos para verificação avançada (1 a 16). |