Ein Beispiel dafür, wie neue Diagnosen in PVS-Studio angezeigt werden

Neue C ++ - Diagnose für PVS-Studio







Benutzer fragen manchmal, wie neue Diagnosen im statischen Analysegerät PVS-Studio angezeigt werden. Wir antworten, dass wir uns von einer Vielzahl von Quellen inspirieren lassen: Bücher, Codierungsstandards, unsere eigenen Fehler, Briefe unserer Benutzer und so weiter. Heute haben wir eine interessante neue Diagnose gestellt und beschlossen, die Geschichte zu erzählen, wie es passiert ist.







Alles begann mit der Überprüfung des COVID-19 CovidSim-Modellprojekts und einem Artikel über eine nicht initialisierte Variable. Das Projekt erwies sich als klein und wurde unter Verwendung des modernen C ++ - Sprachstandards geschrieben. Dies bedeutet, dass es die Basis von Testprojekten für Regressionstests des PVS-Studio-Analysatorkerns perfekt ergänzen kann.







, , , () . , - . , .







, , 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 .







++ :). Twitter. Facebook.







:







  1. , PVS-Studio .
  2. PVS-Studio Java: .
  3. .


, : Andrey Karpov. Example of How New Diagnostics Appear in PVS-Studio.








All Articles