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

Neste artigo, você aprenderá como executar uma verificação de projeto incorporado e como trabalhar com o relatório do analisador. O analisador PVS-Studio suporta vários compiladores para sistemas embarcados. Na versão atual, é possível verificar projetos ao criar com um dos seguintes compiladores para Windows, Linux e macOS:


Instalação


O procedimento de instalação depende do sistema operacional no qual você está desenvolvendo. No Linux, você pode instalar o analisador a partir do repositório ou do pacote de instalação.

Exemplo para sistemas baseados em 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 

Para o macOS, a instalação e atualização podem ser feitas no Homebrew :

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

A segunda opção é instalar o pacote do dmg ou descompactá-lo manualmente do arquivo.

No Windows, a instalação é realizada usando o instalador:


Você pode fazer o download dos pacotes de instalação para todos os sistemas suportados e, se necessário, solicitar uma chave de avaliação na página " Baixe e experimente o PVS-Studio ".

Após a instalação, digite a chave de licença. Você pode encontrar informações sobre como fazer isso em diferentes plataformas, na página de documentação " Como inserir a licença PVS-Studio e o que fazer em seguida ".

Verificação do Projeto


A verificação do projeto para sistemas embarcados pode ser realizada da mesma maneira que no caso de desenvolvimento no Windows, Linux e macOS.

As opções de inicialização para Linux são discutidas no artigo " Apresentando o analisador estático PVS-Studio ao desenvolver programas C ++ no ambiente Linux ". Lembre-se de que, como a compilação cruzada é usada para compilar sob incorporado, e o nome do compilador pode não ser padrão, pode ser necessário especificá-lo ao analisar o projeto. Para fazer isso, use a opção de linha de comando –compiler ou –c :

 pvs-studio-analyzer analyze -c MyCompiler 

Use esse parâmetro quando o analisador não puder determinar o tipo de compilador usado, ou seja, quando o erro "Nenhuma unidade de compilação encontrada" for emitido.

Ao fazer a compilação cruzada, como a plataforma de destino é diferente daquela sob a qual o assembly ocorre, junto com o compilador, pode ser necessário especificar a plataforma de destino usando o parâmetro --platform , bem como o tipo de pré-processador ( --preprocessor ).

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

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

Por padrão, o Linux seleciona a plataforma linux64 e o pré-processador gcc .

Se você usa o Windows, pode verificar o projeto no modo de monitoramento de compilação. Para fazer isso, execute o utilitário " UI de monitoramento do compilador C e C ++ ", instalado com o analisador. Para iniciar o monitoramento, vá para o menu Ferramentas e clique em Analisar seus arquivos ... Uma caixa de diálogo é aberta:


Clique no botão " Iniciar monitoramento " e execute a compilação. Após a conclusão, clique no botão " Parar monitoramento " na caixa de diálogo no canto inferior direito da tela:


O resultado do teste pode ser exibido na janela principal do utilitário " UI do C e C ++ Compiler Monitoring UI ".

Você também pode executar a análise na linha de comando. Para isso, o utilitário CLMonitor é usado. Você pode iniciar o monitoramento com o comando:

 CLMonitor.exe monitor 

Após a montagem ser concluída, você deve executar o utilitário no modo de análise:

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

O analisador verificará o projeto e salvará os resultados no arquivo especificado no parâmetro -l .

Veja também a seção de documentação " Sistema de Monitoramento de Compilação no PVS-Studio ".

Trabalhar com relatórios


Para visualizar o relatório no Linux, você precisa converter o arquivo obtido como resultado do analisador em um dos formatos suportados usando o utilitário plog-converter . Você pode obter o relatório no formato HTML com a capacidade de visualizar o código-fonte com o seguinte comando:

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

A conversão de relatórios é descrita em mais detalhes no artigo " Familiaridade com o analisador estático PVS-Studio ao desenvolver programas C ++ no Linux ".

No Windows, também existe um utilitário PlogConverter que permite converter arquivos de relatório de maneira semelhante:

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

ou

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

Além disso, um relatório no formato plog pode ser visualizado usando o utilitário " UI de monitoramento do compilador C e C ++ " através do menu Arquivo-> Abrir registro do PVS-Studio ...

Um exemplo:


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

Padrão MISRA


O PVS-Studio classifica os alertas de acordo com o CWE e o SEI CERT , adequados para testes de segurança estática ( SAST ) de aplicativos comuns. No entanto, os sistemas embarcados possuem requisitos de segurança ligeiramente diferentes, cobertos pelo padrão MISRA especialmente desenvolvido. A versão atual do analisador suporta parte das regras do MISRA C e MISRA C ++, a lista de diagnósticos pode ser visualizada aqui e está em constante expansão.

O uso de regras MISRA ao verificar projetos que não se destinam a incorporação é muitas vezes injustificado. Isso ocorre devido às especificidades do padrão. Na maioria dos casos, se o código não foi originalmente escrito com a expectativa de conformidade com MISRA, haverá muitos avisos falsos e inúteis durante a verificação. Portanto, as regras MISRA são desativadas por padrão.

Para ativar a análise MISRA no Linux, é necessário executar a análise com a opção -a e passar um parâmetro numérico que define o modo necessário. 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 de lançamento (diagnóstico GA e MISRA incluído):

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

Ao usar o conversor de plog , você também deve indicar que o diagnóstico MISRA deve ser incluído no relatório:

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

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


Mais detalhes sobre o suporte ao MISRA estão descritos no artigo " PVS-Studio: Suporte para os padrões de codificação MISRA C e MISRA C ++ ".

Conclusão


Neste artigo, analisamos os recursos do analisador PVS-Studio para testar projetos focados em sistemas embarcados. Se você precisar de informações mais detalhadas sobre como usar o analisador, recomendo a leitura dos seguintes artigos:




Se você deseja compartilhar este artigo com um público que fala inglês, use o link para a tradução: Yuri Minaev. Usando o analisador estático PVS-Studio no desenvolvimento C e C ++ para sistemas embarcados

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


All Articles