SA0039:nullポインタの逆参照の可能性 nullポインタが逆参照される可能性のあるコードを決定します。 正当性: ポインターは、各逆参照の前にチェックして、ゼロに等しくないことを確認する必要があります。そうしないと、実行時にアクセス違反が発生する可能性があります。 重要性:高い 例 113 . 例 PROGRAM PLC_PRG VAR ptiVar1:POINTER TO INT; pt
SA0046:初期化されていないインターフェイスが使用されている可能性があります 使用前に初期化されていないインターフェースの使用を検出します。 理由: インターフェイス参照は、使用する前に <> 0 であるかどうかをチェックする必要があります。そうしないと、アクセス中にアクセス違反が発生する可能性があります。 重要性:高い 例 114 . 例 //Declaration of INTERFACE
SA0145:初期化されていない参照の使用の可能性 使用前に初期化できず、オペレーターによっても初期化されない可能性のある、使用済みのすべての参照変数を取得します __ISVALIDREF チェックされます。このルールは、POUの実装部分に適用されます。宣言にはルールがあります SA0124 。 理由: アクセス中にアクセス違反が発生する可能性があるため、アクセス前に参照の有効性をチェックする必要
SA0150:メトリックの下限または上限の違反 下限または上限で有効なメトリックに違反しているビルディングブロックを識別します。 理論的根拠:特定のメトリックに準拠するコードは、読みやすく、保守しやすく、テストしやすいです。 重要性:高い PLCopenルール:CP9 例 116 . 例 初期状況:メトリック ビューの数 対話中です プロジェクト設定→静的コード分析→メトリクス 起動しました。下限
SA0160:再帰呼び出し ファンクションブロックのアクション、メソッド、およびプロパティでの再帰呼び出しを決定します。また、仮想関数呼び出しとインターフェース呼び出しを介して可能な再帰を検出します。 理由:再帰は非決定論的な動作につながるため、エラーの原因になります。 重要性:中 PLCopenルール:CP13 例 117 . 例 機能ブロック FB_Test 次の方法です Call 割り当て:
厳格なIECルールを確認してください このセクションの内容 :
SA0111:ポインタ変数 タイプの変数を決定します POINTER TO 。 理由:IEC61131-3規格ではポインターが許可されていません。 重要度:低 例 95 . 例 VAR piTemp : POINTER TO INT; pbyTemp : POINTER TO BYTE; END_VAR での出力 メッセージ ビュー: SA0111: データ型 POINTER は使用できません こ
SA0112:参照変数 型の変数を検出します。 REFERENCE TO 理由:IEC61131-3規格では参照が許可されていません。 重要度:低 例 96 . 例 VAR ref_int : REFERENCE TO INT; ref_dw : REFERENCE TO DWORD; END_VAR での出力 メッセージ ビュー: SA0112: データ型 REFERENCE は許可されません
SA0113:データ型WSTRINGの変数 型の変数を決定します WSTRING 。 理由:すべてのシステムがそれをサポートしているわけではありません WSTRING 。クリックするとコードの移植性が高まります WSTRING 免除。 重要度: 低 例 97 . 例 VAR wstrTemp : WSTRING; END_VAR での出力 メッセージ ビュー: SA0113: データ型 WSTRI
SA0114:データ型LTIMEの変数 型の変数を検出します。 LTIME 理由:すべてのシステムがそれをサポートしているわけではありません LTIME 。クリックするとコードの移植性が高まります LTIME 免除。 重要度:低 例 98 . 例 VAR ltVar : LTIME; // SA0114 END_VAR での出力 メッセージ ビュー: SA0114: データ型 LTIME は許可さ