Familiaridade com o analisador estático PVS-Studio ao desenvolver programas C ++ no Linux

O PVS-Studio suporta análise de projetos em C, C ++, C # e Java. Você pode usar o analisador nos sistemas Windows, Linux e macOS. Esta postagem se concentrará na análise de código escrito em C e C ++ em um ambiente Linux.

Instalação


Existem várias maneiras de instalar o PVS-Studio no Linux, dependendo do tipo de distribuição. A maneira mais conveniente e preferida é usar o repositório: isso permite atualizar automaticamente o analisador quando novas versões são lançadas. A segunda opção é usar o pacote de instalação, que pode ser baixado aqui .

Os comandos que você deve concluir para instalar dependem da distribuição do Linux que você está usando. Por exemplo, para sistemas baseados no Debian, a instalação a partir do repositório é semelhante a esta:

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 de instalação, 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 " da documentação. Você também pode encontrar informações sobre sistemas não baseados no Debian lá.

Após a instalação, você precisa inserir os dados da licença. Para fazer isso, use o comando

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

Onde NAME e KEY são o nome para o qual a licença está registrada e a chave de licença. O parâmetro –o opcional permite especificar o caminho pelo qual o arquivo de licença será gerado. Por padrão, ele é armazenado no diretório ~ / .config / PVS-Studio / .

Você pode obter a chave de avaliação na página " Baixe e experimente o PVS-Studio ".

Verificação do 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. Iniciando durante o processo de montagem diretamente do sistema de montagem.

Vamos considerar o primeiro método primeiro. Para iniciar o monitoramento no Linux, você precisará do utilitário strace . O analisador o utiliza para coletar informações sobre quais processos foram iniciados durante a montagem do projeto.

O lançamento é realizado pelo seguinte comando:

 pvs-studio-analyzer trace -- make 

Este exemplo usa build com make, mas qualquer outro comando usado para iniciar a construção pode estar no lugar de make. Os parâmetros da linha de comando podem ser passados ​​para ele da maneira usual.

Após a montagem, o strace criará um arquivo que o analisador usará para verificar o código-fonte. Você pode executar a análise com o comando

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

A saída será um arquivo codificado com os resultados, que você pode converter para um dos formatos suportados. Consideraremos trabalhar com relatórios na próxima seção.

Além de usar o strace, a análise também pode ser executada com base no arquivo compile_commands.json (JSON Compilation Database). Muitos sistemas de compilação permitem exportar comandos de chamada do compilador ou você pode usar o utilitário BEAR para isso. Nesse caso, você pode executar a análise com o comando

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

Deve-se notar que o analisador reconhece o compilador usado pelo nome do seu arquivo executável. Se durante a verificação você receber o erro "Nenhuma unidade de compilação encontrada", tente especificar o nome do seu compilador através do parâmetro –compiler ou –c :
 pvs-studio-analyzer analyze -c MyCompiler 

Isso pode ser necessário ao compilar e usar compiladores com nomes de arquivos executáveis ​​não padrão.

Além das ativações no modo de monitoramento, você pode integrar o analisador ao seu sistema de montagem ou IDE. Você pode encontrar exemplos de projetos com integração já configurada no GitHub no repositório PVS_Studio:


Para obter instruções mais detalhadas sobre a execução de análises no Linux, consulte a documentação .

Trabalhar com relatórios


Após verificar o projeto, o analisador cria um relatório codificado. Para convertê-lo em um dos formatos suportados, use o utilitário plog-converter , instalado junto com o PVS-Studio.

O utilitário suporta os seguintes formatos:

  • xml - um formato conveniente para processamento adicional dos resultados da análise, suportado pelo plugin do SonarQube;
  • csv é um formato de texto para apresentar dados tabulares;
  • errorfile - formato de saída para gcc e clang;
  • tasklist - 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 html com classificação dos resultados da análise por vários parâmetros e navegação pelo código fonte.

O formato fullhtml é o mais conveniente para exibir o relatório, pois permite acessar a linha do código-fonte na qual o aviso ocorreu. O comando a seguir permite converter o relatório do analisador para este formato:

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

Após a execução do comando, o diretório / path / report_dir será criado, no qual os arquivos do relatório estarão.

Observe a opção -a . Permite especificar quais avisos devem ser incluídos no relatório. Isso é conveniente se você precisar filtrar a saída do analisador. A equipe acima criará um relatório que conterá apenas avisos do grupo de análise geral do primeiro e do segundo níveis de confiança ( Alto e Médio ).

Exemplo de relatório:

Quadro 9


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

Quadro 8


Clicar no número de diagnóstico na coluna Código abrirá a documentação que descreve esse diagnóstico.

Supressão de resposta do analisador


Ao verificar o código com um analisador estático, são possíveis falsos positivos ou simplesmente mensagens indesejadas (ruído). O PVS-Studio fornece mecanismos para suprimir esses avisos. Para suprimir alarmes individualmente, você pode usar um dos métodos descritos na seção de documentação " Suprimindo alertas falsos ".

Além disso, ao analisar o código antigo, pode ser necessário suprimir massivamente todas as mensagens. Como regra, isso é necessário para verificar apenas o código adicionado à base de código existente. Para isso, é utilizado o parâmetro suprimir do utilitário pvs-studio-analyzer .

Você pode suprimir as mensagens em um relatório em massa usando o seguinte comando:

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

As informações sobre mensagens suprimidas são armazenadas no arquivo suppress_base.json , que fica ao lado do projeto. Essas mensagens são excluídas do relatório durante as inspeções subsequentes.

Esse mecanismo é descrito em mais detalhes na documentação aqui .

Conclusão


Esta foi uma breve introdução ao uso do analisador PVS-Studio para Linux. Espero que tenha sido útil e tenha respondido às perguntas mais frequentes. Você pode ler mais sobre o tópico do artigo na documentação aqui .



Se você deseja compartilhar este artigo com um público que fala inglês, use o link para a tradução: Yuri Minaev. Introdução ao Analisador Estático PVS-Studio para Desenvolvimento C ++ no Linux .

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


All Articles