Section:1 2 3 4 5 6 7 8 9 10 11 12 13 14 A B C D E

13 Completeness(完全性)

Splintは未使用の宣言と 外部で使用されていない外部公開している宣言に対して警告を報告することが出来ます。

13.1 Unused Declarations(使用されていない宣言)

Splintは宣言されているが使用されていない 定数、関数、引数、変数、型、列挙のメンバ、 構造体・共用体のフィールドを検出します。フラグ、 constusefcnuseparamusevarusetypeuseenummemuse、 と、 fielduseは 未使用宣言エラーが各宣言の種類ごとに報告されるかどうかを制御します。 外部公開される宣言に対するエラーは、 topuseフラグが オンのときのみ報告されます(Section 13.2参照)。

/*@unused@*/アノテーションは 必要と宣言されたアイテムが使用されないことを示すために 宣言の前に使用できます。 未使用宣言エラーはunused と共に宣言された識別子に対しては報告されません。

13.2 Complete Programs(完成したプログラム)

Splintは完成したプログラムと部分的なプログラムの両方で使用できます。 完成したプログラムをチェックする場合、追加のチェックが プログラムで宣言されている全ての識別子が定義され、使用されていることと 外部に公開する必要の無い関数が、 staticで宣言されていることを 保障するために行われます。

Splintは全ての宣言された変数と関数が 定義されていることをチェックします(compdefフラグで制御されます)。 外部のライブラリで定義される関数と変数の宣言は、 未定義宣言エラーを抑制するために/*@external@*/が前に付いてもかまいません。

Splintは使用されていない外部公開宣言を報告します(topuseフラグで制御されます)。 どちらの宣言もまた、宣言の使用フラグ(Section 13.1参照)に依存します。 +partialフラグは 部分的なシステムをチェックするためのフラグを設定します。 トップレベルの未使用の宣言、未定義の宣言、そして不要な外部公開名は +partialが設定されているときは 報告されません。

13.2.1 Unnecessarily External Names(不要な外部公開名)

Splintはグローバルスコープ(すなわち、staticで使用されない) で宣言されている変数と関数で、それが、宣言されたファイルの外で使用されていない場合、 それらを報告します。 スタンドアロンシステムでは、これらの識別子は、通常、 それらのスコープに制限するためにstaticを使用して宣言するべきです。 export-staticフラグがオンの場合 Splintはファイルスコープを持つことが可能な宣言を報告します。 全ての関連するソースファイルがSplintコマンドライン上でリスト化されている場合のみ 使用されるべきですが、しかし、 Splintはそれらが使用されるほかのファイルを処理しないため、 ファイルスコープでのみ使用されるとして 正しくない判断がされるかもしれません。

13.2.2 Declarations Missing from Headers(ヘッダーから欠落している宣言)

C言語プログラミングのスタイルでは、一般的な習慣は M.c によって外部公開される全ての関数あるいは変数を M.h で宣言します。 export-headerフラグがオンの場合、 Splintは M.hで 宣言されていなくて、 M.c で外部公開する宣言を報告します。

このドキュメントはSplint(英)のサイトを元に作成しました