使用SpotBug进行静态代码检查

在运行程序前我们可以通过编译来发现问题,但这样是远远不够的。这是因为在编译期间仅捕获到非常小的错误范围,即语法错误,无效引用等。当程序包含编译错误时,IDE会发出警告,但它无法防范其他类型的错误,例如运行时错误或逻辑错误。

通过使用静态分析工具SpotBugs,浏览代码以查找某些“已知的坏味道”:可能会导致偶发性/间歇性问题,性能不佳等的事物。这些问题很难通过测试找到,因此通过检查通常是唯一可行的方法。拥有一个可以自动执行这些检查的工具,以便可以在每次更改时进行检查,从而防止代码变得越来越差。

什么是静态分析

与查看源代码的Java编译器不同,静态分析会检查Java字节码(已编译的.class文件)是否存在错误模式。错误模式是一种经常容易出错的代码表达式/习惯用法。错误模式的产生可能有多种原因,其中包括:

  • 错误使用编程语言的某些特性
  • 误用的API方法
  • 在维护期间修改代码时误解变量
  • 错别字,使用错误的运算符等

SpotBugs定义了10个Bug模式:

  1. Bad practice 常见代码错误,违反推荐和基本编码规范。包括哈希代码和等号问题、可克隆的习惯用法、丢弃的异常、可序列化的问题和finalize的误用等。
  2. Correctness 可能的错误-一个明显的编码错误,导致代码可能不是开发人员想要的。
  3. Experimental 实验性和未经充分审查的错误模式
  4. Internationalization 与国际化和语言环境有关的代码缺陷
  5. Malicious code vulnerability 易受不可信代码攻击的代码
  6. Multithreaded correctness 与线程、锁和Volatile有关的代码缺陷
  7. Bogus random noise 伪随机噪声:用于数据挖掘实验中的控制,而不是用于发现软件中的实际错误
  8. Performance 不一定不正确但可能效率低下的代码
  9. Security 使用不受信任的输入,可能会造成可远程利用的安全漏洞。
  10. Dodgy code 混乱、异常或以导致错误的方式编写的代码。

更详细的内容可浏览官网介绍。

SpotBugs Eclipse插件

在Eclipse里安装SpotBugs插件很容易。在“Eclipse Marketplace”中搜索“ SpotBugs”。应该在列表顶部看到SpotBugs,然后一步步安装即可。最后需要重启下Eclipse。

使用SpotBug进行静态代码检查_第1张图片

SpotBugs 使用

在运行分析之前,让我们打开SpotBugs视图。

在“Windows-Show view-Others”中输入Bugs。选择两个SpotBugs视图,然后单击打开它们。

使用SpotBug进行静态代码检查_第2张图片

在Package Explorer中右键单击项目,然后从上下文菜单中选择SpotBugs-> Find Bugs。

分析结束后,结果将显示在Bug Explorer视图中。

使用SpotBug进行静态代码检查_第3张图片

SpotBugs包含有关每个问题的更多信息。要查看它,请右键单击该错误,然后从弹出菜单中选择“ Show Bug Info ”。这将在“Bug Info”视图中打开一个信息页面:

使用SpotBug进行静态代码检查_第4张图片

总结

在这篇文章中介绍了如何在Eclipse中安装静态分析工具,并配置和应用到我们的Java项目。尽管SpotBugs不会消除程序中的所有错误,但肯定会减少在生产中发现的错误数量。

你可能感兴趣的:(program)