SA0065:ポインタの追加がベースサイズと一致しません 追加される値がポインターの基本サイズと一致しないポインターの追加を検出します。基本データ サイズとその倍数のリテラルのみをエラーなく追加できます。 位置揃え: で CODESYS (C および C++ とは対照的に) 整数値を持つポインターを追加する場合、整数値に基本サイズを乗算したものではなく、この整数値のみがバイト数として追加されます。
SA0024: 型なしリテラル/定数 操作の一部である型なしリテラルを識別します 理由: 型指定されていないリテラルは、その使用法に従って自動的に型指定されます。場合によっては、次のような dw := ROL(DWORD#1, i); 、これにより、独自の説明を提供するために型付きリテラルを使用した方がよいという予期せぬ状況が発生する可能性があります。 重要度:低 例 35 . 例 PROGRAM
定数伝播 とともに CODESYS Static Analysis バージョン V5.0.0.0 では、コードの分析は定数伝播に基づいています。定数伝播の結果はさまざまなチェックに使用されます。たとえば、ポインタが 0 に等しくないか、配列インデックスが有効範囲外かどうかをチェックします。 この分析がどのように機能するのか、またその制限は何なのかを知るだけで、静的分析を効果的にサポートできます。
命名規則を定義する 対話中 設定静的分析 タブの下 命名規則 コードで従う命名規則を定義します。スコープと修飾子に応じて、プログラミングブロック、変数、およびデータ型の識別子のプレフィックスを定義します。 次に、静的分析で命名規則への準拠を確認できます。 これへのガイド: 定義された命名規則への準拠を確認してください プレフィックスを定義する 対話中 設定静的分析 タブの下 命名規則 列の入力フィ
SA0102: 外部からのプログラム/FB 変数へのアクセス プログラムまたは機能ブロックのローカル変数への外部アクセスを決定します。 理由: CODESYS プログラムまたは機能ブロックのローカル変数への外部読み取りアクセスを有効にします。これは、データのカプセル化(データの非表示)の原則に違反し、IEC61131-3規格に準拠していません。 重要性:中 例 90 . 例 PROGRAM PLC
SA0107:正式なパラメータがありません 正式なパラメーターが欠落しているかどうかを判別します。 理由: 呼び出しで仮パラメータを指定すると、コードが読みやすくなります。 重要度:低 例 94 . 例 FUNCTION FUNA : BOOL VAR_INPUT bDo : BOOL; bInit : BOOL; bManual : BOOL; END_VAR VAR iInit : INT;
SA0061:ポインタの異常な操作 タイプの変数に対する操作を決定します POINTER TO それはしません = (平等)、 <> (不平等)、 + (追加)または ADR それは。 の CODESYS ポインタ演算は一般的に許可されており、賢明に使用することもできます。したがって、整数値を持つポインターの追加は、ポインターに対する通常の操作として分類されます。これにより、ポインタを使用して可変
SA0064:ポインタの追加 ポインタの追加を決定します。 位置揃え: で CODESYS 、ポインター演算は一般に許可されており、適切に使用することもできます。ただし、これはエラーの原因でもあります。したがって、一般にポインター演算を禁止するプログラミング規則が存在します。このテストでは、そのような要件を確認できます。 重要性:中 例 74 . 例 PROGRAM PLC_PRG VAR iTe
コマンド: IF ステートメントを反転する 関数 : このコマンドは、 IF のセマンティクスを変更せずにステートメントを作成します。 IF 声明。条件は否定されます。の声明は、 THEN そして ELSE 枝が入れ替わる。すべてのコメントは保持されます。 電話 : 下のコンテキストメニュー リファクタリング 指示 要件: カーソルが任意の場所に配置されている 内で の IF 声明。 表 2 .
メトリクス 提供されるメトリクスの詳細な説明 CODESYS Static Analysis ヒント の コードサイズ 、 可変サイズ 、 スタックサイズ 、 そして コール数 メトリクスは、プロジェクトに統合されているライブラリからの POU についてのみレポートされます。 メトリクス: コードサイズ (バイト数) カテゴリ: 有益、効率 ファンクション ブロックがアプリケーション コードに寄与