私は非常に単純な.cファイルを持っていますが、そこには明らかなバグがあります。scan-build makeはバグを検出しません
#include <stdio.h>
struct S {
int x;
};
void f(struct S s){
}
void test() {
struct S s;
f(s); // warn
}
int test2(int x){
return 5/(x-x); // warn
}
int main(){
test();
test2(532);
printf("Hej\r\r");
}
エラーを検出するためにclangのスタティックコードアナライザツール(スキャンビルド)を使用しようとしています。たとえば、次のコマンドを使用して、私は、ファイル上で直接ツールを実行すると:
スキャン-構築G ++ -o 1 1.C
私は警告を含むことを意図した出力を、入手できますか機能で「INT:静的解析のための「/usr/lib/llvm-3.8/bin/clang」を
1.C使い方:0
スキャン・ビルドによる除算を言及コンパイラからtest2(int) ': 1.c:16:11:warning:ゼロ除算[-Wdiv-by-zero] return 5 /(x-x); ^
1.c:16:11:warning:ゼロ除算5 /(x-x);
〜^ ~~~~~ 1警告が生成されました。スキャンビルド:1バグが見つかりました。 scan-build: 'scan-view/tmp/scan-build-2016-07-11-152043-3028-1'を実行してバグレポートを調べます。
ここでは、このコマンドを非常に単純なMakefileに入れようとしています。私のMakefileの内容は以下のとおりです。ただし
all: 1.c
g++ -o 1 1.c
clean:
rm -f *.o 1
、私は次のコマンドを使用して、メイクとビルドスキャンを実行するたび:
スキャン-ビルドは
私はまだ取得を作りますコンパイラからの警告ですが、スキャンビルドツールではありません!
スキャン・ビルド: '関数で:静的解析のため
グラム++ -o 1 1.C
1.C 'を/usr/lib/llvm-3.8/bin/clang' を使用int:test2(int) ':
1.c:16:11:警告:ゼロ除算[-Wdiv-by-zero] return 5 /(xx);
^スキャンビルド:レポートが含まれていないため、ディレクトリ '/ tmp/scan-build-2016-07-11-152326-3055-1'を削除しています。 scan-build:バグは見つかりませんでした。
CとC++の両方のファイルで同じ動作が確認されています。私は、誰かがsimilar error(過去)に来ていたことを知っていますが、提案された回答はうまくいかないようで、とにかくC++ファイルだけを参照しているようです。すべての手がかりは?
を作品や! – user307976