社区
工具平台和程序库
帖子详情
pc-lint如何不检查头文件
a6567109
2011-09-19 12:05:34
求助pc-lint高手,我现在在vs中集成了pc-lint,使用单文件检查的时候,工具会自动的检查所有包含的头文件。产生很多无用的信息,请问怎样能不检查头文件(不是屏蔽错误信息,屏蔽的话还是会检查,浪费很多时间)。
非常感谢~~
...全文
1195
11
打赏
收藏
pc-lint如何不检查头文件
求助pc-lint高手,我现在在vs中集成了pc-lint,使用单文件检查的时候,工具会自动的检查所有包含的头文件。产生很多无用的信息,请问怎样能不检查头文件(不是屏蔽错误信息,屏蔽的话还是会检查,浪费很多时间)。 非常感谢~~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yangdongqian
2011-09-24
打赏
举报
回复
[Quote=引用 6 楼 a6567109 的回复:]
正确的使用方法就是检查相关的头文件么?
是不是我所检查的头文件有错误才会报错?
但是如果每次检查单个文件都要lint所有头文件,所带来的时间开销就不可忽略了,
请教一下。。。谢谢~~~~
引用 5 楼 yangdongqian 的回复:
"产生很多无用的信息"说明pclint相关的设置有问题,你“不检查头文件”的想法是不合适的,其不是pclint的正确使用方法。
[/Quote]
1、如前面几位所说头文件是必须检查的。
2、你的头文件和源文件中使用的接口是一致的lint是不会报错的
3、lint时只会检查C文件相关的头文件,不会(也不用)检查所有头文件,现在的PC你是不用考虑时间开销的。
说明:头文件不用指定去lint,源码中有包含,在使用工具是指定头文件的存放路径就可以了。请仔细看相关的帮助文档(lint程序路径下有)。
lew0002
2011-09-22
打赏
举报
回复
呵呵,pclint不是“自动检查”所有包含的头文件,是必须检查。
你的代码和它所包含的头文件是一个整体
编译器如果找不到你包含的头文件,肯定会产生一个错误,因为它没有得到代码的全部信息
所以除非pclint像编译器一样支持预编译头文件一样的概念,你是没有办法节省时间的
赵4老师
2011-09-22
打赏
举报
回复
听说pclint的配置文件是纯文本的,如果有例外文件列表功能,把某个目录下所有文件都添加进例外列表应该不难吧。
比如在cmd窗口里面输入以下命令
dir /b /a-d /s c:\mydir\include\*.h* >allh.txt
allh.txt文件中即每行一个的c:\mydir\include目录下的所有头文件的文件名。
赵4老师
2011-09-22
打赏
举报
回复
[Quote=引用 7 楼 a6567109 的回复:]
但是我的工程头文件那么多,要是意义添加进去会很耗时,是不是还有更好地办法。。。求教
引用 4 楼 zhao4zhong1 的回复:
没具体用过pclint。
瞎猜一下,可能可以在某个地方设置例外文件列表吧。
[/Quote]
或者可以添加例外目录?
a6567109
2011-09-22
打赏
举报
回复
但是我的工程头文件那么多,要是意义添加进去会很耗时,是不是还有更好地办法。。。求教
[Quote=引用 4 楼 zhao4zhong1 的回复:]
没具体用过pclint。
瞎猜一下,可能可以在某个地方设置例外文件列表吧。
[/Quote]
a6567109
2011-09-22
打赏
举报
回复
正确的使用方法就是检查相关的头文件么?
是不是我所检查的头文件有错误才会报错?
但是如果每次检查单个文件都要lint所有头文件,所带来的时间开销就不可忽略了,
请教一下。。。谢谢~~~~
[Quote=引用 5 楼 yangdongqian 的回复:]
"产生很多无用的信息"说明pclint相关的设置有问题,你“不检查头文件”的想法是不合适的,其不是pclint的正确使用方法。
[/Quote]
yangdongqian
2011-09-20
打赏
举报
回复
"产生很多无用的信息"说明pclint相关的设置有问题,你“不检查头文件”的想法是不合适的,其不是pclint的正确使用方法。
赵4老师
2011-09-19
打赏
举报
回复
没具体用过pclint。
瞎猜一下,可能可以在某个地方设置例外文件列表吧。
a6567109
2011-09-19
打赏
举报
回复
这个道理我也是明白的。
在这里请教各位达人,能否提供一个可行的办法解决我的问题。
[Quote=引用 2 楼 zhao4zhong1 的回复:]
规矩是人定的,人不能被规矩限制死。
比如规定不许随地大小便,难道没有厕所的地方人会被大小便憋死吗?
[/Quote]
赵4老师
2011-09-19
打赏
举报
回复
规矩是人定的,人不能被规矩限制死。
比如规定不许随地大小便,难道没有厕所的地方人会被大小便憋死吗?
chenbiquan
2011-09-19
打赏
举报
回复
关注问题……我也有同样的困惑……
静态代码检测工具
PC
-
Lint
的安装包
PC
-
Lint
是一个历史悠久、功能强大的C/C++静态代码检测工具,其使用历史可以追溯到计算机编程的远古时代(30多年前)。经过多年的发展,它不仅可以
检查
出一般的语法错误,还可以
检查
出那些虽然符合语法要求但不易发现的潜在错误,还能够有效地帮助开发人员提出许多程序在空间利用、运行效率上的改进点,从而提高软件的质量。
PC
-
Lint
是GIMPEL SOFTWARE公司的产品,许多国外的大型专业软件公司,如微软公司,都把它作为程序
检查
工具,在程序合入正试版本或交付测试之前一定要保证通过了
LINT
检查
。要求软件工程师在使用
LINT
时要打开所有的编译开关,如果一定要关闭某些开关,那么要给出关闭这些开关的正当理由。
PC
-
Lint
能够将C/C++程序中的遁词、特性、问题和缺陷等找出来。这种分析的目的是为了在程序整合或移植前确定程序中潜在的问题,找出可能是敏感源未被发现的错误的特殊结构。
PC
-
Lint
能够在多个模块中查找,因此比编译器更能发现问题。 可以把
PC
-
Lint
看作是一种更加严格的编译器。但它仅使用程序源代码和
头文件
工作,不需要编译器的参与。本质上
PC
-
Lint
是进行严格的词法语法和语义分析工作。能否通过
PC
-
Lint
的检测将成为程序开发人员的严峻挑战。当然,有些没有通过
PC
-
Lint
的程序照样能够运行,通过了也不能保证没有问题,但是
PC
-
Lint
代表了一致性和可移植性以及良好的风格是无可厚非的。 可想而知,如果从编码后第一次编译程序时就使用
LINT
来
检查
程序,并且保证消除所有的
LINT
告警,那么软件编码结束后整个工程再编译时就不会遇到很多的告警信息。即使整个工程在编译时,如果能抽出一定的精力来消除程序中的
LINT
告警,以后再维持这种无告警状态就很容易了。程序质量的提高也是不言而喻的。
PC
-
LINT
的内容非常广泛,光是选项就有300多个,涉及到程序编译及语法使用中的方方面面。它的全称是
PC
-
Lint
/Flexe
Lint
for C/C++。
PC
-
Lint
能够在Windows、MS-DOS和OS/2平台上使用,以二进制可执行文件的形式发布,而Flexe
Lint
运行于Linux/Unix平台,以源代码的形式发布。
PC
-
Lint
包中包含3个可执行文件:一个Windows可执行文件(在Windows下运行的32位控制台程序)、一个DOS扩展的可执行文件(在MS-DOS下运行,利用80386 DOS扩展技术来访问所有可利用的扩展内存)和一个OS/2 32位的可执行文件(只在OS/2下运行)。 使用
PC
-
Lint
在代码走读和单元测试之前进行
检查
,可以提前发现程序隐藏错误,提高代码质量,节省测试时间,并提供编码规则
检查
,规范软件人员的编码行为。
代码语法错误分析工具
pc
lint
8.0
代码静态分析工具
PC
-
LINT
安装配置
PC
-
Lint
是C/C++软件代码静态分析工具,你可以把它看作是一种更加严格的编译器。它不仅可以
检查
出一般的语法错误,还可以
检查
出那些虽然符合语法要求但不易发现的潜在错误。 C语言的灵活性带来了代码效率的提升,但相应带来了代码编写的随意性,另外C编译器不进行强制类型
检查
,也带来了代码编写的隐患。
PC
Lint
识别并报告C语言中的编程陷阱和格式缺陷的发生。它进行程序的全局分析,能识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针,冗余的代码,等等。软件除错是软件项目开发成本和延误的主要因素。
PC
lint
能够帮你在程序动态测试之前发现编码错误。这样消除错误的成本更低。 使用
PC
-
Lint
在代码走读和单元测试之前进行
检查
,可以提前发现程序隐藏错误,提高代码质量,节省测试时间。并提供编码规则
检查
,规范软件人员的编码行为。 由于
PC
-
LINT
对于一般程序员来说可能比较陌生,有好多人安装了也不知道怎样配置和使用。 下面我就根据自己的安装和配置心得对
PC
-
Lint
的安装、配置及使用进行下详细说明.本人主要介绍了将
PC
-
Lint
集成到VC++6.0和SourceInsight的方法和步骤。 (一)Windows下C/C++开发工具中,VC6使用较为普遍,因此这里先讲下VC6.0环境中集成
pc
lint
的步骤. 首先, 当然要下载软件,正版软件要200多$呢,买不起!所以只好网上找免费的拉。从http://www.61ic.com/down/othe/
pc
lint
.rar处可以下载到一个8.0版本的
pc
lint
. 1.将
pc
lint
.rar解压至c:\, 这样
lint
文件就位与c:\
pc
lint
(安装目录)下了。 2.将c:\
pc
lint
\lnt 下的3个文件lib-w32.lnt,env-vc6.lnt,co-msc60.lnt拷贝至c:\
pc
lint
下, 再在安装目录下创建std.lnt和options.lnt两个文件,其中std.lnt的内容如下 // contents of std.lnt c:\
pc
lint
\co-msc60.lnt c:\
pc
lint
\lib-w32.lnt c:\
pc
lint
\options.lnt -si4 -sp4 -i"D:\Program Files;D:\Program Files\Microsoft Visual Studio\VC98\Include" //end 其中-i后面的路径名为VC的安装路径和VC Include 文件路径,根据自己的修改便可。 options.lnt 内容可为空,为定制内容,以后需要时再添加。 准备工作做完了,下一步就是要将
pc
lint
集成到VC6中去,先配置
lint
使之能对单个C或C++文件进行
检查
。 1.打开VC6,tools--->customize-->tools 新建一个名为
pc
lint
的项,在下面填入 command: C:\
pc
lint
\
lint
-nt.exe arguments: -u c:\
pc
lint
\std.lnt c:\
pc
lint
\env-vc6.lnt "$(FilePath)" Use Output Window 打上勾 close 完成。 这个在你VC窗口tools菜单下应该多了一个
pc
lint
选项,可以用它来运行
lint
程序,对你的c/c++代码进行静态
检查
了。 现在就可以用个小程序测试一下
pc
lint
了 //test1.cpp #include class X { int *p; public: X() { p = new int[20]; } void init() { memset( p, 20, 'a' ); } ~X() { delete p; } }; 编译这个文件,看下你的编译器给你多少警告,再运行下
lint
, 可以自己对比一下。 我的机器上,VC产生0 errors 0 warnings, 而
lint
程序产生了如下8条警告信息,有些还是很有用处的提示,这里就不一一分析了. test.cpp(12): error 783: (Info -- Line does not end with new-line) test.cpp(7): error 1732: (Info -- new in constructor for class 'X' which has no assignment operator) test.cpp(7): error 1733: (Info -- new in constructor for class 'X' which has no copy constru
SonarQube 详解
1.SonarQube简介2.PostgreSQL安装3.SonarQube安装4.SonarQube汉化5.Sonar
Lint
-eclipse安装6.Sonar
Lint
-IDEA安装7.Sonar
Lint
配置&使用8.Maven项目实战一9.Maven项目实战二10.Sonar-Scanner安装11.Sonar-Scanner实战12.SonarQube服务器端实战13.自定义SonarQube镜像14.编写docker-compose.yml准备15.制作docker-compose.yml文件16.服务部署SonarQube
免费下载:C语言难点分析整理.doc
1. C 语言中的指针和内存泄漏 5 2. C语言难点分析整理 10 3. C语言难点 18 4. C/C++实现冒泡排序算法 32 5. C++中指针和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C中可变参数函数实现 38 8. C程序内存中组成部分 41 9. C编程拾粹 42 10. C语言中实现数组的动态增长 44 11. C语言中的位运算 46 12. 浮点数的存储格式: 50 13. 位域 58 14. C语言函数二维数组传递方法 64 15. C语言复杂表达式的执行步骤 66 16. C语言字符串函数大全 68 17. C语言宏定义技巧 89 18. C语言实现动态数组 100 19. C语言笔试-运算符和表达式 104 20. C语言编程准则之稳定篇 107 21. C语言编程常见问题分析 108 22. C语言编程易犯毛病集合 112 23. C语言缺陷与陷阱(笔记) 119 24. C语言防止缓冲区溢出方法 126 25. C语言高效编程秘籍 128 26. C运算符优先级口诀 133 27. do/while(0)的妙用 134 28. exit()和return()的区别 140 29. exit子程序终止函数与return的差别 141 30. extern与static存储空间矛盾 145 31.
PC
-
Lint
与C\C++代码质量 147 32. spirntf函数使用大全 158 33. 二叉树的数据结构 167 34. 位运算应用口诀和实例 170 35. 内存对齐与ANSI C中struct内存布局 173 36. 冒泡和选择排序实现 180 37. 函数指针数组与返回数组指针的函数 186 38. 右左法则- 复杂指针解析 189 39. 回车和换行的区别 192 40. 堆和堆栈的区别 194 41. 堆和堆栈的区别 198 42. 如何写出专业的C
头文件
202 43. 打造最快的Hash表 207 44. 指针与数组学习笔记 222 45. 数组不是指针 224 46. 标准C中字符串分割的方法 228 47. 汉诺塔源码 231 48. 洗牌算法 234 49. 深入理解C语言指针的奥秘 236 50. 游戏外挂的编写原理 254 51. 程序实例分析-为什么会陷入死循环 258 52. 空指针究竟指向了内存的哪个地方 260 53. 算术表达式的计算 265 54. 结构体对齐的具体含义 269 55. 连连看AI算法 274 56. 连连看寻路算法的思路 283 57. 重新认识:指向函数的指针 288 58. 链表的源码 291 59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 346 65. C指针讲解 352 66. 关于指向指针的指针 368 67. C/C++ 误区一:void main() 373 68. C/C++ 误区二:fflush(stdin) 376 69. C/C++ 误区三:强制转换 malloc() 的返回值 380 70. C/C++ 误区四:char c = getchar(); 381 71. C/C++ 误区五:
检查
new 的返回值 383 72. C 是 C++ 的子集吗? 384 73. C和C++的区别是什么? 387 74. 无条件循环 388 75. 产生随机数的方法 389 76. 顺序表及其操作 390 77. 单链表的实现及其操作 391 78. 双向链表 395 79. 程序员数据结构笔记 399 80. Hashtable和HashMap的区别 408 81. hash 表学习笔记 410 82. C程序设计常用算法源代码 412 83. C语言有头结点链表的经典实现 419 84. C语言惠通面试题 428 85. C语言常用宏定义 450
高级C语言 C 语言编程要点
不多说了 直接上目录: 1. C 语言中的指针和内存泄漏 5 2. C语言难点分析整理 10 3. C语言难点 18 4. C/C++实现冒泡排序算法 32 5. C++中指针和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C中可变参数函数实现 38 8. C程序内存中组成部分 41 9. C编程拾粹 42 10. C语言中实现数组的动态增长 44 11. C语言中的位运算 46 12. 浮点数的存储格式: 50 13. 位域 58 14. C语言函数二维数组传递方法 64 15. C语言复杂表达式的执行步骤 66 16. C语言字符串函数大全 68 17. C语言宏定义技巧 89 18. C语言实现动态数组 100 19. C语言笔试-运算符和表达式 104 20. C语言编程准则之稳定篇 107 21. C语言编程常见问题分析 108 22. C语言编程易犯毛病集合 112 23. C语言缺陷与陷阱(笔记) 119 24. C语言防止缓冲区溢出方法 126 25. C语言高效编程秘籍 128 26. C运算符优先级口诀 133 27. do/while(0)的妙用 134 28. exit()和return()的区别 140 29. exit子程序终止函数与return的差别 141 30. extern与static存储空间矛盾 145 31.
PC
-
Lint
与C\C++代码质量 147 32. spirntf函数使用大全 158 33. 二叉树的数据结构 167 34. 位运算应用口诀和实例 170 35. 内存对齐与ANSI C中struct内存布局 173 36. 冒泡和选择排序实现 180 37. 函数指针数组与返回数组指针的函数 186 38. 右左法则- 复杂指针解析 189 39. 回车和换行的区别 192 40. 堆和堆栈的区别 194 41. 堆和堆栈的区别 198 42. 如何写出专业的C
头文件
202 43. 打造最快的Hash表 207 44. 指针与数组学习笔记 222 45. 数组不是指针 224 46. 标准C中字符串分割的方法 228 47. 汉诺塔源码 231 48. 洗牌算法 234 49. 深入理解C语言指针的奥秘 236 50. 游戏外挂的编写原理 254 51. 程序实例分析-为什么会陷入死循环 258 52. 空指针究竟指向了内存的哪个地方 260 53. 算术表达式的计算 265 54. 结构体对齐的具体含义 269 55. 连连看AI算法 274 56. 连连看寻路算法的思路 283 57. 重新认识:指向函数的指针 288 58. 链表的源码 291 59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 346 65. C指针讲解 352 66. 关于指向指针的指针 368 67. C/C++ 误区一:void main() 373 68. C/C++ 误区二:fflush(stdin) 376 69. C/C++ 误区三:强制转换 malloc() 的返回值 380 70. C/C++ 误区四:char c = getchar(); 381 71. C/C++ 误区五:
检查
new 的返回值 383 72. C 是 C++ 的子集吗? 384 73. C和C++的区别是什么? 387 74. 无条件循环 388 75. 产生随机数的方法 389 76. 顺序表及其操作 390 77. 单链表的实现及其操作 391 78. 双向链表 395 79. 程序员数据结构笔记 399 80. Hashtable和HashMap的区别 408 81. hash 表学习笔记 410 82. C程序设计常用算法源代码 412 83. C语言有头结点链表的经典实现 419 84. C语言惠通面试题 428 85. C语言常用宏定义 450 有需要的朋友可以根据需求下载,内容为WORD格式的,绝对清晰
工具平台和程序库
24,854
社区成员
27,343
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章