SA0044:インターフェース参照付きの宣言 で宣言を決定します REFERENCE TO -インターフェースと宣言 VAR_IN_OUT -インターフェースを備えた変数(暗黙的に REFERENCE TO 気がついた)。 理由:インタフェースタイプは常に、このインタフェースを実装する汎用モジュールのインスタンスへの暗黙の参照です。したがって、インターフェースへの参照は参照への参照であり、非常に望
SA0081:上限は定数値ではありません を検出します FOR 上限が定数値で定義されていないステートメント 理由:ループの上限が可変値である場合、ループが実行される頻度を確認することはできなくなります。これにより、実行時に深刻な問題が発生する可能性があり、最悪の場合、無限ループが発生する可能性があります。 重要性:高い 例 85 . 例 PROGRAM PLC_PRG VAR i:INT; iB
SA0090: 関数終了前の RETURN ステートメント コードの場所を検出します。 RETURN ステートメントは、関数、メソッド、プロパティ、またはプログラムの最後のステートメントではありません。設置場所 RETURN 内に存在します IF ブランチも検出されます。 理由:A RETURN コード内にあると、コードの保守性、テスト性、および可読性が低下します。 A RETURN コード内は簡
SA0095:条件の割り当て の条件で割り当てを決定します IF -、 CASE - また REPEAT -構築します。 理由:割り当て(:=)と比較(=)は簡単に混同される可能性があります。したがって、条件内の割り当ては、意図せずに簡単に行われる可能性があるため、報告されます。これは、コードの読者を混乱させる可能性もあります。 重要性:高い 例 87 . 例 PROGRAM PLC_PRG VA
SA0100:<n>バイトより大きい変数 nバイトを超える変数を検索します。ここで、nは現在の構成で指定されます。デフォルト:1024バイト。行をダブルクリックすると、値を変更できます。 理論的根拠:一部のプログラミングガイドラインでは、単一の変数の最大サイズが設定されています。これはここで確認できます。 重要度:低 例 88 . 例 PROGRAM PLC_PRG VAR aobyTest :
SA0101:長さが不正な名前 無効な長さの名前を検索します。ダイアログでこのルールの行をダブルクリックする プロジェクト設定 名前の長さを定義し、これに対する例外を指定できるダイアログが開きます。 理由:一部のプログラミングガイドラインでは、変数名の最小長が指定されています。この分析でコンプライアンスを確認できます。 重要度:低 PLCopenルール:N6 ヒント すべてのルールは次のとおりです
SA0102: 外部からのプログラム/FB 変数へのアクセス プログラムまたは機能ブロックのローカル変数への外部アクセスを決定します。 理由: CODESYS プログラムまたは機能ブロックのローカル変数への外部読み取りアクセスを有効にします。これは、データのカプセル化(データの非表示)の原則に違反し、IEC61131-3規格に準拠していません。 重要性:中 例 90 . 例 PROGRAM PLC
SA0103:非アトミックデータへの同時アクセス 非アトミック変数(データ型など)かどうかを判断します STRING 、 WSTRING 、 ARRAY 、 STRUCT 、FBインスタンス、64ビットデータ型)は、複数のタスクで使用できます。 理由:アクセス中に同期がない場合、あるタスクでの読み取りと別のタスクでの書き込みにより、読み取られる値に一貫性がなくなる可能性があります。 重要性:中 ヒ
SA0105:複数のインスタンス呼び出し 複数回呼び出されるファンクションブロックのインスタンスを検出します。この目的のために、関数ブロックは次のプラグマでマークされる必要があります。 {attribute 'analysis:report-multiple-instance-calls'} 理由: 一部の機能ブロックは、サイクル内で 1 回だけ呼び出せるように設計されています。このテストでは、複
SA0106:FB_Initでの仮想メソッド呼び出し メソッド内のメソッド呼び出しを検出します FB_Init 基本FBから派生した機能ブロックによって上書きされる基本機能ブロックの。 理由:このような場合、基本FBの上書きされたメソッドの変数が初期化されていない可能性があります。 重要性:高い 例 93 . 例 ファンクションブロック FB_A メソッドがあります FB_Init と Meth_