2017-03-09 7 views
6

私はclangスタティック・アナライザを試したかったのです。私はWindows上にあり、Visual Studioでclangを構築しています。それはうまくいくようですが、同時にそれは非常に役に立たないようです。Clangスタティック・アナライザで最も基本的な問題が見つからない

私は例

はexample.c scan-build gcc -c example.c発見エラーなしの呼び出し

int main(void) 
{ 
    int h = 0; 
    return 1/h; 
} 

ファイルを作りました。 scan-build gcc -c example.c発見エラーなしの呼び出し

はexample.c

int main(void) 
{ 
    int h; 
    return 1/h; 
} 

scan-build gcc -c example.c発見エラーなしの呼び出し

はexample.c

int main(void) 
{ 
    return 1/0; 
} 

これらの最も基本的なエラーが見つからない場合(およびclang自身が見つけることができます)、どのようにスタティックアナライザを使用できますか?

私のgccはMinGWです。私もclangの代わりに試しましたが、何も起こっていません。

ここで何か問題がありますか?

+0

実際にこのツールは純粋なものです。あなたのテストに基づいて、あなたはすでにこの結論に至ったことをあなたに伝えるためにインターネット上に誰かがいる必要はありません。単にアンインストールして別のものを入手するだけです。 – Lundin

+0

@ Lundin LLVMのフレームワークに信じるプロジェクトがたくさんあるようです。たとえば、Mozilla Foundationの支援を受けているRust言語です。私は含まれているスタティックアナライザーが役に立たないとは想像できません。たぶん私はここで非常に基本的な何かを見逃しているでしょう。いくつかの隠された構成。 – CodeMonkey

+1

私はこの特定のスタティック・アナライザを使用していませんが、他の多くのスタティック・アナライザは使用していません。経験則として、修理を超えて故障していると常に仮定してください。 – Lundin

答えて

1

build-scan -v(冗長)を使用して、実際にclang checkerが動作しているかどうかを確認してください。 私はこのチュートリアルに従いました http://web.cs.ucla.edu/~tianyi.zhang/tutorial.html 私はC++の例を試したときにバグのコードにエラーを表示しませんでした。 -vは、提供されたMakefileが壊れていることを私に示しました。私はclangがまだバグを検出しなかったが、g ++はバグを示していた。

多分、彼らはその特定のチェックをオフにしました。 Clangスタティックアナライザバージョン3.8 このチュートリアルでは、バージョン3.2を使用しています

+0

私はそれを動作させることができなかったので、私はClangをアンインストールしましたが、私は再度試みるべきです。 – CodeMonkey

0

あなたは何か正しいことをしていないかもしれません。 は例えば、第三の例のVisual Studio 2015でもエラーでコンパイルすることを拒否:

error C2124: divide or mod by zero.

私はクランはそのような何かを検出することはできないとは思いません。ただし、これは重要ではありません。

私はPVS-Studioを使用して、このコードをチェックしようとしましたが、それはすべての3つのエラー検出:ゼロによる

  • V609の分割を。分母 'h' == 0. MFCApplication2 mainfrm.cpp 17
  • V614未初期化変数 'h'が使用されています。 MFCApplication2 mainfrm.cpp 23
  • V609ゼロで除算します。分母 '0' == 0 MFCApplication2 mainfrm.cpp 28

したがって、私はまだ実験をお勧めします。少なくとも3番目のケースは、Clangによって正確に見つかるはずです。 実用的な推奨事項は、分析のためにPVS-Studioなどのより強力なツールを使用することです。彼は、ところで、ClangとGCCのfinds errorsです。

関連する問題