Skip to main content

コードを静的に分析する

コード生成中にソースコードを静的に分析(「linten」)することもできます。これは、ソースコードが「lint」分析ツールの方針に沿って設定したコーディングガイドラインに従っているかどうかを判断します。

  • 対話中 プロジェクト設定 カテゴリの下で 静的分析ライト チェックされるルールを有効にします。その後、チェック自体は、コード生成ごとに自動的に実行されます。たとえば、コマンドを実行した場合などです。 ビルド→コードの生成 選択する。ルールからの逸脱が検出された場合、これらはカテゴリのエラーメッセージとして分類されます 翻訳すること メッセージウィンドウに表示されます。報告されたエラーにはプレフィックスが付いています: SA<Zahl>

重要

静的コード分析用 静的分析ライト プロジェクトのアプリケーションコードのみがチェックされます。図書館は試験から除外されます。

ビュー内のGVLの変数 POU 必ずしもチェックされない:複数のアプリケーションを含むプロジェクトがある場合、現在アクティブなアプリケーションの下にあるオブジェクトのみがチェックされます。アプリケーションが1つしかない場合は、一般的なPOUプール内のオブジェクトもチェックされます。

ヒント

静的分析ライト 標準の開発システムでは、ルールの削減されたセットにのみ含まれています。アドオンをインストールすると、拡張された一連のルール、追加の命名規則、およびメトリックが利用可能になります CODESYS Static Analysis インストールします。

プラグマを使用した実装のコード行を静的分析から除外します

プラグマの助けを借りてできます {analysis ...} 指定されたルールがチェックされないようにコードをマークします。したがって、このようにマークされたコード行は静的に分析されません。テスト中、マークされたコードは無視されます。

構文:

{analysis <Vorzeichen><Regelnummer>|,<weitere Kombinationen von Vorzeichen und Regelnummern, kommasepariert>}

-<Regelnummer>:ルールSA <ルール番号>のチェックをオフにします。

+<Regelnummer>:ルールSA <ルール番号>のチェックを有効化します。

実装コードを除外する

要件:ダイアログがあります プロジェクト設定 ルールが有効になっています。

  1. プラグマを追加する {analysis -<number>} 初めてチェックしたくないコードを含むコード行の上。たとえば、ルールSA0024の場合

    コード行は、ルール24に対してチェックされないコードスニペットの最初の行です。

  2. プラグマを追加する {analysis +<number>} 初めてチェックされないコードを含むコード行の下。

    例:ルールSA0024の場合

    上記のコード行は、ルール24に対してチェックされないコードスニペットの最後の行です。

22. 例:型指定されていないリテラルを無視する
{analysis -24}
nTest := 99;
iVar := INT#2;
{analysis +24}

ルール SA0024:型指定されていないリテラル 2行は無効になっています。コードは次のように修正されていませんが、エラーはスローされません。 nTest := DINT#99;



23. 例:複数のルールを無視する
{analysis -10, -24, -18}
...
{analysis +10, +24, +18}

SA0010:コンポーネントが1つしかないアレイ

SA0018:異常なビットアクセス

SA0024:型指定されていないリテラル



ヒント

しかし、あなたは支配することができます SA0004出力への複数の書き込みアクセス プラグマを介して無効にしないでください。

プラグマを使用した静的分析からプログラミングオブジェクトを除外する

構文:

{attribute 'analysis' := '-<rule number>[,<other negative rule numbers, comma-separated>]'}

プログラミングオブジェクトの宣言部分に属性プラグマを含めると、指定されたルールはプログラミングオブジェクト全体から除外されます。複数のルールを除外する場合は、ルールをマイナス記号と数字の付いたコンマで区切る必要があります。電源投入のプラグマステートメントは必要ありません。

24.
{attribute 'analysis' := '-33, -31'}
TYPE LocalData :
STRUCT
        iLocal : INT;
        uiLocal : UINT;
        udiLocal : UDINT;
END_STRUCT
END_TYPE

ルールSA0033およびSA0031が構造で使用されます LocalData 無視されます。

{attribute 'analysis' := '-100'}
big: ARRAY[1..10000] OF DWORD;

ルールSA0100がアレイに適用されます big 無視されます。