As linguagens de programação C e C++ existem diversas ferramentas opcionais que: sabendo usá-las, serão essenciais para escrever um código seguro.
Por isso são linguagens recomendadas para profissionais da área, caso contrário, a pessoa deve procurar linguagens mais fáceis e que gerenciam coisas de forma automática onde muitas vezes o programador(a) nem sabe o que realmente está fazendo. C e C++ é como um painel de controle de um avião, e as vezes as pessoas estão querendo usá-las como um controle de TV.
Uma das formas essenciais de não trocar “gato por lebre” é fazer: ANÁLISE ESTÁTICA.
Análise Estática, em resumo, é encontrar bugs no seu código sem executá-lo. Por isso tem esse nome: estático, se fizermos as análises durante a execução do programa seria uma análise dinâmica.
Geralmente essas análises são feitas por programas adicionais que conseguem enxergar detalhes que nem você e nem seu compilador identifica.
Nesse artigo veremos como utilizar o Cppcheck que é uma das ferramentas mais conhecidas e fáceis de usar para análise estática em códigos escritos em C/C++.
Cppcheck é uma ferramenta de análise de código estático para as linguagens de programação C e C++ . É uma ferramenta versátil que pode verificar códigos não padronizados. Cppcheck é um software livre feito sob a licença GNU General Public License.
Cppcheck oferece suporte a uma ampla variedade de verificações estáticas que podem não ser cobertas pelo próprio compilador. Essas verificações são análises estáticsa que podem ser executadas no nível do código-fonte.
Algumas das verificações suportadas incluem:
O projeto está ativamente em desenvolvimento e é mantido em diferentes sistemas operacionais. Ele encontrou bugs válidos em vários projetos populares como o kernel Linux e o MPlayer.
Você pode instalar utilizando o gerenciador de pacotes do seu sistema operacional, exemplos: winget
, choco
, apt
, pacman
, emerge
e entre outros. Exemplos:
Ou também pode instalar direto do código-fonte disponível no GitHub, assim:
Após instalação confirme se está tudo correto verificando a versão:
Nesse caso, de acordo com a data de publicação desse artigo, sua versão atual é a
2.9
.
Suponhamos que você possua esse código abaixo: main.cpp
:
A verdade é que nem o compilador consegue, mesmo se habilitarmos todas as flags
necessárias para debug, exemplo:
Note que compilará sem avisar nem um warning se quer e ainda executará normalmente.
Agora vamos fazer a ANÁLISE ESTÁTICA com cppcheck
com o seguinte comando:
Veja a imagem abaixo os erros que ele listou:
Que loucura, né?! 😃
Agora vamos corrigir nosso código adicionando explicit ao nosso construtor como ele indicou e também o parâmetro: const String& iname
Ao rodar novamente o mesmo comando notaremos que resolvemos todos os erros, menos o erro:
Esse erro não é bem um erro e sim o caminho da biblioteca padrão que pode ter inúmeros locais dependendo do sistema operacional e até mesmo do compilador. Logo, podemos ignorá-lo.
Mas, com esse exemplo, notamos o quão útil a análise estática com cppcheck
pode lhe ajudar no dia a dia. Lembrando que gastamos mais tempo debugando que escrevendo o código em si, logo, essas análises lhe pouparão muito trabalho e também dores de cabeça.
Existem plugins para o Cppcheck para diversos IDEs e Editores tais como: Vim, Neovim, Emacs, Eclipse, Code:Blocks, Qt Creator, Kdevelop e muitos outros!
Para mais informações acesse o repositório no GitHub e a página no Source Forge.
memtool cpp linguagemc cppdaily