更新日志
本页与 GitHub / Gitee Releases 同步维护,发版后由站点后台一键更新下载直链
Latest
v2.0.7
v2.0.7
发布于 · 企业统一认证版本:对接企业登录中心,检查更新双源兜底
本次版本新增企业统一认证(SSO):支持票据回调与受信网关头两种接入方式,管理员白名单与认证源的管理员标记共同决定角色,可在只保留统一认证入口时关闭本地登录,并留有一键恢复本地登录的破窗参数。「检查更新」在 GitHub 不可达时自动改查 Gitee,同版本号但安装包被重新上传时给出提醒;另修复 9 项安全与稳定性问题。新增两张表,旧库首次启动自动补建,直接覆盖 jargus.jar 即可。
新增:企业统一认证(SSO)
- 两种接入方式:票据回调(企业登录后回调
/sso/entry?ticket=…,校验接口返回用户名与管理员标记)或受信网关头(X-Auth-User / X-Auth-Admin,可附加共享密钥)
- 角色规则:管理员白名单或认证源的管理员标记为管理员,其余统一为只读角色
- 本地登录可关闭:「系统管理 → 统一认证」可只保留企业入口;SSO 配置不可用时自动恢复本地登录,另有
--app.sso.reset-local-login=true 破窗启动参数
- 安全:只信任 TCP 直连的受信代理(IP / CIDR,默认仅本机),不采信
X-Forwarded-For;登录失败限流 20 次 / 15 分钟;共享密钥 AES 加密落库
改进:检查更新
- 双源兜底:GitHub 不可达时自动改查 Gitee,设置页标注当前来源
- 同版本安装包重发提醒:版本号相同但 jar 不同(SHA-256 → 附件大小 → Content-Length)时提示,可忽略,对方再次上传后重新提醒
- 管理员导航圆点提示;远端发布说明只保留安全协议链接
安全加固
- 快照复制与扫描不再跟随符号链接,避免仓库内链接把本机敏感文件读入快照
- 问题上下文只允许读取快照目录内的文件,
../ 与绝对路径不再生效
- CI Webhook 验签直接对请求体原始字节计算 HMAC
/api/** 不再因后缀与静态资源相同而免登录
- 登录回跳地址按 URL 解析比对同源,只回跳 path / query / hash
稳定性
- 分页页码下限 1、每页上限 200,避免超大 size 全表加载
- 单元测试超时结束整棵进程树,不再残留 surefire JVM / Gradle daemon
- 驱动上传显式关闭文件流;远端登录 configId 非法返回 400
升级须知
- 新增
sso_config、update_artifact_dismissal 两张表,旧库首次启动自动补建,覆盖 jar 即可
- 网关头模式需把网关出口地址加入
app.security.trusted-proxies(默认 127.0.0.1,::1)
- 检查更新开关:
app.update-check.enabled / timeout-ms / match-artifact;加密密钥、Cookie、CI Token 与 v2.0.0 起一致
v2.0.6
v2.0.6
发布于 · 误报治理专项版本:注解代码、编译器生成方法与框架反射调用点不再被误判
本次版本聚焦静态检查器误报治理:死代码检测排除 @Scheduled/@PostConstruct/@Test 等 31 种框架注解方法与 lambda 体/合成访问器/桥方法等编译器生成方法,方法引用 Foo::bar 算作使用;魔法数字、System.out、废弃方法调用、并发问题、命名规范五类检查器的豁免规则对齐业界惯例。不新增规则类型,历史任务重扫后问题清单会相应减少(预期行为),直接覆盖 jar 即可。
死代码检测(未使用方法)
- 框架反射调用的方法自动豁免:@Scheduled、@PostConstruct/@PreDestroy、@EventListener、@KafkaListener/@RabbitListener/@JmsListener 等消息监听、@Bean、@ExceptionHandler、AspectJ 通知、JUnit 测试方法、Jackson 序列化回调共 31 种注解
- 编译器生成方法(lambda 体
lambda$x$0、合成访问器 access$000、桥方法)在字节码与 AST 两条路径均排除,lambda 体内的真实调用边仍正常入图
- 方法引用算作使用:解析 invokedynamic 的 bootstrap 方法句柄补齐调用边,
Foo::bar 不再被误报死代码
检查器误报治理
- 魔法数字:
@Size(max=500) 等注解属性数字与 @interface 成员默认值是框架配置语义,不再报告
- System.out:main 方法(CLI 入口)与测试代码(src/test、*Test/*Tests/*TestCase/*IT)中的输出不再报告
- 废弃方法调用:只匹配无 scope 或 this/super 的同类调用,
stream.close() 不再被误伤;废弃方法内部或 @SuppressWarnings("deprecation") 下的调用视为既定迁移路径;同一调用点只报一次
- 并发问题:并发容器、阻塞队列、Atomic* 原子类、锁与同步器、执行器框架本身为跨线程共享设计,单例 Bean 非 final 字段不再触发共享可变状态告警
- 命名规范:serialVersionUID 与 Logger 声明惯例(private static final Logger log = ...)不再要求全大写;接口字段按隐式常量检查,MAX_SIZE 不再误报小驼峰违规
v2.0.5
v2.0.5
发布于 · 稳定性修复版本:PDF/深度评审/Gradle/一键更新四个 bug 修复、旧连接池与 WebClient 资源回收
本次版本聚焦稳定性与资源管理:修复 PDF 半截文件被缓存命中、深度评审进度 map 无界增长、Gradle 单测超时线程泄漏、一键更新跳过关闭钩子四个真实 bug;切换数据库后旧连接池优雅关闭;AI 客户端 WebClient 按配置复用。
真实 bug 修复
- PDF 报告生成异常时自动删除半截文件,避免下次调用因「文件新于任务完成时间」缓存命中坏 PDF(会进邮件附件)
- AI 深度评审进度对象任务结束即从内存移除,不再随任务数无界增长
- Gradle 单测超时分支补齐 interrupt + join,输出收集改用线程安全 StringBuffer,消除与主线程 toString 的竞态
- 一键更新改用 System.exit(0),正常跑 Spring 关闭钩子释放 DB 连接与 H2 文件锁(原来 halt(0) 导致下次启动走 crash recovery)
资源管理
- 切换数据库后旧 Hikari 池优雅关闭,不再每次切换漏 5 个常驻物理连接
- AI 客户端 WebClient 按激活配置 id 缓存单例,配置保存/删除/激活时自动失效重建
- 结果页环境分析缓存并发 miss 原子化,只跑一次 JavaParser 全量分析
死代码清理
v2.0.4
v2.0.4
发布于 · 工程优化版本:一键更新、jar 固定名、高频查询走 SQL 聚合、报告与结果页缓存
本次版本不新增检查器,聚焦交付与运行性能:打包产物固定为 jargus.jar(不再带版本号),「系统设置」页检测到新版本后可一键自动下载替换并重启;仪表盘、统计、技术债、PDF 报告等高频路径全面提速,启动时严重度迁移在数据已为新格式时直接短路。
一键更新
- 「系统设置」检测到新版本后新增「一键更新」按钮:自动从 Gitee(GitHub 兜底)下载最新 jar、校验版本与文件完整性、备份当前 jar 为
.bak、自动重启应用,全程无需手工替换文件
- 下载进度实时展示,重启完成后页面自动刷新;仅管理员可触发,Windows / IDE 类路径 / 不可写目录下自动隐藏该按钮
打包产物固定名
- 可执行 jar 固定为
jargus.jar(不再附带版本号后缀),下载后直接替换旧 jar 即可,无需改文件名
性能优化
- 结果页项目环境分析(POM/依赖扫描)加 LRU 缓存,二次访问从 ~300ms 降到 ~30ms
- 仪表盘五级问题总数与近 14 天趋势改为 SQL
SUM / DATE() GROUP BY,不再拉 200 条任务进 Java 循环
- 问题分布、技术债分钟数、任务五级计数均改为单条
GROUP BY 聚合查询,消除全表实体拉取
- PDF 中文字体静态缓存;PDF 文件已存在且新于任务完成时间时直接复用,避免邮件通知等场景重复生成
- 启动时五级严重度迁移在数据已为新格式时直接短路,不再全量重算任务计数、不再清空全部报告缓存
- CI 本地扫描直接复用源码目录,删除「先打 zip 再解压」的冗余 IO
- AI 批量回写问题包一层
TransactionTemplate,避免逐条提交事务
- 生产环境 Thymeleaf 开启模板缓存;应用日志等级从 DEBUG 回调到 INFO,降低磁盘占用
其他
- README 与 README_EN 新增 QQ 交流群:426669837
v2.0.3
v2.0.3
发布于 · AI 评审提速版本:扫描秒级出结果、AI 后台增量评审、邮件等建议齐了再发
本次版本聚焦 AI 评审链路的端到端提速:扫描不再等待 AI 调用,语义 / 安全 / 设计三维度合并为单次调用,AI 发现增量落库实时可见;邮件通知延后至 AI 与深度评审完成后发送,PDF 报告完整包含 AI 发现与修复建议。另含 v2.0.2 发布后的两个热修复。
扫描与 AI 评审解耦
- 扫描任务不再等待 AI:本地静态检查完成即出结果(秒级),AI 评审转后台异步执行,CI 回调同步返回
- AI 发现逐文件增量落库,任务统计与质量门禁评分实时更新
AI 调用提速
- 语义 / 安全 / 设计三个 AI 维度合并为单次 LLM 调用(按 type 字段归入对应检查器),耗时与 Token 降至约 1/3
- 合并评审输出封顶 4096 tokens(与厂商「最大 Token 限制」取小);提示词收紧:单文件不超过 5 条、描述与建议各不超过 50 字
- LLM 默认超时 120s → 300s(厂商配置页默认值同步),思考类模型不再被误判超时
邮件通知时序
- 开启 AI 时,扫描完成邮件延后至 AI 评审与深度评审(BLOCKER / CRITICAL / MAJOR)结束后发送,PDF 报告包含 AI 发现与修复建议
- 未开启 AI 或无待增强问题时,扫描完成立即发信,行为不变
含 v2.0.2 发布后热修复
- JWT 签名密钥未配置时每次启动随机生成,消除公开默认密钥被伪造的风险
- AI 响应 JSON 三级容错解析(严格解析 → 修复未转义引号 → 截尾抢救),彻底失败时降级为整条建议,不再静默丢弃
v2.0.2
v2.0.2
发布于 · 数据库与任务管理版本:支持 18 类数据库、切换真实生效、扫描任务可改可重跑
本次版本聚焦数据库支持的广度与可靠性:内置驱动扩至 17 种(支持 18 类数据库)、多方言 DDL、切换真实生效并故障自愈;同时新增扫描任务修改与原地重跑、AI 增强范围严重度多选,并统一了邮件 / AI 开关的可用性闸门。
数据库支持扩展
- 数据库支持扩至 18 类:新增 MariaDB / SQL Server / DB2 / OceanBase / 瀚高 / 海量 Vastbase / 崖山 / GBase 8s 内置驱动,随包驱动共 17 种
- 方言按家族重构,JDBC URL 模板化拼接与反解;上传驱动仅限 .jar
- 多方言 DDL 脚本与大小写不敏感结构探测;DB2 降级为仅连接测试
- 数据库切换真实生效:运行时可移植、重启后恢复、故障自愈
扫描任务管理
- 扫描历史支持修改任务与原地重跑:导出按钮替换为编辑弹窗,扫描选项与通知设置改完即可重跑
AI 深度评审
- 「增强范围」改为严重度多选,全选等价默认(全部未增强)
- AI 语义评审开关真实接线,修复静默失效
- 无启用 AI 厂商时,AI 评审开关禁用并强制关闭、给出提示(新建扫描 / CI 触发器 / 修改任务三处统一)
邮件通知体验
- 无启用发件配置时,「邮件通知」开关禁用并强制关闭、红色提示引导先配置发件邮箱,三处入口统一
文档
- 中英文 README 精简重写,截图改为三列宫格排版
v2.0.1
v2.0.1
发布于 · 性能与体验版本:AI 评审并发化、进度实时计数、超时默认值上调
本次版本聚焦 AI 深度评审的速度与可见性:并发执行、范围过滤、实时进度与失败原因展示,并完成一轮死代码清理。
AI 评审性能
- 深度评审并发化:并发度可配(默认 3),总耗时约等于最慢单条而非逐条累加
- 修复扫描期 AI 评审阶段未执行的问题,AI 语义 / 安全 / 设计检查器恢复产出
深度评审体验
- 新增「增强范围」过滤:全部未增强 / 仅 BLOCKER + CRITICAL
- 进度条实时显示运行中 / 已完成 / 失败 / 排队计数;终态正确渲染并自动收起
- 失败原因直接在页面展示(悬停与提示可见),无需翻日志
超时与默认值
- 新建厂商默认超时 60s → 120s:表单默认、服务端兜底与 HTTP 客户端兜底同步调整,思考型模型不再被误判超时
代码清理与文档
- 删除无调用方法、JS 死导出、无引用图标与 52 个历史 i18n 键
- README 中英文功能对比表客观化重写,补充免责声明
v2.0.0
v2.0.0
发布于 · 品牌焕新:AI Code Reviewer 正式更名为 百目 JArgus
百目所视,无所遁形。本次大版本带来全新的报告邮件推送子系统、检查器误报全面治理,以及多项安全加固与体验优化。
品牌焕新
- AI Code Reviewer 正式更名为 百目 JArgus —— 百目所视,无所遁形;仓库、构建产物(jargus.jar)与包名同步更新
报告邮件推送(新增)
- 多 SMTP 发件配置:SSL / STARTTLS、授权码 AES 加密存储、同一时刻唯一启用,支持测试发信
- 收件人管理;扫描任务与 CI 触发器可独立控制发信开关
- 扫描完成自动推送 HTML 摘要 + PDF 报告附件,送达状态列表一目了然
检查器误报治理
- 重复代码改为逐字对比并排除样板代码;圈复杂度支持折抵;NULL 规则裁决重写
- 框架注入白名单、魔法数字豁免算术 / 位运算、资源泄露引入 import 解析,误报显著下降
- 自扫问题数由 114 降至 69;扫描问题落库接通评审规则元数据
安全加固
- CI 触发器密钥遮罩展示;扫描记录级联删除;修复克隆临时目录泄漏
- 登录页移除默认账号提示
体验优化
- 系统信息页改版:GitHub / Gitee 最新版本比对、发布说明与项目作者卡片
- AI 深度评审进度可接续;检查器参数修改免重启即时生效(缓存修复)
- 确认弹窗美化,全新七彩滚动条
v1.0.0
v1.0.0
发布于 · GitHub / Gitee 双发布,同一个 JAR 包
首个公开版本(时名 AI Code Reviewer):开箱即用的自动化 Java 代码评审平台。单 JAR / Docker 部署,数据不出内网。
本地静态分析引擎
- 19 个内置检查器覆盖六大质量域:缺陷 / 安全(SAST)/ 架构约束 / 并发 / 风格冗余 / 依赖漏洞,完全离线运行
- JavaParser AST + 符号求解、ASM 字节码分析、调用图辅助降误报
- 五级严重度定级 + 规则级默认等级 + 技术债估算(按规则目录折算修复分钟数)
扫描与集成
- ZIP 上传 / Git 克隆 / Webhook 三种扫描来源,兼容 GitHub / Gitee / Jenkins / GitLab
- 同文件同规则问题自动合并;代码快照留存,支持原地重扫
- 动态多数据源:H2 内嵌默认,运行期可接 MySQL / PostgreSQL / Oracle / 达梦 / 人大金仓 / openGauss,自定义驱动页面上传至 ./lib/custom
AI 增强评审(可选)
- OpenAI 兼容 + Anthropic 双协议适配层,内置 12 类厂商模板(DeepSeek / Kimi / 豆包 / 智谱 / 千帆 / 百炼 / Claude / Gemini / Ollama / vLLM / LocalAI / OpenAI)
- 逐问题「问题分析 / 修复方案 / 修复代码」三段式建议,一键批量评审;不配置 AI 时纯离线照常工作
报告与前端
- HTML / 矢量中文 PDF 报告一键导出,长表格跨页自动拆分,内嵌中文字体不乱码
- Thymeleaf SSR + 原生 JS,零 CDN 零构建;中英双语、深色 / 浅色主题、响应式
- 质量门禁、评审规则、忽略规则、检查器参数全部界面可配,保存即时生效
安全
- JWT 本地账号 + 企业 OA 远端认证(OAuth2)与角色映射;管理员 / 只读双角色
- 数据库密码、API Key、仓库令牌 AES 加密落库;上传驱动按 uuid 隔离存放
升级提示:替换 JAR 重启即可;data/ work/ logs/ 目录与数据库卷保留,元数据与历史扫描记录自动兼容迁移。自 v2.0.4 起产物固定为 jargus.jar(不再带版本号),下载后直接替换旧 jar 即可;v2.0.4 起系统设置页支持一键自动更新。