新しい診断がPVS-Studioにどのように表示されるかの例

PVS-Studioの新しいC ++診断







ユーザーは、PVS-Studio静的アナライザーに新しい診断がどのように表示されるかを尋ねることがあります。私たちは、本、コーディング標準、私たち自身の間違い、ユーザーからの手紙など、さまざまなソースからインスピレーションを得ていると答えています。今日、私たちは興味深い新しい診断を思いつき、それがどのように起こったかの話をすることにしました。







それはすべて、COVID-19CovidSimモデルプロジェクトと初期化されていない変数に関する記事をチェックすることから始まりましたプロジェクトは小規模で、最新のC ++言語標準を使用して記述されていることが判明しました。これは、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 .







++ :). Twitter. Facebook.







:







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


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








All Articles