为统一前后端代码规范与质量,前端引入 ESLint + Prettier,后端在 Spotless 之外新增 Checkstyle 与 SpotBugs,检查接入构建与打包流程并失败即阻断,同时一次性整改全部存量告警,检查范围为后端主源码与前端源码。 变更内容: - 前端新增 ESLint(flat config)与 Prettier 配置及 lint / lint:fix / format / format:check 脚本,并新增对应开发依赖 - 后端 build.gradle 应用 checkstyle 与 com.github.spotbugs 插件,新增 gradle/checkstyle/checkstyle.xml、suppressions.xml 与 gradle/spotbugs/exclude.xml - 新增 Gradle frontendLint 任务并作为 frontendBuild 前置,新增 lint 聚合任务(Spotless + Checkstyle + SpotBugs + 前端 ESLint) - 修复后端 Checkstyle 1 处(补花括号)与 SpotBugs 17 处(getParent() 判空、拆装箱冗余、异常捕获与日志、volatile 同步等),并按设计豁免值对象引用暴露等告警 - 修复前端规则问题(未使用变量、无意义赋值、v-for key、v-html 安全提示)并格式化存量文件 - README 补充依赖安装、代码检查与打包说明 说明: - SpotBugs 工具版本固定为 4.8.6,规避其 BCEL 与 Spring Boot BOM 选定 commons-lang3 3.14.0 的 NoSuchMethodError - 检查范围仅主源码,src/test/ 本地测试不纳入 Checkstyle/SpotBugs - 前端格式化统一为无分号、单引号、行宽 120、LF,与 .gitattributes 保持一致
59 lines
2.2 KiB
XML
59 lines
2.2 KiB
XML
<?xml version="1.0"?>
|
|
<!DOCTYPE module PUBLIC
|
|
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
|
|
"https://checkstyle.org/dtds/configuration_1_3.dtd">
|
|
<!--
|
|
Checkstyle 规则集:聚焦命名、import、控制结构与日志规约等“高价值、低噪音”规则;
|
|
空格/缩进/换行等纯格式交由 Spotless 与 IDE 处理,避免职责重叠与误报。
|
|
说明见 ledgerly/AGENTS.md《代码检查》。
|
|
-->
|
|
<module name="Checker">
|
|
<property name="severity" value="error"/>
|
|
<property name="fileExtensions" value="java"/>
|
|
|
|
<!-- 抑制清单(默认为空,误报在此登记) -->
|
|
<module name="SuppressionFilter">
|
|
<property name="file" value="${config_loc}/suppressions.xml"/>
|
|
</module>
|
|
|
|
<!-- ===== 文件级规范 ===== -->
|
|
<module name="FileTabCharacter"/>
|
|
<module name="NewlineAtEndOfFile"/>
|
|
<module name="RegexpSingleline">
|
|
<property name="format" value="\s+$"/>
|
|
<property name="message" value="行尾存在多余空白"/>
|
|
</module>
|
|
<module name="RegexpSingleline">
|
|
<property name="format" value="System\.out\.print|printStackTrace\(\)"/>
|
|
<property name="message" value="禁止使用 System.out / printStackTrace,请改用 Lombok @Slf4j 日志"/>
|
|
</module>
|
|
|
|
<module name="TreeWalker">
|
|
<!-- ===== import 规范(顺序由 Spotless 管理,此处仅查无效/重复/通配导入) ===== -->
|
|
<module name="AvoidStarImport"/>
|
|
<module name="RedundantImport"/>
|
|
<module name="UnusedImports"/>
|
|
|
|
<!-- ===== 类与成员 ===== -->
|
|
<module name="OneTopLevelClass"/>
|
|
<module name="EqualsHashCode"/>
|
|
<module name="MissingOverride"/>
|
|
|
|
<!-- ===== 控制结构 ===== -->
|
|
<module name="NeedBraces"/>
|
|
<module name="EmptyBlock">
|
|
<property name="option" value="text"/>
|
|
</module>
|
|
<module name="FallThrough"/>
|
|
|
|
<!-- ===== 命名规范 ===== -->
|
|
<module name="PackageName"/>
|
|
<module name="TypeName"/>
|
|
<module name="MethodName"/>
|
|
<module name="MemberName"/>
|
|
<module name="ParameterName"/>
|
|
<module name="LocalVariableName"/>
|
|
<module name="ConstantName"/>
|
|
</module>
|
|
</module>
|