
Os usuários às vezes perguntam como os novos diagnósticos aparecem no analisador estático PVS-Studio. Respondemos que nos inspiramos em uma ampla variedade de fontes: livros, padrões de codificação, nossos próprios erros, cartas de nossos usuários e assim por diante. Hoje propusemos um novo diagnóstico interessante e decidimos contar a história de como isso aconteceu.
Tudo começou com a verificação do projeto COVID-19 CovidSim Model e um artigo sobre uma variável não inicializada. O projeto acabou sendo pequeno e escrito usando o padrão moderno da linguagem C ++. Isso significa que ele pode perfeitamente adicionar à base de projetos de teste para teste de regressão do núcleo do analisador PVS-Studio.
, , , () . , - . , .
, , MISRA-. , , , , CovidSim.
MISRA MISRA C++ , . , goto (V2502), , . MISRA " MISRA ".
, CovidSim, MISRA . . , , . , MISRA, - :). , . MISRA , .
. , MISRA , V2507, .
if (radiusSquared > StateT[tn].maxRad2) StateT[tn].maxRad2 = radiusSquared;
{
SusceptibleToLatent(a->pcell);
if (a->listpos < Cells[a->pcell].S)
{
UpdateCell(Cells[a->pcell].susceptible, a->listpos, Cells[a->pcell].S);
a->listpos = Cells[a->pcell].S;
Cells[a->pcell].latent[0] = ai;
}
}
StateT[tn].cumI_keyworker[a->keyworker]++;
V2507 .
, . ! ?
. , ! if.
:
if (radiusSquared > StateT[tn].maxRad2)
StateT[tn].maxRad2 = radiusSquared;
{
SusceptibleToLatent(a->pcell);
....
}
, . Top10 C++ , 2021 .
? , MISRA, ! , . , . , , .
, , MISRA, . – . , , . , .
. .
, if :
- if then-;
- statement if – compound statement, , if.
, .
. , - -, . , , . C# Java PVS-Studio.
, , PVS-Studio. CovidSim, MISRA .
:
- , PVS-Studio .
- PVS-Studio Java: .
- .
, : Andrey Karpov. Example of How New Diagnostics Appear in PVS-Studio.