Skip to main content

SA0175: 文字列に対する不審な操作

注記

このルールを常に有効にしないでください。 UTF-8 エンコーディングに変換するときにチェックする必要があるコード内の場所を見つけるために必要な場合にのみ、ルールを有効にします。

プロジェクトオプションかどうかをチェックします STRING の UTF-8 エンコーディング 有効にすることができます。これは、疑わしい操作を含むコードの場所が見つからない場合です。

UTF-8 エンコーディングに切り替えると、最初の 127 文字が ASCII エンコーディングに対応します。ただし、他のすべての文字は複数のバイトでエンコードされます。これにより、文字列を処理する際の動作が変化する可能性があります。その結果、ASCII 以外の文字を含む文字列リテラルは長くなる可能性があります。または、インデックスによる文字列へのアクセスは、間違った要素にアクセスする可能性があります。最後に、無効なバイト オフセットへのアクセスも発生する可能性があります。

ルールがアクティブな場合、次の構成のいずれかを含むすべてのコードの場所が報告されます。

  • バイト文字列へのインデックス アクセス

    例: str[2]

    メッセージ: SA0175: 属性 'strict' の列挙: 文字列に対する不審な操作: インデックス アクセス '<式>'

  • 半角文字列へのアドレスアクセス

    例: ADR(str)

    メッセージ: sa_icon_message.png SA0175:属性 'strict' の列挙: 文字列に対する不審な操作: インデックス アクセス '<式>' の可能性があります

  • の文字列関数の呼び出し Standard ライブラリ、呼び出し時を除く CONCATLEN 機能

    メッセージ: sa_icon_message.png SA0175:属性 'strict' の列挙: 文字列に対する不審な操作: インデックス アクセス '<式>' の可能性があります

  • 非 ASCII 文字を含むバイト リテラル

    例:

    str := '99€';
    str :='Ä';

    メッセージ: sa_icon_message.png SA0175: 文字列に対する不審な操作: リテラル '<literal>' に非 ASCII 文字が含まれています