Pela comunicação em apoio e alguns outros sinais indiretos, percebemos que entre nossos usuários gratuitos havia muitos estudantes. Razão: O analisador PVS-Studio começou a ser utilizado por alguns professores nas disciplinas relacionadas ao desenvolvimento de software. Isso é muito agradável para nós, e decidimos escrever esta pequena nota para atrair a atenção de outros professores. É com satisfação que os alunos são apresentados à metodologia de análise de código estático em geral e à ferramenta PVS-Studio em particular. Nossa equipe tentará contribuir para o desenvolvimento dessa tendência.
O desenvolvimento de software moderno não é possível sem uma abordagem integrada para garantir a qualidade e a confiabilidade do software. A razão é que o tamanho da base de código dos aplicativos modernos está crescendo rapidamente. Vou explicar isso em números. Tomemos, por exemplo, sistemas operacionais:
- MS DOS 1.0: 4.000 linhas de código. Uma pessoa poderia ler o código inteiro, descobrir, encontrar erros.
- Linux kernel 1.0.0: 176.000 linhas de código. A equipe ainda tem a oportunidade de fazer uma revisão detalhada do código, embora isso leve muito tempo e esforço.
- Linux kernel 5.0: mais de 26.000.000 de linhas de código. É impossível realizar o projeto.
Usando o kernel Linux como exemplo, você pode ver que o tamanho da base de código aumentou 150 vezes em 25 anos. Agora é impossível para um programador apenas sentar e revisar o código de todo o aplicativo, entendê-lo, encontrar erros e melhorar as soluções de arquitetura. O dispositivo dos programas modernos simplesmente não cabe na cabeça de uma pessoa, e não há mais especialistas que possam responder a qualquer pergunta sobre o design do projeto.
A incapacidade de realizar o projeto é apenas metade do problema. À medida que o tamanho do projeto aumenta, o mesmo ocorre com a densidade de erros. Enfatizo:
não se trata apenas de um aumento no número de erros, mas de sua densidade ! Em um programa escrito como parte de um trabalho técnico, você pode escrever 1000 linhas de código e não cometer nenhum erro. E não é realista adicionar 1000 linhas de código a um aplicativo grande e evitar alguns erros. Para esclarecimentos, recorremos novamente aos números:
Figura 1. Densidade de erro típica em projetos de vários tamanhos. Dados extraídos do livro de Steve McConnell, Perfect Code.Portanto, é impossível escrever programas confiáveis usando as mesmas abordagens de 20 a 30 anos atrás. É necessário usar um conjunto de metodologias que ajudem a controlar o crescimento da complexidade de um projeto de software e garantam a qualidade necessária do código:
- Padrões de codificação
- Revisões de código
- Testes unitários
- Teste de regressão
- Teste de carga
- Teste manual
- ....
- Análise dinâmica
- Análise estática
As metodologias do topo da lista são bastante familiares aos programadores e há muito tempo são aplicadas com sucesso por quase todas as equipes. Mas as duas últimas metodologias, embora não sejam novas, são muito menos comuns. Portanto, agora, durante a preparação dos alunos, vale a pena prestar atenção extra ao estudo de ferramentas de análise estática e dinâmica.
Não vou falar sobre análise dinâmica agora, embora não seja menos
importante que a estática.
Mas a análise estática é o nosso elemento, e convido os professores a prestarem atenção ao nosso produto de software PVS-Studio.
O PVS-Studio é uma ferramenta para detectar erros e possíveis vulnerabilidades no código fonte de programas escritos em C, C ++, C # e Java. Ele funciona em sistemas de 64 bits no Windows, Linux e macOS e pode analisar o código projetado para plataformas ARM de 32 bits, 64 bits e incorporadas.
O analisador PVS-Studio pode ser considerado como um exemplo de uma ferramenta moderna para análise de código estático. Em primeiro lugar, é bom mostrar os recursos das ferramentas de análise estática na detecção de
erros e defeitos de segurança (
SAST ) usando seu exemplo. Em segundo lugar, você pode demonstrar sua integração no ciclo de desenvolvimento de software para que o controle de código seja contínuo. Usando seu exemplo, você pode mostrar a possibilidade de integração com sistemas como
Jenkins ,
TeamCity ,
Azure DevOps ,
SonarQube ,
Travis CI , etc.
Para começar a usar o PVS-Studio como parte do treinamento, não há necessidade de fazer nada de especial ou coordenar.
Fornecemos várias
opções para o licenciamento gratuito do PVS-Studio, inclusive para projetos de código aberto. Especificamente para fins educacionais, quando o trabalho do aluno não está aberto, a melhor opção é adicionar o seguinte comentário ao código:
// This is a personal academic project. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++, C#, and Java: http://www.viva64.com
Para começar a usar o analisador estático do PVS-Studio gratuitamente, você deve concluir as duas etapas a seguir:
Primeiro passoSe você usar o PVS-Studio como um plug-in para o Visual Studio ou usar o utilitário Independente, digite a seguinte chave de licença:
Name: PVS-Studio Free
Key: FREE-FREE-FREE-FREE
Se você estiver usando o PVS-Studio para Linux, vá diretamente para a segunda etapa; não será necessário um arquivo de licença.
Segundo passoVocê deve inserir duas linhas com um comentário no início de cada arquivo. Faça correções em todos os arquivos compilados do seu projeto. Refere-se a arquivos com as extensões c, cc, cpp, cs, java e assim por diante. Os arquivos h do cabeçalho não precisam ser alterados.
Você pode adicionar comentários manualmente e usar o utilitário auxiliar para isso. Você pode baixar o utilitário (junto com o código-fonte) aqui:
how-to-use-pvs-studio-free .
Tudo isso é descrito em mais detalhes no artigo "
Como usar o PVS-Studio gratuitamente ". Peça aos alunos que se familiarizem com isso. Em particular, deve-se ter em mente que fornecemos suporte para usuários gratuitos por meio do site StackOverflow. Mas você não deve confundir suporte e notificações de erros. Apenas sobre esses momentos e é descrito no artigo.
Obrigado pela atenção. Em caso de dúvida, estamos prontos para fornecer assistência e aconselhamento. Não hesite em
contactar- nos no suporte.
Links adicionais:- Ivan Ponomarev. Relatório na conferência Heisenbug 2019 em Moscou: Análise Contínua de Código Estático .
- Sergey Khrenov, Philip Handelyants. Master class na conferência Saint HighLoad ++ 2019: analisador de código PVS-Studio .
- Andrey Karpov. Opções de licenciamento gratuitas do PVS-Studio .
- PVS-Studio. Documentação

Se você deseja compartilhar este artigo com um público que fala inglês, use o link para a tradução: Andrey Karpov.
Para observação dos professores: use o PVS-Studio para familiarizar os alunos com as ferramentas de análise de código .