chore: 前后端引入代码检查工具并整改存量问题
为统一前后端代码规范与质量,前端引入 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 保持一致
This commit is contained in:
@@ -17,26 +17,34 @@
|
||||
|
||||
## 快速开始
|
||||
|
||||
前置条件:JDK 21(Temurin)、Node.js。
|
||||
前置条件:JDK 21(Temurin,含编译工具链与 jpackage)、Node.js(含 npm)。
|
||||
|
||||
> 首次构建或运行需联网:Gradle 会下载发行版与 Maven 依赖,前端会 `npm install` 安装依赖。使用 wrapper(`./gradlew` / `gradlew.bat`)可自动获取所需 Gradle 版本。
|
||||
|
||||
```bash
|
||||
# Windows 用 gradlew.bat,Linux/macOS 用 ./gradlew
|
||||
# 后端(默认 8080,接口文档 http://localhost:8080/doc.html)
|
||||
gradlew.bat bootRun
|
||||
./gradlew bootRun
|
||||
|
||||
# 前端(默认 5173)
|
||||
cd frontend && npm run dev
|
||||
# 前端(默认 5173,/api 由 Vite 代理到 8080)
|
||||
cd frontend && npm install && npm run dev
|
||||
```
|
||||
|
||||
数据库无需预先准备:启动后在页面按引导选择 SQLite(本地文件,零配置)或 MySQL,保存后立即生效并自动建表;配置持久化于 `config/database.json`。
|
||||
|
||||
## 代码检查
|
||||
|
||||
- 后端:`./gradlew lint`(Spotless + Checkstyle + SpotBugs)。
|
||||
- 前端:`cd frontend && npm run lint`(ESLint;`npm run lint:fix` 自动修复,`npm run format` 用 Prettier 格式化)。
|
||||
- `bootJar` / `bootGuiJar` 会先执行后端检查与前端 ESLint,检查不通过则中断打包。
|
||||
|
||||
## 构建与打包
|
||||
|
||||
```bash
|
||||
gradle bootJar bootGuiJar # 普通 jar + 带 GUI 启动器的 jar,产物在 build/libs/
|
||||
gradle jpackageAppImage # 免安装应用(普通 + GUI),产物在 build/jpackage/
|
||||
./gradlew bootJar bootGuiJar # 普通 jar + 带 GUI 启动器的 jar(内嵌前端),产物在 build/libs/
|
||||
./gradlew jpackageAppImage # 免安装应用(普通 + GUI),产物在 build/jpackage/
|
||||
```
|
||||
|
||||
- 打包前会先安装前端依赖并构建前端产物,再一并打入 jar,无需手动 `npm run build`。
|
||||
- GUI jar 内嵌前后端与跨平台 JavaFX,单文件即可运行;配置与日志默认落在 jar 所在目录,可用 `--home=<目录>` 或环境变量 `LEDGERLY_HOME` 指定。
|
||||
- app-image 自带运行时、免安装,但只能为**当前操作系统**生成。
|
||||
|
||||
> 更详细的目录结构、启动器、jpackage、图标与开发环境说明见 `AGENTS.md`。
|
||||
|
||||
Reference in New Issue
Block a user