PVS-Studio 7.00

PVS-Studio em C # \ Java \ C ++ Hoje é um dia importante - após 28 lançamentos da sexta versão, apresentamos o PVS-Studio 7.00, no qual a principal inovação é o suporte à linguagem Java. No entanto, durante 2018, adquirimos muitas outras mudanças importantes relacionadas a C ++, C #, infraestrutura e suporte a padrões de codificação. Portanto, chamamos a sua atenção para uma observação que resume as principais mudanças que ocorreram no PVS-Studio pela última vez.

O PVS-Studio é uma ferramenta projetada para detectar erros e possíveis vulnerabilidades no código fonte dos programas, escritos em C, C ++, C # e Java. Funciona no ambiente Windows, Linux e macOS.

Uma extensa coleção de erros encontrados no código durante as verificações de vários projetos de código aberto demonstra claramente as habilidades do analisador.

Começaremos com uma alteração devido à qual decidimos alterar o número da versão de 6.x para 7.x. É o suporte do analisador da linguagem Java, que exigiu muito tempo de preparação .

Java


O mais importante no analisador Java é que ele apareceu :). Gostaríamos de convidar desenvolvedores Java para baixar a ferramenta e verificar projetos nos quais você está trabalhando atualmente.

Disponibilizamos as formas mais populares de integração do analisador no sistema de compilação para os usuários:

  • Plugin para Maven.
  • Plugin para Gradle.
  • Plugin para IntelliJ IDEA.

No caso de usar sistemas de construção auto-escritos, temos a capacidade de executar o analisador diretamente, listando as fontes e o caminho de classe .

Você pode encontrar informações detalhadas sobre todas as maneiras de executar o analisador na página de documentação " Como executar o PVS-Studio Java ".

Não conseguimos evitar a plataforma SonarQube do controle de qualidade de código, que é tão popular entre os desenvolvedores Java, por isso adicionamos suporte à linguagem Java em nosso plug-in para o SonarQube .

C, C ++


Em 2018, nossa equipe estava trabalhando ativamente no desenvolvimento do analisador C ++. Muitos novos diagnósticos apareceram junto com os algoritmos , que permitem coletar e processar os dados extraídos da árvore de sintaxe.

CWE, CERT

