基本介绍
lint是最著名的C语言工具之一,是由贝尔实验室SteveJohnson于1979在PCC(PortableC Compiler)基础上开发的静态代码分析,一般由UNIX系统提供。与大多数C语言编译器相比,lint可以对程序进行更加广泛的错误分析,是一种更加严密的编译工具。最初,lint这个工具用来扫描C源文件并对源程序中不可移植的代码提出警告。但是现在大多数lint实用程序已经变得更加严密,它不但可以检查出可移植性问题,而且可以检查出那些虽然可移植并且完全合乎语法但却很可能是错误的特性。
随着历史的推移,Lint后来形成了一系列的工具,包括PC-Lint/FlexeLint(Gimpel),LintPlus(Cleanscape)以及Splint。

1基本功能编辑

lint检查C程序中潜在的错误,包括(但不限于)可疑的类型组合、未使用的变量、不可达的代码以及不可移植的代码。lint会产生一系列程序员有必要从头到尾仔细阅读的诊断信息。使用lint的好处是:1.它可以检查出被编译器漏掉的错误; 2.可以关联很多文件进行错误的检查和代码分析,具有较强大灵活性.lint可以检查的错误类型大体如下:
  • 可能的空指针
  • 在释放内存后使用了指向该内存的指针
  • 赋值次序问题
  • 拼写错误
  • 被0除
  • 失败的case语句(遗漏了break语句)
  • 不可移植的代码(依赖了特定的机器实现)
  • 宏参数没有使用圆括号
  • 符号的丢失
  • 异常的表达式
  • 变量没有初始化
  • 可疑的判断语句(例如,if(x=0))
  • printf/scanf的格式检查

2系统版本编辑

UNIX系统 在UNIX系统中,可自动获得lint,它是一个标准的UNIX工具。
Linux系统 在Linux各种发行版中,使用lint的版本是GNU下的Splint(前身是LClint)
Windows 在Windows系统中,从第三方获得的lint工具的名称是PC lint以及Splint

3PC-lint编辑

PC-Lint简介

PC-Lint是GIMPEL SOFTWARE公司开发的C/C++软件代码静态分析工具,是一个历史悠久(30年之久)且功能异常强大的静态代码检测工具,它的全称是PC-Lint/FlexeLint for C/C++。PC-Lint能够在Windows、MS-DOS和OS/2平台上使用,以二进制可执行文件的形式发布,而FlexeLint运行于其它平台,以源代码的形式发布。PC-lint在全球拥有广泛的客户群,许多大型的软件开发组织(比如Miscrosoft )都把PC-Lint检查作为代码走查的第一道工序。对小公司和个人开发者而言,PC-Lint也非常的重要。小公司往往受到开发成本的考虑,不能对代码进行全面的测试。此时利用PC-Lint的强劲的功能可以很好的提高代码的质量。
C/C++语言的语法拥有其它语言所没有的灵活性,这种灵活性带来了代码效率的提升,

但相应也使得代码编写具有很大的随意性,另外C/C++编译器不进行强制类型检查,也不做任何边界检查,这就增加了代码中存在隐患的可能性。如果能够在代码提交测试之前发现这些潜在的错误,就能够极大地减轻测试人员的压力,减少软件项目的除错成本,可是传统的C/C++编译器对此已经无能为力,这个任务只能由专用的代码检查工具完成。而PL-lint就是这样的代码检查工具。PC-Lint不仅能够对程序进行全局分析,识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针以及冗余的代码,还能够有效地帮你提出许多程序在空间利用、运行效率上的改进点。在代码走读和单元测试之前使用PC-Lint可以提前发现程序中的隐藏错误,提高代码质量,节省测试时间;并提供编码规则检查,规范软件开发人员的编码行为。

PC-lint作用

PC-Lint的作用广泛,单单控制选项就300多个,涉及程序编译及语法使用中大方方面面。具体如下
  1. PC-Lint是一种静态代码检测工具,是一种更加严格的编译器,不仅可以检查出一般的语法错误,还可以检查出虽然完全符合要求,但是却可能存在潜在的,不易发现的错误
  2. PC-lint不仅可以检测单个文件,也可以从整个项目的角度来检测问题,因为C语言编译器固有的单个编译,这些问题在编译器环境下很难被检测,而PC-Lint在检查当前文件的同时还会检查所有与之相关的文件,可想而知,它会对我们有很大的帮助。
  3. PC-lint支持几乎所有流行的编辑环境和编译器,比如BorlandC++从1.x到5.x各个版本、Borland C++ Build、GCC、VC、watcom C/C++、Source insight、intel C/C++等等,也支持16/32/64的平台环境。支持Scott Meyes的名著(Effective C++/More Effective C++)中说描述的各种提高效率和防止错误的方法。
更多关于PC-Lint的介绍参考可以参考[1]的词条.
PC Lint告警消息分类
错误说明
C
C++
告警级别
 
1-199
1001-1199
1
语法错误
200-299
 
0
致命错误
300-399
 
