PC-lint Plus是一种静态分析工具,通过分析C和C ++源代码来发现软件中的缺陷。与编译器一样,PC-lint Plus会解析源代码文件,执行语义分析,并构建一个抽象语法树来表示程序。PC-lint Plus采用各种机制,包括数据流分析,数值跟踪,读写分析,强类型检查,功能语义验证和许多其他技术,来提供对单个文件和整个项目强大而全面的分析。
PC-lint Plus正式版
GNUake
在大型的开发项目中,通常有几十到上百个的源文件,如果每次均手工键入cc令进行编译的话,则会非常不方便。因此,人们通常利用ake具来自动完成编译工作。这些工作包括:如果仅修改了某几个源文件,则只重新编译这几个源文件;如果某个头文件被修改了,则重新编译所有包含该头文件的源文件。利用这种自动编译可大大简化开发工作,避免不必要的重新编译。
实际上,make工具通过一个称为akefile的文件来完成并自动维护编译工作。makefile需要按照某种语法进行编写,其中说明了如何编译各个源文件并连接生成可执行文件,并定义了源文件之间的依赖关系。(makefile介绍)
当修改了其中某个源文件时,如果其他源文件依赖于该文件,则也要重新编译所有依赖该文件的源文件。
makefile文件是许多编译器,包括indowsT的编译器维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改akefile件而已。
默认情况下,GNUake具在当前工作目录中按如下顺序搜索akefile:
- *NUmakefile
- *akefile
- *akefile
在UNIX系统中,习惯使用Makefile作为makfile文件。如果要使用其他文件作为makefile,则可利用类似下面的make命令选项指定makefile文件:akefakefile.debug
GNUake的主要预定义变量
GNUake有许多预定义的变量,这些变量具有特殊的含义,可在规则中使用。表-5出了一些主要的预定义变量,除这些变量外,GNUake还将所有的环境变量作为自己的预定义变量。
预定义变量 | 含义 |
$* | 不包含扩展名的目标文件名称 |
$+ | 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件 |
$< | 第一个依赖文件的名称 |
$/span> | 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚 |
$@ | 目标的完整名称 |
$^ | 所有的依赖文件,以空格分开,不包含重复的依赖文件 |
$% | 如果目标是归档成员,则该变量表示目标的归档成员名称。例如,如果目标名称为ytarget.so(image.o),则@ytarget.so,而%mage.o |
AR | 归档维护程序的名称,默认值为r |
ARFLAGS | 归档维护程序的选项 |
AS | 汇编程序的名称,默认值为s |
ASFLAGS | 汇编程序的选项 |
CC | C译器的名称,默认值为c |
CFLAGS | C译器的选项 |
CPP | C编译器的名称,默认值为(CC)E |
CPPFLAGS | C编译的选项 |
CXX | C++译器的名称,默认值为++ |
CXXFLAGS | C++译器的选项 |
FC | FORTRAN译器的名称,默认值为77 |
FFLAGS | FORTRAN译器的选项 |
隐含规则
GNUake含有一些内置的或隐含的规则,这些规则定义了如何从不同的依赖文件建立特定类型的目标。
GNUake持两种类型的隐含规则:
*缀规则(Suffixule)。后缀规则是定义隐含规则的老风格方法。后缀规则定义了将一个具有某个后缀的文件(例如,.c件)转换为具有另外一种后缀的文件(例如,.o件)的方法。每个后缀规则以两个成对出现的后缀名定义,例如,将c件转换为o件的后缀规则可定义为:
.c.o:(CC)(CFLAGS)(CPPFLAGS)co@<
*式规则(patternules)。这种规则更加通用,因为可以利用模式规则定义更加复杂的依赖性规则。模式规则看起来非常类似于正则规则,但在目标名称的前面多了一个,同时可用来定义目标和依赖文件之间的关系,例如下面的模式规则定义了如何将任意一个.c件转换为.o件:
%.c:%.o(CC)(CFLAGS)(CPPFLAGS)co@<
相关内容推荐:
PC-lint Plus v1.3.5更新内容>>>
想要购买PC-lint Plus正版授权,或了解更多产品信息请点击【咨询在线客服】
标签:软件测试技术C/C++
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!