Sun Studio 12:C 用户指南

4.3.27 -Nlevel=n

通过指定用于报告问题的增强 lint 分析级别,可打开增强 lint 模式。此选项允许您控制检测到的错误量。级别越高,检验时间越长。n 是一个数字:1234。没有缺省值。如果未指定 -Nlevellint 会使用其基本分析模式。如果指定不带任何参数的 -Nlevellint 会设置 -Nlevel=4

有关基本和增强 lint 模式的说明,请参见4.2 使用 lint

4.3.27.1 -Nlevel=1

分析单个过程。报告发生在某些程序执行路径上的无条件错误。不执行全局数据和控制流分析。

4.3.27.2 -Nlevel=2

分析整个程序,包括全局数据和控制流。报告发生在某些程序执行路径上的无条件错误。

4.3.27.3 -Nlevel=3

分析整个程序,包括常量传播、常量用作实际参数时的情况以及在 -Nlevel=2 下执行的分析。

在此分析级别检验 C 程序所用的时间比前一级别长 2 到 4 倍。需要额外的时间是因为 lint 通过为程序变量创建可能值的集合对程序进行部分解释。这些变量集合是以常量以及包含程序中的常量操作数的条件语句为基础创建的。这些集合形成创建其他集合的基础(一种常量传播形式)。作为分析结果接收的集合根据以下算法来评估正确性:

如果对象的所有可能值之中存在一个正确值,则该正确值用作进一步传播的基础;否则诊断出一个错误。

4.3.27.4 -Nlevel=4

分析整个程序,并报告使用某些程序执行路径时会发生的条件错误,以及在 -Nlevel=3 下执行的分析。

在此分析级别上,存在更多诊断消息。分析算法通常对应于 -Nlevel=3 的分析算法,所不同的是任何无效值现在会生成一条错误消息。在此级别上进行分析所需的时间增大两个数量级(大约慢 20 到 100 倍)。在这种情况下,所需的额外时间与以递归、条件语句等为特征的程序复杂性成正比。因此,对超过 100,000 行的程序使用此级别的分析可能很困难。