5

私はかなり複雑なプロジェクトに取り組んでおり、追加の複雑さとして、カーネル内の Linux モジュールです。そのようなコードベースで splint のようなリンティング ツールを実行することは、確かに不可能ではありません [1] が、些細な努力だけでは何かを実現するには十分ではありませんでした。

これにもっと時間を費やす前に、この問題に関するフィードバックや意見を集めたいと思っていました。十分なフラグがあれば、gcc は非常に多くのチェックを行います。別の静的コード分析ツールを使用する価値はありますか?

[1] http://www.cs.virginia.edu/pipermail/splint-discuss/2005-January/000531.html

4

2 に答える 2

6

のようなツールに加えて、LDV プロジェクトsparseを参照することをお勧めします。LDV は、そもそも Linux ドライバーをチェックすることを目的としています。このシステムは、 およびよりも詳細な静的分析を実行し、非常にとらえどころのない問題を検出できます。splintsparse

LDV はフリーソフトウェアです。

試してみたいが展開する時間がない場合は、コードをアップロードしてチェックできるオンライン検証サービスがあります。

それとは別に、Coccinelleシステムも一見の価値があるかもしれません。LDV と同様に、Coccinelle は Linux カーネルのさまざまなエラーを検出するために使用されました。

于 2011-11-23T06:40:39.290 に答える
3

確かにきちんとしてsplintいますが、Linux カーネル ソースでそれを使用するために必要な労力は、おそらく見返り以上のものだと思います。

ただし、カーネル開発者は、いくつかの同様のチェックを実行するための独自のsparseツールを持っており、その使用をカーネル ソースにすでに深く統合しています。それをソースに統合すること、かなり自然に感じるはずです。なぜなら、それはすでにカーネル ソース コードのいたるところにあるからです。の使用方法の詳細Documentation/sparse.txtについては、 を参照してくださいsparse

商用プロジェクトCoverityがあり、多くの「重要度の高い」オープン ソース プロジェクトの問題を時折スキャンします。彼らのツールを使用して、Linux カーネル ソースに数千とは言わないまでも数百のバグを発見しました。(彼らが自社の製品を宣伝し、米国政府が非常に重要なコードの膨大な山をレビューし、オープンソースの作者が無料のバグレポートを受け取り、オープンソースのユーザーが無料のコードレビューの恩恵を受けているというのは、喜ばしい話です。 !)

Coverity の専門知識を購入する価値があるかどうかは別問題ですが、Coverity と統合するsparseことで、ライセンス料なしで静的コード チェック ツールの利点を得ることができます。

于 2011-11-22T11:20:14.367 に答える