使用SpotBug进行静态代码检查
在运行程序前我们可以通过编译来发现问题,但这样是远远不够的。这是因为在编译期间仅捕获到非常小的错误范围,即语法错误,无效引用等。当程序包含编译错误时,IDE会发出警告,但它无法防范其他类型的错误,例如运行时错误或逻辑错误。通过使用静态分析工具SpotBugs,浏览代码以查找某些“已知的坏味道”:可能会导致偶发性/间歇性问题,性能不佳等的事物。这些问题很难通过测试找到,因此通过检查通常是唯一可行的.
在运行程序前我们可以通过编译来发现问题,但这样是远远不够的。这是因为在编译期间仅捕获到非常小的错误范围,即语法错误,无效引用等。当程序包含编译错误时,IDE会发出警告,但它无法防范其他类型的错误,例如运行时错误或逻辑错误。
通过使用静态分析工具SpotBugs,浏览代码以查找某些“已知的坏味道”:可能会导致偶发性/间歇性问题,性能不佳等的事物。这些问题很难通过测试找到,因此通过检查通常是唯一可行的方法。拥有一个可以自动执行这些检查的工具,以便可以在每次更改时进行检查,从而防止代码变得越来越差。
什么是静态分析
与查看源代码的Java编译器不同,静态分析会检查Java字节码(已编译的.class文件)是否存在错误模式。错误模式是一种经常容易出错的代码表达式/习惯用法。错误模式的产生可能有多种原因,其中包括:
- 错误使用编程语言的某些特性
- 误用的API方法
- 在维护期间修改代码时误解变量
- 错别字,使用错误的运算符等
SpotBugs定义了10个Bug模式:
- Bad practice 常见代码错误,违反推荐和基本编码规范。包括哈希代码和等号问题、可克隆的习惯用法、丢弃的异常、可序列化的问题和finalize的误用等。
- Correctness 可能的错误-一个明显的编码错误,导致代码可能不是开发人员想要的。
- Experimental 实验性和未经充分审查的错误模式
- Internationalization 与国际化和语言环境有关的代码缺陷
- Malicious code vulnerability 易受不可信代码攻击的代码
- Multithreaded correctness 与线程、锁和Volatile有关的代码缺陷
- Bogus random noise 伪随机噪声:用于数据挖掘实验中的控制,而不是用于发现软件中的实际错误
- Performance 不一定不正确但可能效率低下的代码
- Security 使用不受信任的输入,可能会造成可远程利用的安全漏洞。
- Dodgy code 混乱、异常或以导致错误的方式编写的代码。
更详细的内容可浏览官网介绍。
SpotBugs Eclipse插件
在Eclipse里安装SpotBugs插件很容易。在“Eclipse Marketplace”中搜索“ SpotBugs”。应该在列表顶部看到SpotBugs,然后一步步安装即可。最后需要重启下Eclipse。
SpotBugs 使用
在运行分析之前,让我们打开SpotBugs视图。
在“Windows-Show view-Others”中输入Bugs。选择两个SpotBugs视图,然后单击打开它们。
在Package Explorer中右键单击项目,然后从上下文菜单中选择SpotBugs-> Find Bugs。
分析结束后,结果将显示在Bug Explorer视图中。
SpotBugs包含有关每个问题的更多信息。要查看它,请右键单击该错误,然后从弹出菜单中选择“ Show Bug Info ”。这将在“Bug Info”视图中打开一个信息页面:
总结
在这篇文章中介绍了如何在Eclipse中安装静态分析工具,并配置和应用到我们的Java项目。尽管SpotBugs不会消除程序中的所有错误,但肯定会减少在生产中发现的错误数量。
更多推荐
所有评论(0)