4.3.9 -errchk=l(, l)
l で指定した追加の検査を実行します。デフォルトは、-errchk=%none です。-errchk を指定するのは、-errchk=%all を指定するのと同じです。l は、次の表の 1 つ以上のフラグ (-errchk=longptr64,structarg など) から成るコンマ区切り検査リストです。
表 4-1
-errchk のフラグ
|
|
%all
|
-errchk による検査をすべて実行します。
|
%none
|
-errchk による検査を行いません。これはデフォルト値です。
|
[no%]locfmtchk
|
printf のような書式文字列を lint の第 1 のパスで検査します。-errchk=locfmtchk を使用するかどうかに関係なく、lint は常に第 2 のパスで printf のような書式文字列を検査します。
|
[no%]longptr64
|
long 整数およびポインタのサイズが 64 ビットで標準整数のサイズが 32 ビットの環境への移植性を検査します。明示的なキャストが使用されているときでも、ポインタ式と long 整数式の標準整数への代入を検査します。
システムヘッダーファイルによって、ポインタの操作を目的とした型が定義されることに注意してください。-m32 フラグを使用すると、これらの型は、ポインタを安全に操作できない int などの基底の型として定義され、誤った警告が発行される場合があります。たとえば、size_t の使用法は次のようになります。
#include <stdlib.h>
size_t
myfiunk(uint32_t param)
{
return sizeof(uint64_t) * param;
}
.
$ lint -m32 -mux -errchk=longptr64 bug.c
(5) warning: assignment of 64-bit integer to 32-bit integer
$
|
[no%]structarg
|
値渡しされた構造体引数を検査します。仮引数の型が不明の場合は、その旨が報告されます。
|
[no%]parentheses
|
コード内の優先順位を明確に検査します。このオプションは、コードの保守性を高めるために使用します。-errchk=parentheses で警告が返された場合は、さらに括弧を使用して、コード内の演算の優先順位を明確に指示することを検討してください。
|
[no%]signext
|
符号なし整数型の式における符号付き整数値の符号拡張を、ISO C の通常の値保持規則が認める状態について検査します。このオプションは、-errchk=longptr64 が一緒に指定された場合にはエラーメッセージを出力するだけです。
|
[no%]sizematch
|
小さな整数に大きな整数が代入される場合について検査し、警告します。これらの警告は、サイズが同じであっても符号が異なる整数間の代入 (unsigned int が signed int を取得する) についても発行されます。
|
|