SonarQube中文网站 > 技术问题 > SonarQube怎么兼容多个JDK SonarQube配置规则

SonarQube怎么兼容多个JDK SonarQube配置规则

发布时间: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。

指定jdkHome
图1:指定jdkHome

2、仅仅配置JDK路径并不能让项目规则完全使用该Java版本的所述规则,如设置JDK11的情况下,Java 21的规则仍然生效,这会使得扫描出的结果可能会产生很多不必要的issues问题。

为此,还需要在配置中加入“sonar.java.source=11”的配置,该配置可以使得非Java 11版本的规则被禁用,即使规则正处于激活状态。

指定Java源版本
图2:指定Java源版本

二、SonarQube配置规则

SonarQube中配置规则,能帮助我们发现代码漏洞、安全热点和可维护性代码,对Java语言,配置规则主要由三大部分组成:SonarQube内置规则、Java插件规则、一般问题导入规则。

1、内置规则。在Rules页面左侧筛选Languages为Java,就可以看到Java已有的内置规则,在每条规则右侧都会标记规则对应的适用范围,如spring框架、java8版本、cert框架等,内置规则我们可以设置激活或取消激活,但无法自行更改规则内容。

内置规则
图3:内置规则

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

插件规则
图4:插件规则

3、一般问题导入规则。如果大家通过第三方分析器分析出对应的代码问题,则可以将分析出的问题和对应的规则,以JSON文件导入到SonarQube中,JSON中包括规则列表和问题列表,问题与规则通过ruleId进行对应。

使用时只需在项目SonarQube配置中添加“sonar.externalIssuesReportPaths”的配置,并指定对应JSON文件路径即可。

一般问题规则
图5:一般问题规则

通过本文介绍的SonarQube怎么兼容多个JDK,SonarQube配置规则方法,大家可以完美实现SonarQube对多JDK环境的兼容及与对应规则的匹配。SonarQube不仅提供了完善的默认规则集来覆盖大多数常见开发场景,还支持针对特定JDK版本进行灵活配置。另外对于项目中存在的自定义语法或功能,还可以以插件的形式实现规则支持。

展开阅读全文

标签:

读者也访问过这里:
SonarQube
从一开始就生成高质量的代码
立即购买
最新文章
SonarQube是代码测试工具吗 SonarQube如何配置SAML
软件代码质量管理从以前到现在经历了翻天覆地的变化,从最初的手工代码审查,到自动化测试工具的出现,再到如今SonarQube等综合检测应用的兴起,软件代码检测越来越正规、专业,带来的是软件市场水平整体的提高。并且SonarQube平台后续还支持通过SAML协议单点登录,大大便利了各大企业内部使用,成为如今众多企业进行代码检测的主要工具。那么SonarQube是代码测试工具吗,SonarQube如何配置SAML,接下来一起来了解一下。
2025-09-22
SonarQube分支分析是什么 SonarQube分支扫描配置与差异报告生成方法
在团队协作开发项目中,多分支并行开发已成为常态,每个不同的团队成员各自负责一部分功能或模块开发,最终由团队Leader统一审阅代码并合并分支。在此过程中,如何把控分支代码质量是一项重难点工作,如果全部代码由Leader人为查看,很容易出现错漏,因此常常需要结合SonarQube等带有分支分析的自动化代码检测工具进行。本文将重点向大家说明SonarQube分支分析是什么,SonarQube分支扫描配置与差异报告生成方法,帮助大家解决这一难点。
2025-09-22
SonarQube代码扫描如何启动 SonarQube代码扫描参数配置步骤
SonarQube提供的代码质量检测功能,在当今“两天一个版本”的快节奏开发环境中,已从“锦上添花”变成了“开发必需”,让我们摆脱传统的“先上线再修复”的恶性循环,它能在代码提交后精准捕捉潜在漏洞和安全问题,将质量问题扼杀在萌芽阶段。检测前我们需先启动扫描程序,下面讲解一下SonarQube代码扫描如何启动,SonarQube代码扫描参数配置步骤。
2025-09-22
SonarQube代码扫描显示cwe吗 SonarQube代码扫描怎么手动上传
互联互通的网络时代,安全性成为软件的主要检测项目之一,越多人使用的应用,它的安全性就越需要被保障,因为任何潜在的漏洞都可能被恶意利用,导致数据泄露、服务中断甚至更严重的系统性风险。因此,我们需要使用SonarQube等检测工具,它们既能帮助开发团队在早期发现代码BUG,还能识别CWE标准的安全漏洞。本文将详细回答大家关于SonarQube代码扫描显示cwe吗,SonarQube代码扫描怎么手动上传的疑问,帮助大家提升代码质量与安全等级。
2025-09-22
SonarQube扫描检测不到新代码 SonarQube扫描规则和检查点
SonarQube的代码扫描主要分为旧代码扫描和新代码扫描两部分,并会在报告中清晰呈现新代码与旧代码的对比分析结果,利用新旧代码的区分,帮助我们将注意力更多放在新代码中,而不被历史遗留问题分散注意力。但是,根据SonarQube设置不同,大家可能会遇到新代码未被正确识别或扫描规则和检查点未正确匹配等情况,因此本文将深入探讨SonarQube扫描检测不到新代码,SonarQube扫描规则和检查点的问题,确保大家得到的扫描结果全面可靠。
2025-09-22
SonarQube扫描原理 SonarQube扫描一定要先build么
什么是静态代码分析?静态代码分析指无需运行代码便可通过分析、检查代码的语法、结构、依赖等来检查代码的正确性,SonarQube的代码检测功能正是建立在静态代码分析原理之上。既然是分析静态代码,那SonarQube扫描前需要先编译代码吗?这个问题看似简单,实际涉及SonarQube扫描底层原理。想要获取正确代码检测结果,建议读者一起跟随本文,了解SonarQube扫描原理,SonarQube扫描一定要先build么的问题答案。
2025-09-22

读者也喜欢这些内容:

咨询热线 18015636924