6

メインの clang 静的アナライザー Web ページ ( http://clang-analyzer.llvm.org/scan-build.html ) の指示に従います...

ひどくバグだらけの小さな C ファイルがあります ( badcode.c):

int main(int argc, char ** argv)
{
    int j;
    int a[4];
    puts(a[j]);
    return 'a';
}

clang 静的アナライザー (スキャンビルド) の言葉の基本的なアイデアを得るために、次のコマンドを実行します。

scan-build -v clang badcode.c

以下を出力します。

scan-build: Emitting reports for this run to '/tmp/scan-build-2012-08-17-1'.
scan-build: 'clang' executable not found in '/usr/share/clang/scan-build/bin'.
scan-build: Using 'clang' from path: /usr/bin/clang
badcode.c:7:2: warning: implicit declaration of function 'puts' is invalid in C99 [-Wimplicit-function-declaration]
        puts(a[j]);
        ^
1 warning generated.
scan-build: Removing directory '/tmp/scan-build-2012-08-17-1' because it contains no reports.

わかりました。clang は少し警告を発しますが、a.out はまだ生成されます。そして、なぜそれはレポートを生成しないのですか? 初期化された変数jは、どの静的アナライザーに対しても非常に明白な危険信号である必要があります。なぜ報告されないのでしょうか?

間違ったコマンド ライン引数を使用しているだけですか?

4

1 に答える 1

0

これを試して:

scan-build -k -V -o scan-reports xcodebuild clean build -configuration Debug -sdk [sdk-version] -xcconfig=[xconfig-certificate-file]

例: scan-build -k -V -o scan-reports xcodebuild clean build -configuration Debug -sdk iphoneos5.0 -xcconfig="/Users/username/config.xcconfig"

これにより、html 出力が作成されます。

于 2013-01-04T12:05:33.983 に答える