发布时间:2025-07-31 10: 00: 00
品牌型号:联想 E550C ThinkPad
系统:Windows 11
软件版本:SonarQube Server 25
从Java 8到Java 21,编程语言的不断迭代更新,使得不同Java版本的项目开发语法会有许多不同。而新版SonarQube在扫描时要求Java版本不低于Java 17,这使得一些基于Java8、Java11开发的老旧项目无法被正常识别扫描,为实现这一要求,SonarQube提供了JDK自定义配置。下面将介绍SonarQube怎么兼容多个JDK,SonarQube配置规则如何进行,以实现Java项目的扫描支持。
一、SonarQube怎么兼容多个JDK
SonarQube支持在不同JDK版本下运行扫描Java项目,但SonarQube本身需要使用Java17或Java21启动,以下是实现SonarQube多JDK兼容的方法:
1、当分析项目的JDK版本与SonarQube的JDK版本不同时,需要手动指定分析器在分析期间引用的JDK 类。在项目扫描配置文件中,设置sonar.java.jdkHome为对应的jdk执行文件文件夹地址,如图所示指定扫描项目时使用jdk11。

2、仅仅配置JDK路径并不能让项目规则完全使用该Java版本的所述规则,如设置JDK11的情况下,Java 21的规则仍然生效,这会使得扫描出的结果可能会产生很多不必要的issues问题。
为此,还需要在配置中加入“sonar.java.source=11”的配置,该配置可以使得非Java 11版本的规则被禁用,即使规则正处于激活状态。

二、SonarQube配置规则
在SonarQube中配置规则,能帮助我们发现代码漏洞、安全热点和可维护性代码,对Java语言,配置规则主要由三大部分组成:SonarQube内置规则、Java插件规则、一般问题导入规则。
1、内置规则。在Rules页面左侧筛选Languages为Java,就可以看到Java已有的内置规则,在每条规则右侧都会标记规则对应的适用范围,如spring框架、java8版本、cert框架等,内置规则我们可以设置激活或取消激活,但无法自行更改规则内容。

2、插件规则。我们可以在“https://github.com/SonarSource/sonar-java/blob/8.0.0.36314/docs/CUSTOM_RULES_101.md”上查看自定义Java规则插件的相关要求和语法,下图是一个自定义规则的代码示例,规则通过注解指定规则名为“AvoidTreeList”,当发现tree引用TreeList时,通过reportIssue函数报告一个issues问题。

3、一般问题导入规则。如果大家通过第三方分析器分析出对应的代码问题,则可以将分析出的问题和对应的规则,以JSON文件导入到SonarQube中,JSON中包括规则列表和问题列表,问题与规则通过ruleId进行对应。
使用时只需在项目SonarQube配置中添加“sonar.externalIssuesReportPaths”的配置,并指定对应JSON文件路径即可。

通过本文介绍的SonarQube怎么兼容多个JDK,SonarQube配置规则方法,大家可以完美实现SonarQube对多JDK环境的兼容及与对应规则的匹配。SonarQube不仅提供了完善的默认规则集来覆盖大多数常见开发场景,还支持针对特定JDK版本进行灵活配置。另外对于项目中存在的自定义语法或功能,还可以以插件的形式实现规则支持。
展开阅读全文
︾
读者也喜欢这些内容:
SonarQube怎么管理项目权限 SonarQube项目权限继承关系怎么检查
在SonarQube里,项目权限这件事最容易被理解错的地方,不是按钮在哪里,而是“继承”到底指什么。按官方口径,项目创建时会先套用一套Permission Template,也就是模板默认权限;但模板套上去以后,项目和模板之间并不存在持续联动关系,后面你手工改项目权限、或者再去改模板,本来就不会自动互相跟着变。再加上SonarQube的项目权限本身又不是累加关系,所以很多人看到“模板明明给了权限,项目里却不对”,本质上往往是把“初始化套用”误当成了“持续继承”。...
阅读全文 >
SonarQube怎么使用maven SonarQube怎么使用Gitlab
SonarQube作为一款开源的代码质量管理平台,正在被越来越多的开发团队所采用,它不仅能帮助我们检测代码中的潜在问题,还能提供详细的代码质量报告,使团队能够持续改进代码质量。而如今很多Java项目会使用maven来构建,使用Gitlab来团队协作开发,如果能将SonarQube集成到maven和Gitlab中,将大大提高代码检测效率。下面就通过一篇文章,带大家学习SonarQube怎么使用maven,SonarQube怎么使用Gitlab。...
阅读全文 >
SonarQube是免费的吗 SonarQube是开源的吗
代码质量检测是代码上线前大部分公司需要经过的一个环节,它可以有效检测代码中的潜在BUG和安全漏洞,从而降低正式环境使用风险,提高软件可维护性。在众多代码质量管理工具中,SonarQube因为全面的检测能力和可视化报告成为很多开发人员的常用工具之一,不过在使用SonarQube前,我们需要明确两个关键问题:SonarQube是免费的吗,SonarQube是开源的吗?这些问题的答案不仅关乎企业成本预算,更直接决定软件是否可被商用,是否有违法风险。...
阅读全文 >
SonarQube质量门如何设置 SonarQube质量门条件阈值配置
SonarQube的质量门功能为我们提供了定义和强制执行代码质量标准的有效途径,它通过设置各项指标的合理检测阈值,帮助我们系统地检测代码质量并进行多项指标的量化评估,只有这些指标都符合预设标准,质量门才能顺利通过,从而确保交付的代码具备良好的可维护性、可靠性和安全性。在本文中,我们将一起学习SonarQube质量门如何设置,SonarQube质量门条件阈值配置,借助质量门为代码“保驾护航”。...
阅读全文 >