Duangw

lint

索引:

  1. 基本命令行选项
  2. 抑制特定消息选项
  3. 启动特定消息的选项
  4. 抑制指令
  5. lint库

1.基本命令行选项

-o:为.c文件创建相关消息文件.ln;

-F:打印.c文件在命令行提供的全名,而不只是使用基本文件名;

-Idir:在目录dir中搜索包含的头文件;

-k:与指令/* LINTED [msg] */一起使用时,打印info:msg;

-lx:访问lint库llib-lx.ln;

-Ldir:在目录dir下搜索lint库;

-n:抑制检查与lint标准C库的兼容性;

-ox:创建文件llib-lx.ln,该文件将命令行中列出的.c文件中与第二步相关的消息记录下来。通常与选项-y或指令/* LINTLIBRARY */一起使用来创建lint库;

-s:将复合消息转换为简单消息;

-y:将命令行中列出的每个.c文件当成以/* LINTLIBRARY */开头的文件来处理。

-V:将产品名称和版本输出到标准错误中。

 

2.抑制特定消息选项

-a抑制:

assignment causes implicit narrowing conversion

conversion to larger integeral type may sign-extend incorrectly

-b对于不可达到的break和空语句抑制:

statement not reached

-h抑制:

assignment operator “=” found where equality operator “==” was expected

constant operand to op:”!”

fallthrough on case statement

pointer cast may result in improper alignment

precedence cnofusion possible; parenthesize

statement has no consequent: if

statement has no consequent: else

-m抑制:

declared global,could be static

-u抑制:

name defined but never used

name used but not defined

-v抑制:

argument unused in function.

-x抑制:

name declared but never used or defined.

 

3.启动特定消息的选项

-p启动:

conversion to larger integral type may sign-extend incorrectly

may be indistinguishable due to truncation or case

pointer casts may be troublesome

nonportable bit-field type

suspicious comparison of char with value:op “op”

-Xc检查不符合ANSI C标准的代码,启动:

bitwise operation on signed value nonportable

function must return int:main()

may be indistinguishable due to truncation or case

only 0 or 2 parameters allowed:main()

nonportable character constant

 

4.抑制指令

/* ARGSUSEDn */

对其后函数定义中除前n个参数以外所有的参数(n默认为0)抑制消息:

argument unused in function.

/* CONSTCOND */

也可写作/* CONSTANTCONDITION */,对于其后的结构抑制:

constant in conditional context.

constant operand to op:”!”.

logical expression always false:op “&&”.

logical expression always true:op “||”.

/* EMPTY */

当插入在else和分号之间时抑制:

statement has no consequent: else.

当插入在if的控制表达式和分号之间时,抑制:

statement has no consequent:if.

/* FALLTHRU */

也可写作/* FALLTHRUOUGH */,对于其后的case语句抑制:

fallthrough on case statement.

/* LINTED [msg] */

当不使用-k选项时,对于其后的代码行,抑制除如下消息以外的所有属于文件内部的警告消息:

argument unused in function

declaration unused in block

set but not used in function

static unused

variable unused in function

对其处理的代码行msg被忽略。

/* LINTLIBRARY */

当使用-o选项时,将把以此命令为开头的.c文件中的定义写入库文件.ln中。

/* NOTREACHED */

对于其后的不可达语句抑制:

statement not reached.

对于其后的不可达情况抑制:

fallthrough on case statement.

对于其后的函数末尾的花括号抑制:

function falls off bottom without returning value.

/* PRINTFLIKEn */

将其后的函数定义中的第n个参数当作[fs]printf()格式字符串来处理。如果该参数进行不规则转换则产生消息:

malformed format string.

如果在剩余参数和转换规则之间不匹配产生消息:

function argument type inconsistent with format.

too few arguments for format.

too many arguments for format.

/* PROTOLIBn */

当n为1且使用了/* LINTLIBRARY */时,将其后的.c文件中的函数原型声明写入库中,n默认为0,忽略该操作。

/* SCANFLIKEn */

与/* PRINTFLIKEn */类似,只不过函数定义中第n个参数被当作[fs]scanf()格式字符串来处理。

/* VARARGSn */

对于其后定义的函数,如果调用时使用n个或更多个的参数时抑制:

function called with variable number of arguments.

 

5.lint库

使用lint库:

lint -lx files;
lint -Ldir -lx files;

创建lint库:

lint -ox files;(要求文件以/* LINTLIBRARY */开头)
或
lint -y -ox files;