LS.CALL

GUI 関数におけるローカライズされない文字列の不審な使用

ローカライズされた文字列チェッカーが使用され、ユーザー対面関数でのローカライズされない文字列の使用を点検します。一般に、あるフォームでフォームでユーザーに表示されるすべての文字列は、ローカライズする必要があります。これらは、単純なラベルやボタンタイトルであったり、フォーマット文字列やデータから実行時に組み立てられる、より複雑な文字列であったりします。
重要: これは実験的なチェッカーです。

カスタムナレッジベース (KB)

Klocwork ではナレッジベースを使用して、文字列のソースとして使用される関数およびユーザーに情報を表示するために使用される関数を判断します。このため、KB レコードには次の 2 種類があります。
  1. ソース KB (LS.SRC): 文字列を返す関数

    sprintf - LS.SRC 1:$1:1

    Sprintf の最初の引数は文字列です

  2. Sink KB (xLS): ユーザーに情報を表示する関数

    print_string - xLS 1:$1:1

    print_string 関数は、ユーザーのために文字列を印刷する関数です。

ナレッジベースの詳細については、C/C++ ナレッジベースリファレンス を参照してください

コード例

コピー
    int main()
    {
        const char* nonLocalizedString = “Hello World”;
        print_string(nonLocalizedString); // Line 4.LS.CALL
        return 0;
    }
Klocwork は、ローカライズされていない文字列を使用する GUI 関数の呼び出しの可能性があることを示すために、4 行目でローカライズされた文字列を作成します。
注意: print_string が GUI 関数であることを知るために、上記のコードを次のレコードを持つ KB とともに実行するべきです: print_string - xLS 1:$1:1

関連チェッカー