从Java程序猿到软件架构师(2):代码
导语:要想快速有效地优化自己的Java代码,静态检查工具必不可少。代码质量静态检查工具可以自动快速发现劣质代码,潜伏Bug,给出代码优化建议。因此代码静态检查工具在实际项目研发中有举足轻重的作用,利用好各种 检查工具是做好软件品质管理的重要环节。
秩序就是正确的规律和事物 的合理性。——菲尔丁
代码分析技术分为:
? 、静态分析:对程序代码的检查;
?第二、动态分析:程序运行时检查;
静态分析是在不履行程序的情况下对其进行分析的技术,简称为静态分析。静态分析可以被视为自动化代码审查进程,是检查瑕疵的最古老和最安全的方法。动态分析侧重于内存、性能和资源的检查。
静态分析技术原理静态分析技术原理和编译器的技术原理有很多类似之处,主要也是使用词法分析,语法分析,语意分析等分析技术对代码进行解析。但和编译器不一样的最主要区分是各种静态分析工具可以自定义各种各样的复杂规则。■静态分析特点
?不实际履行程序;
?履行速度快、效力高;
?全代码扫描;
■经常使用静态分析技术
种别
概述
运用场景
缺点模式匹配分析
缺点模式匹配事前从代码分析经验中搜集足够多的共性缺点模式,将待分析代码与已有的共性缺点模式进行模式匹配,从而完成软件的安全分析。
这类方式的优点是简单方便,但是要求内置足够多的缺点模式,且容易产生误报。
类型推断分析
类型推断分析是指通过对代码中运算对象类型进行推理,从而保证代码中每条语句都针对正确的类型履行。这类技术首先将预定义一套类型机制,包括类型等价、类型包括等推理规则,而后基于这1规则进行推理计算。
类型推断分析可以检查代码中的类型毛病,其特点是简单,高效,合适代码缺点的快速检测。
模型检验
模型检验建立于有限状态自动机的概念基础之上,这1理论将被分析代码抽象为一个自动机系统,并且假定该系统是有限状态的、或是可以通过抽象归结为有限状态。模型检验进程中,首先将被分析代码中的每条语句产生的影响抽象为一个有限状态自动机的一个状态,而后通过分析有限状态机从而到达代码分析的目的。
模型检验主要合适检验程序并发等时序特性,但是对数据值域数据类型等方面作用较弱。
数据流分析
数据流分析也是一种软件验证技术,这类技术通过搜集代码中援用到的变量信息,从而分析变量在程序中的赋值、援用和传递等情况。对数据流进行分析可以肯定变量的定义和在代码中被援用的情况,同时还能够检查代码数据流异常,如援用在前赋值在后、只赋值无援用等。
数据流分析主要合适检验程序中的数据域特性。
静态分析技术给我们带来的好处■静态分析技术可以给我们带来以下好处:
?1、帮助程序员自动履行静态代码分析,快速定位代码隐藏毛病和缺点。30%至70%的代码逻辑设计和编码缺点是可以通过静态代码分析来发现和修复的。下图是Bug在各个阶段发现的本钱示意图,由图可知单体测试是编码时的2倍,而集成测试是编码阶段的5倍!静态代码检查所进入的阶段是编码阶段,因此可以显著节省研发经费。
?2、提高软件的可靠性。
?3、节省软件开发和测试本钱。
■虽然静态分析技术可以带来以上好处,但是也有以下不足:
?1、会出现误报。代码静态分析是通过对程序扫描找到匹配某种规则模式的代码,从而发现代码中存在的问题。这类分析出的结果不完全正确,因此需要对分析出的结果逐一确认。
?2、不能够完全检查出项目质量管理中定义所有质量标准规范,需要结合实际,进行人工检查。
人工代码检查,是对自动化工具检查的补充。实际研发进程中一般要开品质管理会议,统一产品质量。每一个开发人员应当选取一个具有代表其水平的代码文件,交给架构师或品质管理员进行检查(review),以确认其质量水平。在人工检查之前,一般都要求程序员先用工具进行自我检查,再对工具不能检测出的质量标准项等(检查清单)进行检查。
经常使用重要静态分析工具经常使用重要静态分析工具一般有以下4种:
工具名称
所属组织
简介
特点
规则数
下载站
Checkstyle
SourceForge
Checkstyle通过检查对代码编码格式、命名规约、Javadoc、类设计等方面进行代码规范和风格的检查,从而有效束缚开发人员更好地遵守代码编写规范。支持用户根据需求自定义代码检查规范。
偏重于代码编写格式
北京白癜风治疗用什么方法白癜风能治么