程序员离不开代码检查,有的是技术团队是每周五进行一次代码审核,有的团队是用Review Board等工具进行Code Review。有的团队是先用工具进行代码的静态分析,再进行人为的Code Review。
下面我们总结了 代码静态分析工具、代码审核工具、代码质量管理平台、iOS分析工具。包含了java等服务端的工具,还有iOS的工具。
一、代码静态分析
静态分析 是指在不运行代码的条件下,进行代码分析。
静态分析 可以是标示可能的错误代码,或者不符合规范的代码。
比如 规范要求每个方法名首字母要小写,然后你写成了大写,静态分析工具就能分析出来。
java等服务端代码可以用:
1、Checkstyle :通过检查对代码编码格式,命名约定,Javadoc,类设计等方面进行代码规范和风格的检查,从而有效约束开发人员更好地遵循代码编写规范。
2、FindBugs :通过检查类文件或 JAR 文件,将字节码与一组缺陷模式进行对比从而发现代码缺陷,完成静态代码分析。FindBugs 既提供可视化 UI 界面,同时也可以作为 Eclipse 插件使用。
3、PMD :通过其内置的编码规则对 Java 代码进行静态检查,主要包括对潜在的 bug,未使用的代码,重复的代码,循环体创建新对象等问题的检验。
二、代码审核工具
Code Review也就是代码审核。代码审核工具最大的意义在于:只有经过别人审核通过的代码才能提交到 git或者svn的服务端。这样就保证了代码的水准。
常用的代码审核工具:Review Board、Github 、Codestriker、Groogle 、Rietveld、JCR等。
三、代码质量管理平台
常用的:SonarQube,可以检测下面的问题:
1、糟糕的复杂度分布
文件、类、方法等,如果复杂度过高 将难以改变,并很容易出现问题。
2、重复
sonar可以展示源码中重复严重的地方
3、缺乏单元测试
统计单元测试覆盖率
4、没有代码标准
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写
5、没有足够 的 或者过多 的注释
没有注释将使代码可读性变差,过多的注释是冗余的
6、潜在的bug
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的bug
7、糟糕的设计
通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系
可以检测自定义的架构规则
检测耦合
四、
iOS的静态检测(不能检测代码规范)
1、Facebook Infer
Facebook 称该工具帮助其每个月检查出数百个应用中潜在的 Bug,例如一些空指针访问、资源和内存泄漏等等
2、Clang Static Analyzer
3、使用Uncrustify 格式化 Xcode代码