Análise de código

Análises dinâmicas

O CLion monitora constantemente seu código em busca de possíveis erros. Ao encontrar algo, ele realça a parte suspeita de código no editor. Se você procurar na medianiz do editor no lado direito, verá faixas de erro amarelas e vermelhas que, se clicadas, o direcionarão para os problemas detectados. Outra maneira de navegar de um problema realçado para outro é pressionando F2/Shift+F2. O indicador de status na parte superior da medianiz resume o status do arquivo.

Além de encontrar erros de compilação, o CLion identifica ineficiências de código e até mesmo realiza análises de fluxo de dados no seu código para localizar código inacessível/não utilizado, além de outros problemas e "suspeitas" de código.

Correções rápidas

As inspeções de código dinâmicas do CLion abrangem cerca de 40 possíveis casos de problemas no código C/C++ e alguns também em outras linguagens.

Quando um problema estiver realçado, coloque o sinal de intercalação sobre ele, pressione Alt+Enter e escolha uma das soluções de correção rápida sugeridas. (Como alternativa, entre no menu de contexto clicando na lâmpada ao lado da linha.)

Você também pode escolher por resolver todos os issues semelhantes no seu projeto. Ou, se você não achar essa inspeção útil, pode suprimi-la no escopo desejado.

Inspecione seu código

O CLion fornece descrições detalhadas para todas as inspeções disponíveis. Você também pode gerenciar a gravidade (escolher entre erro de digitação, aviso, erro etc.) ou, em alguns casos, pode até mesmo ajustar os parâmetros de uma inspeção para refletir melhor suas exigências.

É possível executar várias inspeções (ou até mesmo todas elas) nesse modo em lote com Code | Inspect Code.

Se quiser eliminar um problema específico de toda a sua base de código, basta usar o recurso "Run inspection by name" (Ctrl+Alt+Shift+I) e selecionar o escopo desejado. Uma janela separada com resultados de inspeção será aberta, na qual é possível reagrupar problemas e aplicar correções rápidas em lote a todos os problemas sempre que possível.

Clang-Tidy

Clang-Tidy

O CLion acompanha a integração com o Clang-Tidy. As verificações do Clang-Tidy são mostradas da mesma maneira que as próprias inspeções de código incorporadas do CLion, e correções rápidas também estão disponíveis via Alt+Enter.

Acesse Settings/Preferences | Editor | Inspections | C/C++ | General | Clang-Tidy para restringir a lista de verificações habilitadas/desabilitadas no CLion. O formato da linha de comando do Clang-Tidy é usado no campo de texto. A configuração padrão pode ser encontrada aqui. Outra opção é usar arquivos de configuração .clang-tidy em vez das configurações fornecidas pelo IDE.

Habilite as verificações C++ Core Guidelines ou Clang Static Analyzer, experimente as verificações Modernize ou implemente suas próprias verificações e use-as imediatamente no CLion (para verificações personalizadas, altere o binário do Clang-Tidy para o seu próprio em Settings/Preferences | Languages & Frameworks | C/C++).

Clangd checks

Verificações além do Clangd

Existem várias inspeções implementadas além do mecanismo personalizado baseado em Clangd no CLion:

  • A função de membro pode ser estática
  • Defeitos de seleção de argumentos
  • Declaração ou instrução vazia
  • Chamada virtual a partir do construtor ou destruidor
  • Inclusões não utilizadas

A verificação de inclusões não utilizadas (Unused includes) sugere três estratégias de detecção: uma conservadora, uma agressiva e a padrão (Detect not directly used), que é a mais próxima do princípio "Incluir aquilo que você usa".

Saiba mais

DFA

Data Flow Analysis

O DFA (Data Flow Analysis) rastreia o fluxo dos dados no seu código e detecta possíveis problemas com base nessa análise. Além do DFA local (que funciona em uma única função), o CLion inclui o DFA global (que usa uma unidade de conversão inteira de um programa como uma única unidade para análise). A DFA global não só enriquece as verificações já existentes, como também adiciona várias inspeções exclusivas.

MISRA

MISRA

O CLion inclui verificações do MISRA C 2012 e MISRA C++ 2008. A lista completa de verificações com suporte é mantida na nossa página do Confluence e permite que você acompanhe facilmente o progresso.