找回密码
立即注册
搜索
发回帖 发新帖

6168

积分

0

好友

776

主题
发表于 1 小时前 | 查看: 6| 回复: 0

Java 代码质量管控一直是团队开发中的老大难。PMD、SpotBugs、Checkstyle 这类工具大家都不陌生,但它们顶多列出一串问题清单,哪些是致命的、哪些可以先放一放、修复优先级怎么排,基本靠开发者自己判断。想搭一套完整的评审平台,往往要独立服务器、数据库和专人运维,功能还受限,中文支持也一般。

项目介绍

这个平台的定位很明确:开箱即用的 Java 代码质量评审工具。看到这里可能有人会问,SonarQube 不是已经有了吗?为什么还要再做一套?其实它瞄准的不是大而全的多语言市场,而是聚焦 Java 生态,把单 JAR 离线交付和内网全闭环做到极致。

它解决的痛点非常具体。评审工具部署太重、小团队扛不住;PMD 这类工具只给问题清单,没有评分、门禁和可视化报告;AI 编码助手各自为战,模型无法统一管理,和静态分析结果打不通;国内环境还有内网隔离、信创数据库、国产大模型、中文汇报材料等额外诉求。它的思路很直接:用一个 JAR 或一个容器,把扫描、评分、门禁、报告、CI 阻断、邮件推送的完整闭环直接塞进内网环境。内嵌 H2 数据库,开箱即用,完全离线运行。

项目优势

单 JAR 单容器交付,内嵌数据库,零外部依赖。 整个 JAR 包大约 86MB,内置 17 种数据库驱动和中文字体,只要有 JRE 17 以上环境就能跑。首次启动会自动初始化 data、work、logs 三个目录,内嵌 H2 自动建表,不用额外安装数据库或配置连接。Docker 镜像也是单容器交付,内置 Noto CJK 和文泉驿中文字体,非 root 运行,带 HEALTHCHECK 和优雅停机。

完全离线运行,适配内网和信创环境。 全功能离线可用,AI 语义评审只是可选增强,不联网也能完成从扫描到报告的全流程。同时内置达梦、人大金仓、openGauss、瀚高、海量、崖山等信创数据库驱动,一共支持 18 类数据库。

六大质量域,19 个内置检查器。 基于 JavaParser AST加符号求解和ASM字节码分析,本地引擎完全离线运行。覆盖范围比较全面:缺陷检测里的空指针引用链路追踪、资源泄露、空 catch 吞异常;安全扫描里的 SQL 注入、命令注入、路径穿越、不安全反序列化、XXE、SSRF、硬编码密钥、弱加密算法;架构约束里的跨层直连 DAO、反向依赖、实体泄漏出接口边界;并发风险里的单例 Bean 共享可变状态、静态 SimpleDateFormat 线程不安全、双重检查锁缺 volatile;还有风格与冗余检查,以及依赖漏洞扫描——解析 pom.xml 和 build.gradle 依赖树,内置 CVE 漏洞库离线比对。

SonarQube 式五级评分与质量门禁。 BLOCKER、CRITICAL、MAJOR、MINOR、INFO 五级分类,每级扣分权重、通过分数线、评级分界都可以在页面上自定义,保存即时生效。评分公式为 score = 100 - 数量 × 权重 的总和,门禁条件是 BLOCKER 不超过限额且 score 不低于 80。还附带技术债估算,比如 8 小时 55 分,让修复排期有据可依。

AI 深度评审可选。 OpenAI 兼容和 Anthropic 双协议适配层,内置 12 个厂商模板,包括百炼、方舟、DeepSeek、Kimi、智谱、千帆、Gemini、Claude、Ollama 等,API Key 使用 AES 加密存储。单条问题支持 AI 增强建议,会给出问题分析、修复方案和修复代码,也支持批量深度评审和实时进度展示。

报告与邮件推送。 HTML 和 PDF 中文报告一键导出,内嵌中文字体,不会出现乱码。多 SMTP 发件配置,支持 SSL 和 STARTTLS,可以测试发信,授权码也是 AES 加密的。扫描或 CI 触发器勾选邮件通知后,扫描完成自动推送 HTML 摘要正文加 PDF 报告附件,失败也会发通知,送达状态在扫描历史里可见。

CI/CD 集成。 Webhook触发扫描,按平台约定校验 HMAC 签名,完成后自动回写 commit status 和 MR/PR 评论,流水线按门禁结论阻断合并。支持 GitHub、GitLab、Gitee 和自建平台,也支持私有仓库凭据。

技术栈

层次 选型
后端 Spring Boot 3.2.5 · Java 17 · MyBatis-Plus 3.5.5 · H2 内嵌 + 17 种驱动内置 · 动态多数据源
静态分析 JavaParser 3.25(AST + 符号求解)· ASM 9.6 · 自研 CPD 式重复代码指纹
AI 接入 OpenAI 兼容 / Anthropic 双协议适配层
报告与邮件 OpenPDF(矢量中文 PDF)· Thymeleaf HTML 报告 · Spring Mail
安全 JWT · BCrypt · AES 配置加密 · OAuth2 远端认证
前端 Thymeleaf SSR · 原生 JavaScript · 零 CDN
部署 单 JAR · Docker 多阶段(内置中文字体、非 root、HEALTHCHECK)