Os avisos do analisador C ++ (e C #) foram classificados de acordo com a Common Weakness Enumeration ( CWE ). O CWE é um sistema de classificação de vulnerabilidades potenciais e confirmadas. É suportado pela comunidade com o objetivo de identificar problemas de software e criar ferramentas automatizadas que podem ser usadas para identificar e resolver esses problemas.

Além disso, as mensagens foram classificadas de acordo com o Padrão de codificação CERT C e o Padrão de codificação CERT C ++. O SEI CERT Coding Standards é um conjunto de padrões para a criação de software em C, C ++, Java e Perl, desenvolvido pelo CERT (CERT Coordination Center, CERT / CC) para melhorar a confiabilidade e a segurança do software.

A classificação dos diagnósticos C e C ++ de acordo com esses avisos permite usar o PVS-Studio como uma solução SAST .

Misra

Em 2018, um analisador de código estático do PVS-Studio conseguiu classificar seus avisos de acordo com os padrões MISRA C e MISRA C ++. Devido ao suporte a esses padrões, tornou-se possível usar efetivamente o analisador para aumentar o nível de segurança, portabilidade e confiabilidade dos programas para sistemas embarcados.

Leia mais: " PVS-Studio: Suporte aos padrões de codificação MISRA C e MISRA C ++ ."

O suporte ao MISRA tornou-se relevante em relação ao desenvolvimento de vários sistemas embarcados, os quais serão discutidos na próxima seção deste artigo.

Desenvolvimento incorporado

Em 2018, os seguintes compiladores incorporados foram suportados no PVS-Studio:

  • Windows IAR Embedded Workbench, Compilador C / C ++ para ARM C, C ++
  • Windows / Linux Keil µVision, DS-MDK, Compilador ARM 5/6 C, C ++
  • Windows / Linux Texas Instruments Code Composer Studio, Ferramentas de geração de código ARM C, C ++
  • Windows / Linux / macOS. GNU Arm Embedded Toolchain, compilador Arm Embedded GCC, C, C ++

Duas notas sobre o tópico de suporte a sistemas embarcados:

  1. O Static Code Analyzer PVS-Studio 6.22 agora suporta compiladores ARM (Keil, IAR) .
  2. O PVS-Studio agora oferece suporte à cadeia de ferramentas incorporada GNU Arm .

Estendendo anotações personalizadas

Às vezes, implementações personalizadas de várias funções do sistema, como, por exemplo, memcpy , malloc e assim por diante, são usadas em projetos. O analisador pode detectar erros no código que usa funções padrão muito bem, mas em um código personalizado, era impossível aplicar esses algoritmos até recentemente. Agora, usando a anotação V_FUNC_ALIAS, é possível inserir os nomes de suas funções em conformidade com as do sistema.

Formato do comentário:

//V_FUNC_ALIAS, implementation:sysf, function:f, namespace:ns, class:c 

  • Chave de implementação - especifica o nome da função padrão para determinar o alias.
  • Tecla de função - especifica o nome do alias. A assinatura da função, cujo nome é especificado nesta chave, deve corresponder à assinatura da função, especificada na chave de implementação.
  • Chave da classe é o nome da classe. Pode estar faltando.
  • Chave do espaço para nome é o nome do espaço para nome. Pode estar faltando.

Vejamos um exemplo:

 //V_FUNC_ALIAS, implementation:memcpy, function:MyMemCpy 

Agora, o analisador manipulará chamadas da função MyMemCpy da mesma maneira que chamadas de memcpy . Por exemplo, para esse código, um aviso V512 será emitido:

 int buf[] = { 1, 2, 3, 4 }; int out[2]; MyMemCpy (out, buf, 4 * sizeof(int)); // Warning! 

C #


Este ano não houve alterações significativas no analisador C #. Houve algumas melhorias nos diagnósticos e correções de erros. Os avisos do analisador C #, bem como os do analisador C ++, foram classificados de acordo com a Common Weakness Enumeration ( CWE ). O mapeamento de diagnósticos C # com os identificadores CWE é fornecido aqui (consulte diagnósticos com os números 3xxx).

Planejamos retornar ao desenvolvimento mais ativo do analisador C # em 2019. Também planejamos desenvolver novos diagnósticos e melhorar o mecanismo de Análise de fluxo de dados.

Conversores de relatórios


Os utilitários PlogConverter.exe e plog-converter estão incluídos nas distribuições do PVS-Studio para Windows e Linux / macOS, respectivamente. Além disso, o código fonte desses utilitários está disponível no GitHub .

Com o advento do PVS-Studio for Java, redesenhamos o código destacado para C, C ++, C # e adicionamos Java no formato FullHtml ( para um navegador da web ).

Além disso, a coluna MISRA foi adicionada para o relatório neste formato.

Conversores de relatórios


Assim como o CWE ID, a coluna MISRA é opcional e é ativada pelos revisores de segurança de código ao investigar os resultados da análise.

SonarQube Plugins


1. Atualização completa

Reescrevemos nossos plugins usando a nova API. Isso nos permitiu adicionar novos recursos e fornecer compatibilidade com o SonarQube 7 x. A versão mínima suportada é agora o SonarQube 6.7 LTS .

2. PVS-Studio para Java

A nova versão inclui o suporte de diagnóstico na linguagem Java. Agora você pode adicionar o PVS-Studio a outras ferramentas de controle de qualidade do seu projeto Java.

3. Padrão MISRA

Recentemente, anunciamos o suporte aos padrões MISRA C e MISRA C ++. Novos plugins também incluem seu suporte. Por exemplo, o seguinte parâmetro foi adicionado (além do CWE):

 sonar.pvs-studio.misra=active 

que inclui adicionar o identificador MISRA aos avisos do analisador:

PVS-Studio, MISRA


Independentemente desse parâmetro, a pesquisa pelas tags misra e pvs-studio # misra estará disponível nos resultados da análise. As informações sobre o número de avisos MISRA encontrados também foram incluídas nas métricas, que serão discutidas a seguir.

4. Novas métricas

No menu Projetos -> Seu projeto -> Medidas, diferentes métricas de código estão disponíveis, entre as quais agora existem várias informações do PVS-Studio:

Sonarquube


Usando cada uma das métricas, você pode criar gráficos e monitorar a dinâmica de ocorrência de vários grupos de avisos.

4. Transições multilinhas

Alguns diagnósticos do analisador emitem avisos para várias linhas de código. Às vezes eles estão muito distantes. Na nova versão, adicionamos transições multilinhas:

Sonarquube


O SonarQube também suporta transições entre arquivos diferentes. Mais tarde, adicionaremos essas transições para diagnóstico, nas quais há uma análise intermodular.

6. Documentação

A documentação sofreu grandes mudanças. O PVS-Studio é um produto multiplataforma e multilíngue, portanto, todos os processos foram focados em escrever instruções mais comuns e fáceis de entender para trabalhar em diferentes sistemas.

SAST


Até recentemente, em nossos artigos, posicionamos o PVS-Studio como uma ferramenta para detectar erros no código. Embora quase nunca tenhamos considerado o PVS-Studio em um contexto de segurança. Este ano, corrigimos essa situação e consideramos a ferramenta em termos de teste de aplicativos de segurança e práticas do DevSecOps.

O PVS-Studio é uma ferramenta estática de teste de segurança de aplicativos (SAST). Em outras palavras, o analisador PVS-Studio detecta não apenas erros de digitação, código morto e outros erros, mas também possíveis vulnerabilidades.

Para conveniência dos especialistas que usarão o PVS-Studio como ferramenta SAST, o analisador pode gerar avisos nos seguintes formatos: Enumeração de fraqueza comum , padrões de codificação SEI CERT . Mapeando tabelas de diagnóstico do PVS-Studio para diferentes padrões:

  1. Mapeamento CWE
  2. Mapeamento de certificação SEI

Este tópico foi descrito em mais detalhes no artigo " PVS-Studio as SAST solution ".

Sugerimos também a visualização destas publicações:

  1. Como o PVS-Studio pode ajudar na detecção de vulnerabilidades?
  2. Dê um tiro no pé ao manusear dados de entrada .
  3. Distribuindo licenças do PVS-Studio Analyzer para especialistas em segurança .

PVS-Studio Free


Na véspera do novo ano de 2019, uma equipe do PVS-Studio decidiu fazer um belo presente para todos os colaboradores de projetos de código aberto hospedados no GitHub ou Bitbucket. Eles recebem uso gratuito do analisador estático PVS-Studio para o desenvolvimento de projetos de código aberto.

Detalhes: " PVS-Studio gratuito para quem desenvolve projetos de código aberto ".

macOS


Em 2018, o PVS-Studio começou a trabalhar no macOS. Nossa equipe decidiu executar uma verificação do Kernel XNU para coincidir com este evento: "O PVS-Studio agora está disponível no macOS: 64 pontos fracos no Kernel XNU da Apple ".

XNU é um núcleo de sistemas operacionais de computador desenvolvido pela Apple e usado em sistemas operacionais OS X (macOS, iOS, tvOS, watchOS).

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


All Articles