0
告警
400-699
1400-1699
2
消息
700-800
1700-1899
3
可选信息
900-999
1900-1999
4
代码检查告警级别
w0 不产生信息(除了遇到致命的错误)
w1 只生成错误信息-- 没有告警信息和其它提示信息
w2 只有错误和告警信息
w3 生成错误、告警和其它提示信息(这是默认设置)
w4 生成所有信息
函数库头文件的告警级别
wlib(0) 不生成任何库信息
wlib(1) 只生成错误信息(当处理库的源代码时)
wlib(2) 生成错误和告警信息
wlib(3) 生成错误、告警和其它信息(这是默认设置)
wlib(4) 产生所有信息
一般代码检查功能
PC Lint能检查出代码的语法错误和可能引起程序异常执行的逻辑告警。但它更侧重于后者的检查,因为这类问题更容易被人忽略(前者通过平台编译器去发现)。所以它的代码检查功能通常表现在下面几方面:
强类型检查:强类型检查选项“-strong”和它的辅助(补充)选项“-index”可以对typedef定义的数据类型进行强类型检查,以保证只有相同类型之间的变量才能互相赋值
变量值跟踪:包括对变量值初始化,变量值,函数内变量这些情况进行跟踪,发现其中不符合语法规范的告警
赋值顺序检查:检查当一个表达式的值依赖于赋值的顺序时,是否会出问题
弱定义检查:检查当宏定义、typedef名字、声明、结构、联合和枚举类型这些东西可能在模块中被过多定义且不被使用的情况。
格式检查:检查printf和scanf(及其家族)中的格式冲突告警
缩进检查:检查代码中的缩进问题是为避免出现代码结构不良或者大括号的遗漏等问题
const变量检查
volatile变量检查

lint 代码审查工具相关推荐

  1. 代码审查工具 sonarqube 简介

    目录 1. 什么是SonarQube? SonarQube的功能 1.糟糕的复杂度分布 2.重复 3.缺乏单元测试 4.没有代码标准 5.没有足够的或者过多的注释 6.潜在的bug 7.糟糕的设计(原 ...

  2. 20最佳代码审查工具-专门为开发人员准备

    程序员总是面临最后期限的压力和很多延误软件设计相当不稳定,整个产品是不稳定的.这种不稳定性的设计软件的原因是,它是不能正常测试.来的工作代码审查工具.的代码审查工具可以帮助web开发人员指出他们哪些区 ...

  3. 代码审查工具【Review Board】在Windows环境下安装与配置

    前言 Review Board是基于Web的代码审查工具. 官方网站:https://www.reviewboard.org/ Review Board在Windows环境下安装是一件比较困难的事情, ...

  4. docker搭建upsource代码审查工具,通过gitlab检出项目

    docker搭建upsource代码审查工具,通过gitlab检出项目 机器配置 docker搭建upsource代码审查工具,通过gitlab检出项目 拉取镜像 创建挂载目录 启动容器 配置账号密码 ...

  5. Upsource 一个新的代码审查工具-安装使用指南

    为什么80%的码农都做不了架构师?>>>    Upsource 一个新的代码审查工具(Polyglot code review tool),Upsource安装.配置及使用介绍-- ...

  6. Phabricator是什么,代码审查工具

    Phabricator是什么? Phabricator支持两种代码审查工作流:"review"(提交前审查)和 "audit"(提交后审查). Phabrica ...

  7. docker运行gerrit(代码审查工具)

    gerrit是什么? Gerrit,一种免费.开放源代码的代码审查软件,使用网页界面. gerrit背景 Gerrit,一种免费.开放源代码的代码审查软件,使用网页界面.利用网页浏览器,同一个团队的软 ...

  8. android -------- Lint优化工具

    2019独角兽企业重金招聘Python工程师标准>>> 什么是 Lint Lint 是Android Studio 提供的 代码扫描分析工具,它可以帮助我们发现代码结构/质量问题,同 ...

  9. 代码审查工具StyleCop

    "代码审查"或是"代码评审"(Code Review),这是一个流程,当开发人员写好代码后,需要让别人来review一下他的代码,这是一种有效发现BUG的方法. ...

最新文章

  1. 安装python解释器
  2. PAT 1065 A+B and C[大数运算][溢出]
  3. C语言中实际参数太多,c – 宏的实际参数太多了?
  4. python九九乘法表矩形_python实现九九乘法表
  5. 【SAS NOTE】数组
  6. php点击按钮查询,管理界面点击按钮打开查询功能
  7. 利用反射判断初始化后的对象所有属性是否为空判断对象指定属性是否为空
  8. 15c语言语句_如何学好C语言判断语句?攻略if语句是第一步
  9. 2020-08-21 第一次面试小结
  10. 自定义图标——阿里图标库
  11. 蜂鸣器基本介绍及实现程序
  12. JAVA上传smartupload_java使用smartupload组件实现文件上传的方法
  13. (转)番茄时间管理法(Pomodoro Technique)
  14. foobar2000使用cue文件播放时出现Unable to open item for playback (Object not found):的问题解决
  15. SSRS 2008 冻结首行
  16. 【转】欧式空间与酉空间——概念区分
  17. 视频号如何上热门的几个指标:国仁楠哥
  18. 通过5个简单的步骤每天回收5个小时14
  19. 中小学计算机课程标准及解读,小学信息技术课课程标准及解读
  20. Python 金融量化 均线系统交易策略专题(简单移动平均,加权移动平均,指数加权移动平均,异同移动平均MACD等解读与绘图)

热门文章

  1. ​在分类中如何处理训练集中不平衡问题​
  2. Mattias Lasse:PDD-net in MICCAI
  3. 记录:百度地图开发 ios系统获取定位失
  4. iTab浏览器插件安装教程
  5. arcgis栅格按掩膜提取后unique value变多
  6. CE 学习资料(转别人的博客)
  7. 作文素材——八字短句
  8. 业务建模和概念模型设计
  9. PyTorch 深度学习实用指南:1~5
  10. 美国新研发的超级计算机,美国正在开发全球最快超级计算机:明年完成