核心功能介绍

核心扫描引擎

六大质量域不是摆设,每个域都有具体规则。

缺陷检测方面,空指针引用链路追踪会沿着调用链一路查下去,找到真正可能出问题的地方,而不是简单报一个空指针;资源泄露检查会跟踪流、连接、文件句柄的创建和释放;空 catch 吞异常也能精准识别。

安全扫描覆盖 SQL 注入、命令注入、路径穿越等常见 Web 漏洞,还有不安全反序列化、XXE、SSRF 等容易被忽略的高危问题。硬编码密钥和弱加密算法检查也很实用。

架构约束检查是个亮点。跨层直连 DAO、反向依赖、实体泄漏出接口边界,这些平时靠 code review 很难全面覆盖,工具一扫就全出来了;对微服务架构或分层复杂的项目价值很大。

并发风险检查针对的都是开发者的痛点:单例 Bean 共享可变状态、静态 SimpleDateFormat 线程不安全、双重检查锁缺 volatile。风格与冗余检查包括命名规范、魔法数字、超长行和方法、TODO 残留、CPD 式重复代码检测,重复代码检测使用自研指纹算法。依赖漏洞扫描会解析 pom.xml 或 build.gradle 的依赖树,和内置 CVE 漏洞库做离线比对,不联网也能知道开源组件有没有已知漏洞。

评分和门禁系统

评分和门禁是核心竞争力。五级分类权重可以根据团队实际情况调整,比如觉得 CRITICAL 更重要就调高权重;通过分数线和评级分界也可配置,保存后立即生效。门禁条件支持组合判断,比如 BLOCKER 不超过多少个,同时总分不低于多少分,两个条件同时满足才算通过。技术债估算会根据问题数量和复杂度估算修复小时数,让排期心里有数。

AI 深度评审

这个功能可选。选一条问题,点 AI 增强建议,会分析问题出在哪里、为什么会有这个问题、应该怎么修复,甚至直接给出修复后的代码示例。批量深度评审时进度条实时滚动,体验不错。不想用 AI 的话关掉就行,不影响基础功能。

报告与邮件推送

HTML 报告打开就能看,PDF 报告可以直接导出存档。邮件通知扫描完自动发给相关人,失败也发通知,不会出现扫完没人知道的情况。收件人可以在系统里管理,SMTP 配置支持测试发信,配好后点一下测试邮件就知道通不通。

CI/CD 集成

Webhook 触发扫描非常方便。GitHub、GitLab、Gitee 这些主流平台都支持,配好 Webhook 后每次提交或 PR 都会自动触发。扫描完成后自动回写 commit status,PR 下面自动留评论说明扫描结果,流水线根据门禁结论决定是否阻断合并,整个流程全自动。

快速安装

前置要求

  • 环境:JRE 17 及以上版本
  • 系统:Windows / Linux / MacOS 均支持
  • 资源:测试环境建议至少 2 核 4G 内存

操作步骤

  1. 编译程序,生成 jar 包文件。
  2. 在服务器上新建一个空目录,把下载好的 jar 包放到该目录下。
  3. 打开终端,进入该目录,执行启动命令:
java -jar xxx.jar

如果需要后台常驻运行(Linux 生产测试),可以用 nohup 方式:

nohup java -jar xxx.jar > app.log 2>&1 &
  1. 首次启动,程序会自动在当前目录生成 data、work、logs 三个文件夹,自动初始化内置 H2 数据库,无需手动建库。
  2. 启动成功后,浏览器访问 http://127.0.0.1:8080。默认账号密码:管理员账号 admin / 123456,只读查看账号 view / 123456。

UI 展示

仪表盘

Java 代码质量平台仪表盘 - 扫描任务与问题概览

代码质量平台扫描趋势与问题分布

Code quality dashboard with scan trend and issue distribution

代码扫描

新建扫描页面 - 上传 ZIP 工程

扫描历史记录列表

学生管理代码扫描报告 - 质量评分与门禁

AI 增强建议修复代码示例

代码评审报告

代码评审报告概览 - 质量评分与问题统计

质量评审

检查器配置页面 - 19 个内置检查器

评审规则配置列表

忽略规则管理页面

质量门禁配置与近期扫描结果

系统管理

CI/CD 集成 - 触发器配置

新建 Webhook 触发器

CI/CD 扫描记录

数据库配置 - 内置 H2 与外部数据源

AI 厂商配置 - 大模型模板

如果你也在做 Java 项目质量治理,不妨去 云栈社区 看看更多开发者的实践分享。




上一篇:EDUSRC 脆弱资产收集与统一身份认证绕过:Google语法、手册与验证码逻辑
下一篇:缓存命中率 99.82%:终端 AI 代理的 DeepSeek API 省钱法
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-10-6 02:56 , Processed in 0.079137 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表