前言:谈谈Java的历史,Java诞生至今已经超过25年了,但它仍然是现代软件开发中最受欢迎的语言之一,java语言的需求源于平台的适应性和广泛的API集合,所以许多开发团队仍然认识到这些好处并选择Java,因此对专业开源的Java代码review工具的需求仍然是非常迫切的。
自动化的代码审计可以显著地提高代码的质量,同时也增强了软件对安全威胁的抵抗力。此外,静态代码审查人员还可以增加手动审查时间,以创建一个健壮的流程来增加代码的优化。在代码审查过程中,提供了良好的实践方案和实现流程。
虽然有许多Java代码检查工具,但在下面的推荐工具列表中,它们是开源的,并且好用强大,并且与许多Java应用程序兼容,无论APP,Web,Application。考虑到这一点,推荐这7个好用的Java代码审查工具,它们具有很方便的好处。
0x00、JArchitect java审计工具
下载地址:
https://www.jarchitect.com/
静态Java源代码分析工具JArchitect会评估Java代码的复杂性。它提供了一些功能,如代码查询、启用自定义代码、平台使用评估以确定修复代码漏洞的成本(与不修复代码漏洞的风险)以及通过代码审计检验过程。该工具还提供了代码标准的度量和统计分析。
除了这些功能之外, JArchitect工具还可以识别代码度量,如算出代码复杂度(可能执行路径的数量)、源代码行、代码传入(传入)和传出(传出)耦合、嵌套和深度。该软件还会生成报告,帮助找到可能出现的代码漏洞。
0x01、PMD Java审计工具
下载地址:
https://pmd.github.io/
PMD是一个通过Github发布的免费、开源、静态代码审查工具。 这个Java评审工具的功能包含评估java源代码的完整性,它还会报告一些降低代码效率的常见错误,发现出重复或不需要的代码部分和变量和不必要的对象。PMD工具还可以检测出可能危及安全性的硬编码代码或密码认证漏洞。
删除冗余的不必要的Java应用程序中的重复代码可以使程序运行得更快,并为减少了审查人员手动找出冗余代码提供了二次检查和保证。该工具还有一个知名的复制粘贴检测工具CPD(copy-paste-detector),包含支持Java、Python、MATLAB、Fortran、C、C++和C#等。 PMD是一个源代码分析工具。它可以发现了常见的代码漏洞,如未使用的变量、空的try语句、冗余的对象创建等等。它支持Java, JavaScript, Salesforce.com Apex和Visualforce, PLSQL, Apache Velocity, XML, XSL的源码审计。
Linux可以直接安装,以下代码:
$ cd $HOME $ wget https://github.com/pmd/pmd/releases/download/pmd_releases%2F6.49.0/pmd-bin-6.49.0.zip $ unzip pmd-bin-6.49.0.zip $ alias pmd="$HOME/pmd-bin-6.49.0/bin/run.sh pmd" $ pmd -d /usr/src -R rulesets/java/quickstart.xml -f text
0x02、FindBugs Java审计工具
下载地址:
https://findbugs.sourceforge.net/
下载地址:
https://spotbugs.github.io/
开源Java代码审计工具FindBugs是免费的,同样是代码静态分析工具,该工具扫描Java代码以发现代码部分中的缺陷和漏洞、逻辑前后不一致和安全威胁。FindBugs会标出警告,允许开发人员自行检查消息,以确定是否需要采取recode措施。开发人员可以单独或批量处理Java代码审查工具中的警告消息。FindBugs需要JRE 1.7.0或更高版本来运行和分析从1.0到1.8的任何版本的Java。
SpotBugs工具是FindBugs的新版本。和最初的版本一样,SpotBugs会发出警告,开发人员可以选择是否采取reprogram。SpotBugs在警告部分列出了更多的性能问题和Java代码缺陷;因此,并非所有审计结果都需要更改。所以,为了帮助开发人员做出决策,该工具将结果分为四类,:“需要关注的”、“严重的”、“危险的的”和“最严重的”。
0x03、Checkstyle Java审计工具
下载地址:
https://checkstyle.sourceforge.io/
Checkstyle是另一个免费的、用于检查Java源代码的开源工具。该工具可以定位于解决类设计不兼容、方法设计问题以及代码布局和格式错误。Checkstyle可以在网站Sourceforge上找到,并且需要Java 1.8才能运行。注意它不向后兼容旧版本的Java。
可以看到这个工具并不是够综合,但是够专一,所以为了减轻单一代码检查工具的局限性,Checkstyle通常与FindBugs和PMD结合使用,以实现更强大专业的Java代码审计过程。
0x04、SonarLint Java审计工具
下载地址:
https://www.sonarqube.org/sonarlint/
SonarLint是另一个免费的开源Java代码检查工具,它根据自己的标准来检查代码以评估质量。 该工具更适用于定位安全漏洞,并提供报告,和显示重复代码、给出代码复杂性和比较代码标准。SonarQube还具有多种功能,可使用在除Java外的26种编程语言。
SonarLint提供了人性化的用户界面仪表板,以方便使用,并提供维护代码审查分析的记录,以便开发人员可以不断提高Java代码质量。
0x05、Graudit Java审计工具
下载地址:
https://github.com/wireghoul/graudit
Graudit代码审查工具支持Java和其他各种语言,如Python、Perl、. net、C和PHP等十多种。它提供脚本和采取漏洞库来帮助开发人员找出Java代码中的潜在安全漏洞。此外,该工具合并了一个广泛的已知缺陷数据库,以便与源代码进行比较,并在源代码与数据库模式匹配时调用正则匹配。Graudit可以在Github上找到,并会受到定期维护和更新。
Graudit允许用户添加自己数据库,以便对源代码进行分析,并一次比较多个或单个源代码文件。它具有很强的可移植性和灵活性,提供友好的用户体验,并且比许多其他工具对技术和计算的要求更低。这种灵活性允许Graudit工具在全平台上使用。
用法基础命令:
Graudit支持多种选项,可以运行graudit -h来得到下面的帮助选项列表。这是使用graudit最简单的方法:
graudit [opts] /path/to/scan OPTIONS -d <dbname> database to use or /path/to/file.db (uses default if not specified) -A scan unwanted and difficult (ALL) files -x exclude these files (comma separated list: -x *.js,*.sql) -i case in-sensitive scan -c <num> number of lines of context to display before and after a match, default is 1 -B suppress banner -L vim friendly lines -b colour blind friendly template -z suppress colors -Z high contrast colors -l lists databases available -v prints version number -h prints this help screen
0x06、Snyk Java审计工具
下载地址:
https://snyk.io/product/snyk-code/
Snyk Code是一款新颖的静态Java代码审查工具,可以在开发人员编写代码时对Java源代码的安全漏洞进行漏洞分析。此工具可快速执行自动安全代码审查,在过程中很少有误报。
Snyk的静态应用软件安全审计(SAST)工具比其他工具更有效,并且使用语义分析更快地发现更多漏洞,从而加快代码审计。这使得开发团队可以在不影响速度的情况下提高安全性,其他SAST工具受限于长时间的扫描时间和较低的准确性。所以,Snyk Code目的是在开发人员在部署之前在他们的本地中编写代码时,就可以找出漏洞,为漏洞修复提供有效和可行的建议。
0x07、总结
本文给出了上面的所有好的Java审计工具和基本使用方法,和各自特点,并且以上都很好用,都很优秀,如果能好好使用,可以让工作效率大大增加。