3

私は Gimpel の PC-Lint v8.00 を C コードベースで使用しており、それがモジュールをどのようにトラバースするかを理解しようとしています。PC-lint のマニュアルには、PC-Lint が「複数のモジュールを参照する」としか書かれていません。これはどのように行うのですか?たとえば、1 つのモジュールから開始し、関連するすべてのインクルード ファイルとソース ファイルを 1 つの大きなコードに結合して分析しますか? プログラムの流れを理解するために、どのくらい深く検索しますか?

関連する 2 番目の質問では、長いリストのすべての C モジュールを PC-Lint に提供するのではなく、一度に 1 つの C モジュールをコードベースから lint する方が有益なユース ケースがあります。ただし、C モジュールを 1 つだけ提供すると、依存する他の C モジュールが自動的に検出され、それらを使用して、指定された C モジュールのプログラム フローが理解されますか?

4

2 に答える 2

4

PC Lintは、ソースファイルを解析するときに、グローバル変数やextern-declarationsなどに注意して、ある種のランタイムデータベースを作成します。すべてのコンパイルユニット(すべてのファイルが含まれるCファイルを再帰的に含む)を処理すると、次のことが実行されます。リンカは出力を生成しますが、コードを生成する代わりに、特定のタイプのエラーを報告します。たとえば、使用されていないextern宣言、実装されていない未使用のプロトタイプ、未使用のグローバル関数などです。コード生成は非常に可能であるため、これらはリンカによって常に報告されるとは限らない問題です。アイテムはどこでも使用されたことがありません。

検索深度はオプションの影響を受ける可能性があります-passes。これにより、実行時間を犠牲にして、はるかに優れた値の追跡が可能になります。PDFマニュアル(バージョン9.xの場合)のセクション10.2.2.4を参照してください。

2番目の質問ですが、いいえ、Lintコマンドラインでソース(C)ファイル名を1つ(またはいくつか)だけ指定すると、PC Lintはそのファイルのみを処理し、すべてに使用されるファイルが再帰的に含まれます。「ユニットチェックアウト」のオプションを使用して、-uプロジェクト全体の一部のみを処理することをPCLintに通知することをお勧めします。Lintは、部分的なプロジェクトには役立たない特定の種類の警告を抑制します。

于 2012-10-30T15:27:22.570 に答える