Introdução ao Analisador Estático PVS-Studio para Desenvolvimento C ++ no Linux

O PVS-Studio suporta a análise de projetos desenvolvidos em C, C ++, C # e Java. Você pode usar o analisador no Windows, Linux e macOS. Este pequeno artigo mostrará o básico da análise de códigos C e C ++ no ambiente Linux.

Instalação


Existem diferentes maneiras de instalar o PVS-Studio no Linux, dependendo do seu tipo de distribuição. O método mais conveniente e preferido é usar o repositório, pois ele permite a atualização automática do analisador ao liberar novas versões. Outra opção é usar o pacote de instalação, que você pode obter aqui .

Os comandos de instalação diferem dependendo da distribuição do Linux que você está usando. Por exemplo, é assim que a instalação do repositório em sistemas baseados em Debian se parece:

wget -q -O - https://files.viva64.com/etc/pubkey.txt | sudo apt-key add - sudo wget -O /etc/apt/sources.list.d/viva64.list \ https://files.viva64.com/etc/viva64.list sudo apt update sudo apt install pvs-studio 

Para instalar o PVS-Studio a partir do pacote para download, você pode usar o utilitário gdebi :

 sudo gdebi pvs-studio-VERSION.deb 

O processo de instalação é descrito em mais detalhes na seção " Instalando e atualizando o PVS-Studio no Linux ". Você também pode encontrar informações sobre sistemas não-Debian lá.

Depois que o PVS-Studio estiver instalado, você precisará inserir os dados da licença. Aqui está o comando para isso:

 pvs-studio-analyzer credentials NAME KEY [-o LIC-FILE] 

NAME e KEY são o nome de usuário registrado e a chave de licença, respectivamente. O parâmetro opcional –o permite especificar o local em que um arquivo de licença será gerado. Por padrão, ele será armazenado no diretório ~ / .config / PVS-Studio / .

Se você precisar de uma chave de avaliação, poderá obtê-la na página " Baixar e avaliar o PVS-Studio ".

Verificando seu projeto


Depois de instalar o analisador, você pode começar a verificar os projetos. Existem duas maneiras principais de fazer isso:

  1. Monitoramento de compilação.
  2. Executando diretamente dos sistemas de construção.

Vamos falar sobre o primeiro caminho. Para iniciar o monitoramento no Linux, você precisa do utilitário strace . O PVS-Studio o utiliza para coletar uma lista e parâmetros de processos, que foram lançados durante a construção.

Use o comando abaixo para iniciar a compilação:

 pvs-studio-analyzer trace -- make 

Aqui, make é usado, mas qualquer outro comando que você esteja executando para criar seu projeto pode estar no seu lugar. Se necessário, você pode passar parâmetros da linha de comando para ele da maneira usual.

Após a compilação, o strace criará um arquivo que o analisador utilizará para verificar o código-fonte. Para iniciar a análise, use o comando abaixo.

 pvs-studio-analyzer analyze -o /path/to/project.log 

Como resultado, um arquivo de log codificado será gerado, que você poderá converter em um dos formatos suportados. Falaremos sobre trabalhar com relatórios mais tarde.

Além do strace , você pode basear a análise no arquivo compile_commands.json (JSON Compilation Database). Muitos sistemas de construção possuem meios internos de exportar comandos de compilação, ou você pode usar o utilitário BEAR para fazer isso. Aqui está o comando para iniciar a análise neste caso:

 pvs-studio-analyzer analyze –f /path/to/compile_commands.json 

Observe que o analisador reconhece o compilador, usado no processo de compilação, por seu nome do executável. Se você receber o erro "Nenhuma unidade de compilação encontrada" ao tentar analisar seu projeto, tente especificar explicitamente o nome do seu compilador por meio da chave da linha de comando –compiler ou –c :

 pvs-studio-analyzer analyze -c MyCompiler 

Você pode precisar disso se estiver usando compilação cruzada ou se o seu compilador tiver um nome de executável não padrão.

Além do modo de monitoramento, você pode integrar o analisador diretamente ao seu sistema de construção ou IDE. Nosso repositório oficial do GitHub fornece exemplos de projetos nos quais a integração já foi configurada:


Para saber mais sobre como executar o analisador no Linux, consulte a documentação .

Trabalhando com Relatórios


Após verificar um projeto, o analisador cria um relatório codificado. Para convertê-lo em um dos formatos suportados, é necessário usar o utilitário plog-converter , fornecido com a instalação do PVS-Studio.

Aqui está uma lista de formatos suportados:

  • xml - um formato conveniente para processamento adicional dos resultados da análise, suportado pelo plug - in do SonarQube ;
  • csv - arquivo armazena dados tabulares (números e texto) em texto sem formatação;
  • errorfile é o formato de saída do gcc e do clang;
  • tasklist - um formato de erro que pode ser aberto no QtCreator;
  • html - relatório html com uma breve descrição dos resultados da análise;
  • fullhtml - relatório com a classificação dos resultados da análise de acordo com os diferentes parâmetros e navegação ao longo do código fonte.

O formato fullhtml é o mais conveniente para visualizar o relatório, pois permite pular para a linha de código correspondente ao aviso de seu interesse. O comando a seguir permite converter o relatório para este formato:

 plog-converter -a GA:1,2 -t fullhtml /path/project.log -o /path/report_dir 

Quando você o inicia, um diretório recém-criado chamado / path / report_dir conterá todos os arquivos de relatório.

Preste atenção ao parâmetro -a . Ele permite especificar quais avisos devem aparecer no relatório resultante. É conveniente se você precisar filtrar a saída do analisador. O comando acima criará um relatório, que conterá apenas mensagens gerais de análise do primeiro e do segundo níveis de certeza ( Alto e Médio ).

Um exemplo de relatório:

Quadro 9


Ao clicar na célula Localização de uma mensagem, você pode pular para a linha de código correspondente:

Quadro 8


Ao clicar no código de diagnóstico na coluna Código , você pode abrir a documentação sobre esse diagnóstico.

Suprimindo avisos do analisador


Ao usar qualquer analisador estático para verificar o código-fonte, você pode obter falsos positivos ou simplesmente avisos de ruído indesejáveis. O PVS-Studio possui meios de suprimir essas mensagens. Para direcionar avisos individuais, você pode usar um dos métodos descritos no artigo de documentação " Supressão de alarmes falsos ".

Além disso, ao verificar o código antigo, convém suprimir todos os avisos. Como regra, você pode precisar disso se quiser verificar apenas o novo código adicionado a uma base de código existente. Para fazer isso, use o parâmetro suprimir do utilitário pvs-studio-analyzer .

Você pode suprimir avisos em massa em um relatório usando este comando:

 pvs-studio-analyzer suppress /path/to/report.log 

As informações sobre avisos suprimidos são armazenadas em um arquivo chamado suppress_base.json , localizado ao lado do projeto. Essas mensagens são excluídas dos relatórios de verificações subsequentes.

Este mecanismo é descrito em detalhes aqui .

Conclusão


Esta foi uma breve introdução ao uso do PVS-Studio no Linux. Espero que tenha sido útil e tenha conseguido responder às perguntas mais frequentes. Se você precisar de mais informações sobre o tópico deste artigo, consulte a documentação aqui .

Source: https://habr.com/ru/post/pt462659/


All Articles