Usando o analisador estático PVS-Studio no desenvolvimento C e C ++ para sistemas embarcados


Este artigo mostrará como iniciar a análise de um projeto incorporado e como trabalhar com o relatório do analisador. O analisador PVS-Studio suporta vários compiladores para sistemas embarcados. A versão atual permite verificar projetos criados com um dos seguintes compiladores em Windows, Linux e macOS:


Instalação


O procedimento de instalação depende do sistema operacional usado em desenvolvimento. No Linux, você pode instalar o analisador a partir do repositório ou do pacote de instalação.

Por exemplo, em um sistema baseado no Debian:

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 

ou

 sudo gdebi pvs-studio-VERSION.deb 

No macOS, você pode usar o Homebrew para instalação e atualização:

 brew install viva64/pvs-studio/pvs-studio brew upgrade pvs-studio 

Outra opção - instalar a partir do pacote dmg ou descompactar manualmente a partir do arquivo morto.

No Windows, você precisa usar o instalador:


Você pode fazer o download dos pacotes de instalação para cada sistema suportado e solicitar uma chave de avaliação, se necessário, na página " Baixar e avaliar o PVS-Studio ".

Depois que a instalação estiver concluída, você precisará inserir a chave de licença. O artigo da documentação " Como inserir a licença do PVS-Studio e qual é o próximo passo " descreve este processo em detalhes em relação a diferentes plataformas.

Verificando seu projeto


A verificação de projetos criados para sistemas embarcados é semelhante à verificação dos desenvolvidos para Windows, Linux ou macOS.

As opções disponíveis no Linux estão descritas no artigo " Introdução ao PVS-Studio Static Analyzer para desenvolvimento de C ++ no Linux ". Lembre-se de que os projetos incorporados são compilados de forma cruzada e seu compilador pode ter um nome não padrão. Devido a isso, pode ser necessário especificá-lo ao iniciar a análise, o que você pode fazer por meio da chave da linha de comandos –compiler ou –c .

 pvs-studio-analyzer analyze -c MyCompiler 

É necessário usá-lo se o analisador não puder detectar o tipo de compilador, ou seja, se ele emitir o erro "Nenhuma unidade de compilação encontrada".

Como a plataforma de destino difere da plataforma de desenvolvimento devido à compilação cruzada, você provavelmente também precisará especificar a plataforma de destino por meio da chave --platform , junto com o tipo de pré-processador ( --preprocessor ).

Plataformas suportadas: win32, x64, linux32, linux64, macos, arm.

Pré-processadores suportados: gcc, clang, keil.

No Linux, a plataforma linux64 e o pré-processador gcc são os padrões.

Se você estiver usando o Windows, poderá verificar seu projeto no modo de monitoramento do compilador. Para fazer isso, use o utilitário " UI de monitoramento do compilador C e C ++ ", que acompanha o analisador. Para iniciar o monitoramento, acesse o menu Ferramentas e escolha Analisar seus arquivos ... Essa caixa de diálogo será aberta:


Clique no botão " Iniciar monitoramento " e comece a criar seu projeto. Quando a compilação terminar, clique no botão " Parar monitoramento " na janela de diálogo localizada no canto inferior direito da tela:


A janela principal do utilitário " UI de Monitoramento do Compilador C e C ++ " permite visualizar os resultados da análise.

Além disso, é possível iniciar a análise na linha de comandos usando o utilitário CLMonitor. Aqui está o comando que iniciará o monitoramento:

 CLMonitor.exe monitor 

Após a construção, inicie-a novamente no modo de análise:

 CLMonitor.exe analyze -l "<path>\out.plog" 

O analisador irá verificar seu projeto e salvar os resultados no arquivo especificado através da tecla -l .

Veja também " Sistema de Monitoramento de Compilador no PVS-Studio ".

Trabalhando com relatórios


Para visualizar o relatório no Linux, você precisa converter o arquivo de log, gerado pelo analisador, em um dos formatos suportados. Use o utilitário plog-converter para fazer isso. Por exemplo, você pode gerar um relatório HTML, que permite visualizar o código-fonte, com este comando:

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

A conversão de relatório é descrita em mais detalhes no artigo " Introdução ao PVS-Studio Static Analyzer para desenvolvimento de C ++ no Linux ".

A versão do Windows também possui um utilitário chamado PlogConverter , que é semelhante ao seu equivalente no Linux:

 PlogConverter.exe <path>\out.plog --renderTypes= FullHtml --analyzer=GA:1,2 

ou

 PlogConverter.exe D:\Projct\out.plog -t FullHtml -a GA:1,2 

Você também pode visualizar relatórios no formato plog com o utilitário " UI de monitoramento do compilador C e C ++ " através do comando de menu Arquivo-> Abrir registro do PVS-Studio ...

Exemplo:


Se necessário, você pode exportar o relatório para um dos formatos suportados pelo menu Arquivo do utilitário.

Padrão de codificação Misra


O PVS-Studio classifica seus avisos de acordo com CWE e SEI CERT , que funciona muito bem para testes de segurança estática ( SAST ) de aplicativos regulares. No entanto, os sistemas embarcados têm requisitos de segurança diferentes, cobertos por um padrão MISRA especialmente desenvolvido. A versão atual do PVS-Studio suporta parcialmente MISRA C e MISRA C ++. Você pode ver a lista regularmente expandida de regras suportadas aqui .

Usar regras MISRA ao verificar projetos não incorporados geralmente é uma má ideia, devido às especificidades do padrão. Na maioria dos casos, se o código não fosse inicialmente orientado para MISRA, a verificação resultaria em muitos falsos positivos e geralmente em avisos de ruído. Portanto, as regras MISRA estão desativadas por padrão.

Para ativar o MISRA no Linux, execute a análise com a tecla -a e passe um parâmetro numérico, de acordo com o modo desejado. Este parâmetro é uma combinação de campos de bits:

 -a [MODE], --analysis-mode [MODE] MODE defines the type of warnings: 1 - 64-bit errors; 2 - reserved; 4 - General Analysis; 8 - Micro-optimizations; 16 - Customers Specific Requests; 32 - MISRA. Modes can be combined by adding the values Default: 4 

Exemplo (com regras GA e MISRA ativadas):

 pvs-studio-analyzer analyze -a 36 -o /path/report.log 

Além disso, você precisa informar ao plog-converter para incluir avisos MISRA no relatório resultante:

 plog-converter -a MISRA:1,2,3 -m misra .... 

No Windows, você pode usar as configurações do utilitário " UI de Monitoramento do Compilador C e C ++ ":


Consulte o artigo " PVS-Studio: Suporte dos padrões de codificação MISRA C e MISRA C ++ " para saber mais sobre o suporte a MISRA.

Conclusão


Neste artigo, discutimos brevemente os recursos do analisador PVS-Studio para verificar projetos direcionados incorporados. Se você precisar de mais informações sobre o uso do analisador, recomendo que você consulte os seguintes artigos:

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


All Articles