From e5cde1b30ec95d08f04ac47b630729657ba737f9 Mon Sep 17 00:00:00 2001 From: msslulu <1484036491@qq.com> Date: Fri, 10 Jul 2026 03:07:52 -0700 Subject: [PATCH 01/19] fix:Checkstyle check --- .github/workflows/checkstyle.yml | 33 +++++++++++++++++++------------- pom.xml | 23 ++++++++++++++++++++++ 2 files changed, 43 insertions(+), 13 deletions(-) diff --git a/.github/workflows/checkstyle.yml b/.github/workflows/checkstyle.yml index 74529b84..3d0c1283 100644 --- a/.github/workflows/checkstyle.yml +++ b/.github/workflows/checkstyle.yml @@ -3,35 +3,42 @@ name: Checkstyle Code Quality on: push: branches: - - develop # 或者你想要检查的分支 + - develop pull_request: branches: - - develop # 你可以在 PR 时检查代码 + - develop jobs: - check: + checkstyle: runs-on: ubuntu-24.04 steps: - # 检出代码 - name: Checkout code uses: actions/checkout@v4 - # 设置 JDK(如果是 Java 项目) - - name: Set up JDK 17.* + - name: Set up JDK 17 uses: actions/setup-java@v4 with: - java-version: '17.*' + java-version: '17' distribution: 'temurin' - # 安装依赖并运行 Checkstyle(如果是 Maven 项目) - - name: Install dependencies and run Checkstyle - run: | - mvn clean package + # 缓存 Maven 依赖,加速构建 + - name: Cache Maven dependencies + uses: actions/cache@v4 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + # 直接运行 Checkstyle 检查(不执行完整的 package) + - name: Run Checkstyle + run: mvn checkstyle:check - # 查看 Checkstyle 检查报告 + # 如果检查失败,仍然上传报告供查看 - name: Upload Checkstyle report + if: always() # 即使失败也上传报告 uses: actions/upload-artifact@v4 with: name: checkstyle-report - path: target/checkstyle-result.xml # 这个路径应该是 Maven 生成的检查报告路径 + path: target/checkstyle-result.xml diff --git a/pom.xml b/pom.xml index c651a73c..1734cb4a 100644 --- a/pom.xml +++ b/pom.xml @@ -235,6 +235,29 @@ 17 + + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.3.1 + + + settings/checkstyle.xml + + true + + xml + + + + checkstyle-check + validate + + check + + + + From 95b5fb32fb6366fe99dbbe30d8253ea417a3b33a Mon Sep 17 00:00:00 2001 From: msslulu <1484036491@qq.com> Date: Fri, 10 Jul 2026 03:40:24 -0700 Subject: [PATCH 02/19] fix:Checkstyle check --- codestyle/huawei-codestyle.xml | 287 +++++++++++++++++++++++++++++++++ pom.xml | 2 +- 2 files changed, 288 insertions(+), 1 deletion(-) create mode 100644 codestyle/huawei-codestyle.xml diff --git a/codestyle/huawei-codestyle.xml b/codestyle/huawei-codestyle.xml new file mode 100644 index 00000000..e7ab75b1 --- /dev/null +++ b/codestyle/huawei-codestyle.xml @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 1734cb4a..c1390dc5 100644 --- a/pom.xml +++ b/pom.xml @@ -242,7 +242,7 @@ 3.3.1 - settings/checkstyle.xml + checkstyle/huawei-checkstyle.xml true From e48f78a49f00a7828d1cdb0f02aae5af5a6b16ed Mon Sep 17 00:00:00 2001 From: msslulu <1484036491@qq.com> Date: Fri, 10 Jul 2026 03:47:05 -0700 Subject: [PATCH 03/19] fix:Checkstyle check --- .../huawei-codestyle.xml => checkstyle/huawei-checkstyle.xml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename codestyle/huawei-codestyle.xml => checkstyle/huawei-checkstyle.xml (100%) diff --git a/codestyle/huawei-codestyle.xml b/checkstyle/huawei-checkstyle.xml similarity index 100% rename from codestyle/huawei-codestyle.xml rename to checkstyle/huawei-checkstyle.xml From f7978bed20592583edf9930d85ae17a87d0ddfcb Mon Sep 17 00:00:00 2001 From: msslulu <1484036491@qq.com> Date: Fri, 10 Jul 2026 03:58:14 -0700 Subject: [PATCH 04/19] fix:Checkstyle check --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c1390dc5..b7ddff00 100644 --- a/pom.xml +++ b/pom.xml @@ -242,7 +242,7 @@ 3.3.1 - checkstyle/huawei-checkstyle.xml + ${project.basedir}/checkstyle/huawei-checkstyle.xml true From 426994319c253f635d9b309aa8f9f23fa67c0e61 Mon Sep 17 00:00:00 2001 From: msslulu <1484036491@qq.com> Date: Fri, 10 Jul 2026 04:03:53 -0700 Subject: [PATCH 05/19] fix:Checkstyle check --- checkstyle/huawei-checkstyle.xml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/checkstyle/huawei-checkstyle.xml b/checkstyle/huawei-checkstyle.xml index e7ab75b1..0d68712a 100644 --- a/checkstyle/huawei-checkstyle.xml +++ b/checkstyle/huawei-checkstyle.xml @@ -35,17 +35,6 @@ - diff --git a/pom.xml b/pom.xml index b7ddff00..fc00b947 100644 --- a/pom.xml +++ b/pom.xml @@ -245,6 +245,7 @@ ${project.basedir}/checkstyle/huawei-checkstyle.xml true + warning xml From b58e79f265ccd7dad82484b34e9b302d28cb8661 Mon Sep 17 00:00:00 2001 From: msslulu <1484036491@qq.com> Date: Fri, 10 Jul 2026 04:15:40 -0700 Subject: [PATCH 07/19] fix:Checkstyle check --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fc00b947..6358bacb 100644 --- a/pom.xml +++ b/pom.xml @@ -242,7 +242,7 @@ 3.3.1 - ${project.basedir}/checkstyle/huawei-checkstyle.xml + ./checkstyle/huawei-checkstyle.xml true warning From 45714f7e8fb698aa2307a97ce09006bbac6e539e Mon Sep 17 00:00:00 2001 From: msslulu <1484036491@qq.com> Date: Fri, 10 Jul 2026 04:19:53 -0700 Subject: [PATCH 08/19] fix:Checkstyle check --- checkstyle/huawei-checkstyle.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/checkstyle/huawei-checkstyle.xml b/checkstyle/huawei-checkstyle.xml index d3d44b62..2512af0c 100644 --- a/checkstyle/huawei-checkstyle.xml +++ b/checkstyle/huawei-checkstyle.xml @@ -61,8 +61,7 @@ - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + \ No newline at end of file From 7d231981aeb127a5a0131649d8c3e188b3594677 Mon Sep 17 00:00:00 2001 From: msslulu <1484036491@qq.com> Date: Fri, 10 Jul 2026 04:32:59 -0700 Subject: [PATCH 10/19] fix:Checkstyle check --- checkstyle/huawei-checkstyle.xml | 298 +++++++++++++++++++++++++++---- 1 file changed, 267 insertions(+), 31 deletions(-) diff --git a/checkstyle/huawei-checkstyle.xml b/checkstyle/huawei-checkstyle.xml index c97cd6fd..897c4e52 100644 --- a/checkstyle/huawei-checkstyle.xml +++ b/checkstyle/huawei-checkstyle.xml @@ -1,31 +1,267 @@ - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 35a3220d1811fa744376d941302287a9bc35c567 Mon Sep 17 00:00:00 2001 From: msslulu <1484036491@qq.com> Date: Fri, 10 Jul 2026 04:33:21 -0700 Subject: [PATCH 11/19] fix:Checkstyle check --- checkstyle/huawei-checkstyle.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/checkstyle/huawei-checkstyle.xml b/checkstyle/huawei-checkstyle.xml index 897c4e52..ee7c30aa 100644 --- a/checkstyle/huawei-checkstyle.xml +++ b/checkstyle/huawei-checkstyle.xml @@ -14,6 +14,11 @@ + + From 35bfea8f8206551c44a6d756dbf5fa4798e4a95d Mon Sep 17 00:00:00 2001 From: msslulu <1484036491@qq.com> Date: Fri, 10 Jul 2026 04:38:31 -0700 Subject: [PATCH 12/19] fix:Checkstyle check --- checkstyle/huawei-checkstyle.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/checkstyle/huawei-checkstyle.xml b/checkstyle/huawei-checkstyle.xml index ee7c30aa..fa1d4b64 100644 --- a/checkstyle/huawei-checkstyle.xml +++ b/checkstyle/huawei-checkstyle.xml @@ -56,11 +56,6 @@ - - - - - From 3843ac132749bcc10a75ac17ed19820a7d17871f Mon Sep 17 00:00:00 2001 From: msslulu <1484036491@qq.com> Date: Fri, 10 Jul 2026 04:40:50 -0700 Subject: [PATCH 13/19] fix:Checkstyle check --- checkstyle/huawei-checkstyle.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/checkstyle/huawei-checkstyle.xml b/checkstyle/huawei-checkstyle.xml index fa1d4b64..b8052b05 100644 --- a/checkstyle/huawei-checkstyle.xml +++ b/checkstyle/huawei-checkstyle.xml @@ -56,7 +56,6 @@ - - ./checkstyle/huawei-checkstyle.xml + ./app/src/main/resources/checkstyle.xml true warning From c52edf33dc3eadeecd8d6308834723aaaf48d2a4 Mon Sep 17 00:00:00 2001 From: msslulu <1484036491@qq.com> Date: Mon, 13 Jul 2026 00:15:56 -0700 Subject: [PATCH 15/19] fix:Checkstyle check --- checkstyle/huawei-checkstyle.xml | 238 +++++++++++++------------------ pom.xml | 2 +- 2 files changed, 100 insertions(+), 140 deletions(-) diff --git a/checkstyle/huawei-checkstyle.xml b/checkstyle/huawei-checkstyle.xml index b8052b05..a902a249 100644 --- a/checkstyle/huawei-checkstyle.xml +++ b/checkstyle/huawei-checkstyle.xml @@ -1,27 +1,20 @@ - - + + - + - - - - + - @@ -35,200 +28,163 @@ - + authorFormat: 检查author标签的格式 + versionFormat: 检查version标签的格式 + scope: 可以检查的类的范围,例如:public只能检查public修饰的类,private可以检查所有的类 + excludeScope: 不能检查的类的范围,例如:public,public的类将不被检查,但访问权限小于public的类仍然会检查,其他的权限以此类推 + tokens: 该属性适用的类型,例如:CLASS_DEF,INTERFACE_DEF --> - + scope: 可以检查的方法的范围,例如:public只能检查public修饰的方法,private可以检查所有的方法 + allowMissingParamTags: 是否忽略对参数注释的检查 + allowMissingThrowsTags: 是否忽略对throws注释的检查 + allowMissingReturnTag: 是否忽略对return注释的检查 --> - + + - - - - - - + maxLineLength: 大括号'{'所在行行最多容纳的字符数 + tokens: 该属性适用的类型,例:CLASS_DEF,INTERFACE_DEF,METHOD_DEF,CTOR_DEF --> - + - - - - + - + - + - - + + - - - - + - - + + + + - - - - + + - - - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - + - + - - - - - - - + - + - - + - + - - - - - - - - - - - - + + - + @@ -260,7 +216,11 @@ - + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index ca4e5a13..6358bacb 100644 --- a/pom.xml +++ b/pom.xml @@ -242,7 +242,7 @@ 3.3.1 - ./app/src/main/resources/checkstyle.xml + ./checkstyle/huawei-checkstyle.xml true warning From 929462f67f1a9807f24ea7a3f7242e0a64b8c4af Mon Sep 17 00:00:00 2001 From: msslulu <1484036491@qq.com> Date: Mon, 13 Jul 2026 02:24:36 -0700 Subject: [PATCH 16/19] fix:Checkstyle check --- checkstyle/huawei-checkstyle.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/checkstyle/huawei-checkstyle.xml b/checkstyle/huawei-checkstyle.xml index a902a249..a2a60652 100644 --- a/checkstyle/huawei-checkstyle.xml +++ b/checkstyle/huawei-checkstyle.xml @@ -4,7 +4,6 @@ - From 989abaf6af2f464980222202d4817c65799d3626 Mon Sep 17 00:00:00 2001 From: msslulu <1484036491@qq.com> Date: Mon, 13 Jul 2026 03:33:35 -0700 Subject: [PATCH 17/19] fix:Checkstyle check --- .github/scripts/checkstyle-pr.sh | 110 +++++++++++++++++++++++++++++++ .github/workflows/checkstyle.yml | 10 ++- pom.xml | 2 +- 3 files changed, 119 insertions(+), 3 deletions(-) create mode 100644 .github/scripts/checkstyle-pr.sh diff --git a/.github/scripts/checkstyle-pr.sh b/.github/scripts/checkstyle-pr.sh new file mode 100644 index 00000000..a56185fa --- /dev/null +++ b/.github/scripts/checkstyle-pr.sh @@ -0,0 +1,110 @@ +#!/bin/bash +# ============================================================ +# checkstyle-pr.sh - 增量 Checkstyle 检查(仅报告,不阻断构建) +# 用途:扫描 PR/commit 中变更的 Java 文件,生成违规报告 +# ============================================================ + +set -e # 遇到错误立即退出(但我们会特殊处理 mvn 的返回) + +echo "========================================" +echo " Checkstyle PR 增量检查 (仅报告)" +echo "========================================" + +# 1. 确定对比的目标分支 +if [ -n "$GITHUB_BASE_REF" ]; then + # GitHub Actions 环境:PR 事件 + BASE_BRANCH="origin/$GITHUB_BASE_REF" + echo "🔍 检测到 PR 事件,目标分支: $GITHUB_BASE_REF" +elif [ -n "$GITHUB_REF" ] && [ "$GITHUB_EVENT_NAME" == "push" ]; then + # push 事件,对比上一次提交 + BASE_BRANCH="HEAD^" + echo "🔍 检测到 Push 事件,对比上一次提交" +else + # 本地运行:默认对比 origin/main,如果不存在则尝试 origin/develop + if git rev-parse --verify origin/main >/dev/null 2>&1; then + BASE_BRANCH="origin/main" + elif git rev-parse --verify origin/develop >/dev/null 2>&1; then + BASE_BRANCH="origin/develop" + else + echo "❌ 无法确定目标分支,请指定 BASE_BRANCH 环境变量或在 Git 仓库中设置远程分支。" + exit 1 + fi + echo "🔍 本地运行模式,对比分支: $BASE_BRANCH" +fi + +# 2. 确保目标分支存在(如果是远程分支,先 fetch) +if [[ "$BASE_BRANCH" == origin/* ]] && ! git rev-parse --verify "$BASE_BRANCH" >/dev/null 2>&1; then + echo "⬇️ 正在 fetch 远程分支 $BASE_BRANCH ..." + git fetch origin "${BASE_BRANCH#origin/}" +fi + +# 3. 获取变更的 Java 文件列表 +CHANGED_FILES=$(git diff --name-only "$BASE_BRANCH" HEAD 2>/dev/null | grep '\.java$' || true) + +if [ -z "$CHANGED_FILES" ]; then + echo "✅ 本次没有变更 Java 文件,跳过检查。" + exit 0 +fi + +echo "📝 本次变更的 Java 文件:" +echo "$CHANGED_FILES" +echo "----------------------------------------" + +# 4. 将文件列表转为逗号分隔(用于 Maven 参数) +FILES_LIST=$(echo "$CHANGED_FILES" | tr '\n' ',' | sed 's/,$//') + +# 5. 执行 Checkstyle(生成报告,不阻断) +echo "🚀 开始执行 Checkstyle 增量扫描..." +set +e # 暂时关闭错误退出,以便我们自己处理返回值 +mvn checkstyle:checkstyle \ + -Dcheckstyle.includes="$FILES_LIST" \ + -Dcheckstyle.excludes="**/test/**/*.java" +MVN_EXIT=$? +set -e # 恢复 + +# 6. 解析违规数 +VIOLATIONS=0 +REPORT_FILE="target/checkstyle-result.xml" +if [ -f "$REPORT_FILE" ]; then + VIOLATIONS=$(grep -c '//' | \ + sed 's/line="/行号: /; s/column="/列: /; s/severity="/严重性: /; s=message="=信息: =; s=source="//' | \ + while read -r line; do + echo " $line" + done +fi + +# 7. 输出到 GitHub Step Summary(仅在 Actions 环境中有效) +if [ -n "$GITHUB_STEP_SUMMARY" ]; then + { + echo "## 📋 Checkstyle 报告摘要" + echo "" + echo "| 指标 | 结果 |" + echo "|------|------|" + if [ $VIOLATIONS -eq 0 ]; then + echo "| 违规数 | ✅ **0** |" + else + echo "| 违规数 | ⚠️ **$VIOLATIONS** |" + fi + echo "| 扫描文件 | **$(echo "$CHANGED_FILES" | wc -l)** 个 Java 文件 |" + echo "" + if [ -f "$HTML_REPORT" ]; then + echo "📄 [查看详细 HTML 报告](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" + fi + echo "💡 完整报告作为 Artifact 下载,请查看工作流运行页面。" + } >> "$GITHUB_STEP_SUMMARY" + echo "✅ Step Summary 已生成" +fi + +# 8. 始终以成功状态退出(不阻断构建) +exit 0 \ No newline at end of file diff --git a/.github/workflows/checkstyle.yml b/.github/workflows/checkstyle.yml index 3d0c1283..8fbd7901 100644 --- a/.github/workflows/checkstyle.yml +++ b/.github/workflows/checkstyle.yml @@ -15,6 +15,8 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 + with: + fetch-depth: 0 # 必须拉取完整历史,才能比较分支差异 - name: Set up JDK 17 uses: actions/setup-java@v4 @@ -33,7 +35,9 @@ jobs: # 直接运行 Checkstyle 检查(不执行完整的 package) - name: Run Checkstyle - run: mvn checkstyle:check + run: bash .github/scripts/checkstyle-pr.sh + env: + GITHUB_BASE_REF: ${{ github.base_ref }} # 如果检查失败,仍然上传报告供查看 - name: Upload Checkstyle report @@ -41,4 +45,6 @@ jobs: uses: actions/upload-artifact@v4 with: name: checkstyle-report - path: target/checkstyle-result.xml + path: | + target/checkstyle-result.xml + target/site/checkstyle.html diff --git a/pom.xml b/pom.xml index 6358bacb..a4bdd76f 100644 --- a/pom.xml +++ b/pom.xml @@ -244,7 +244,7 @@ ./checkstyle/huawei-checkstyle.xml - true + false warning xml From c97a525d8782a4e99b7f07b9029f306a36d30a7a Mon Sep 17 00:00:00 2001 From: msslulu <1484036491@qq.com> Date: Mon, 13 Jul 2026 03:52:40 -0700 Subject: [PATCH 18/19] fix:Checkstyle check --- .github/scripts/checkstyle-pr.sh | 200 +++++++++++++++++++++++-------- 1 file changed, 153 insertions(+), 47 deletions(-) diff --git a/.github/scripts/checkstyle-pr.sh b/.github/scripts/checkstyle-pr.sh index a56185fa..8f1e2468 100644 --- a/.github/scripts/checkstyle-pr.sh +++ b/.github/scripts/checkstyle-pr.sh @@ -1,110 +1,216 @@ #!/bin/bash # ============================================================ -# checkstyle-pr.sh - 增量 Checkstyle 检查(仅报告,不阻断构建) -# 用途:扫描 PR/commit 中变更的 Java 文件,生成违规报告 +# checkstyle-pr.sh - 真正的增量检查 +# 功能:只报告本次提交中新增或修改行的 Checkstyle 违规 +# 不阻断构建,生成过滤后的报告 # ============================================================ -set -e # 遇到错误立即退出(但我们会特殊处理 mvn 的返回) +set -e echo "========================================" -echo " Checkstyle PR 增量检查 (仅报告)" +echo " Checkstyle 增量行检查 (只检测新代码)" echo "========================================" -# 1. 确定对比的目标分支 +# 1. 确定目标分支 if [ -n "$GITHUB_BASE_REF" ]; then - # GitHub Actions 环境:PR 事件 BASE_BRANCH="origin/$GITHUB_BASE_REF" - echo "🔍 检测到 PR 事件,目标分支: $GITHUB_BASE_REF" elif [ -n "$GITHUB_REF" ] && [ "$GITHUB_EVENT_NAME" == "push" ]; then - # push 事件,对比上一次提交 BASE_BRANCH="HEAD^" - echo "🔍 检测到 Push 事件,对比上一次提交" else - # 本地运行:默认对比 origin/main,如果不存在则尝试 origin/develop if git rev-parse --verify origin/main >/dev/null 2>&1; then BASE_BRANCH="origin/main" elif git rev-parse --verify origin/develop >/dev/null 2>&1; then BASE_BRANCH="origin/develop" else - echo "❌ 无法确定目标分支,请指定 BASE_BRANCH 环境变量或在 Git 仓库中设置远程分支。" + echo "❌ 无法确定目标分支,请设置 BASE_BRANCH 环境变量。" exit 1 fi echo "🔍 本地运行模式,对比分支: $BASE_BRANCH" fi -# 2. 确保目标分支存在(如果是远程分支,先 fetch) -if [[ "$BASE_BRANCH" == origin/* ]] && ! git rev-parse --verify "$BASE_BRANCH" >/dev/null 2>&1; then - echo "⬇️ 正在 fetch 远程分支 $BASE_BRANCH ..." - git fetch origin "${BASE_BRANCH#origin/}" -fi - -# 3. 获取变更的 Java 文件列表 +# 2. 获取变更的 Java 文件 CHANGED_FILES=$(git diff --name-only "$BASE_BRANCH" HEAD 2>/dev/null | grep '\.java$' || true) if [ -z "$CHANGED_FILES" ]; then - echo "✅ 本次没有变更 Java 文件,跳过检查。" + echo "✅ 没有 Java 文件变更,跳过检查。" exit 0 fi -echo "📝 本次变更的 Java 文件:" +echo "📝 变更的 Java 文件:" echo "$CHANGED_FILES" echo "----------------------------------------" -# 4. 将文件列表转为逗号分隔(用于 Maven 参数) +# 3. 生成包含变更行号信息的文件 (用于后续过滤) +echo "🔄 提取变更行号..." +CHANGE_INFO_FILE=".checkstyle-changes.txt" +rm -f "$CHANGE_INFO_FILE" + +for file in $CHANGED_FILES; do + # 获取该文件新增或修改的行号范围(新文件行号) + # git diff -U0 输出 unified=0,只显示变更行 + diff_output=$(git diff -U0 "$BASE_BRANCH" HEAD -- "$file" 2>/dev/null | grep '^@@' || true) + if [ -n "$diff_output" ]; then + # 解析 @@ -old,count +new,count @@ 提取新行号范围 + echo "$diff_output" | while read -r line; do + # 提取 + 后面的起始行和行数 + new_info=$(echo "$line" | sed -n 's/.*+\([0-9]*\)\(,[0-9]*\)\?.*/\1 \2/p') + if [ -n "$new_info" ]; then + start=$(echo "$new_info" | awk '{print $1}') + count=$(echo "$new_info" | awk '{print $2}' | sed 's/,//') + if [ -z "$count" ]; then + count=1 + fi + # 生成行号范围,例如 file:10-15 + echo "$file:$start-$((start+count-1))" >> "$CHANGE_INFO_FILE" + fi + done + fi +done + +if [ ! -s "$CHANGE_INFO_FILE" ]; then + echo "⚠️ 未提取到变更行号,可能变更只涉及删除或文件重命名,跳过检查。" + exit 0 +fi + +echo "变更行号信息已保存到 $CHANGE_INFO_FILE" + +# 4. 执行 Checkstyle 扫描全部变更文件(生成完整报告) +echo "🚀 执行 Checkstyle 扫描(生成完整报告)..." FILES_LIST=$(echo "$CHANGED_FILES" | tr '\n' ',' | sed 's/,$//') -# 5. 执行 Checkstyle(生成报告,不阻断) -echo "🚀 开始执行 Checkstyle 增量扫描..." -set +e # 暂时关闭错误退出,以便我们自己处理返回值 +set +e mvn checkstyle:checkstyle \ -Dcheckstyle.includes="$FILES_LIST" \ - -Dcheckstyle.excludes="**/test/**/*.java" + -Dcheckstyle.excludes="**/test/**/*.java" \ + -Dcheckstyle.violationSeverity=warning MVN_EXIT=$? -set -e # 恢复 +set -e -# 6. 解析违规数 -VIOLATIONS=0 REPORT_FILE="target/checkstyle-result.xml" -if [ -f "$REPORT_FILE" ]; then - VIOLATIONS=$(grep -c '//' | \ + grep '//' | \ sed 's/line="/行号: /; s/column="/列: /; s/severity="/严重性: /; s=message="=信息: =; s=source="//' | \ while read -r line; do echo " $line" done fi -# 7. 输出到 GitHub Step Summary(仅在 Actions 环境中有效) +# 7. 输出到 GitHub Step Summary if [ -n "$GITHUB_STEP_SUMMARY" ]; then { - echo "## 📋 Checkstyle 报告摘要" + echo "## 📋 Checkstyle 增量行报告" echo "" echo "| 指标 | 结果 |" echo "|------|------|" - if [ $VIOLATIONS -eq 0 ]; then - echo "| 违规数 | ✅ **0** |" + if [ $FILTERED_VIOLATIONS -eq 0 ]; then + echo "| 新增代码违规数 | ✅ **0** |" else - echo "| 违规数 | ⚠️ **$VIOLATIONS** |" + echo "| 新增代码违规数 | ⚠️ **$FILTERED_VIOLATIONS** |" fi - echo "| 扫描文件 | **$(echo "$CHANGED_FILES" | wc -l)** 个 Java 文件 |" + echo "| 扫描文件 | **$(echo "$CHANGED_FILES" | wc -l)** 个变更 Java 文件 |" + echo "| 检查范围 | 仅新增或修改的行 |" echo "" - if [ -f "$HTML_REPORT" ]; then - echo "📄 [查看详细 HTML 报告](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" - fi - echo "💡 完整报告作为 Artifact 下载,请查看工作流运行页面。" + echo "📄 [下载完整报告(所有文件)](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" + echo "📄 [下载过滤后报告(仅新增行)](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" } >> "$GITHUB_STEP_SUMMARY" - echo "✅ Step Summary 已生成" + echo "✅ Step Summary 已更新" fi -# 8. 始终以成功状态退出(不阻断构建) +# 8. 替换原始报告为过滤后的报告(以便 Artifact 上传只包含过滤结果) +# 但为了保留完整报告,我们不上传过滤后的,而是上传原始和过滤两份。 +# 在 YAML 中,我们会上传整个 target/ 下的相关文件,所以无所谓。 + +# 9. 清理临时文件 +rm -f "$CHANGE_INFO_FILE" + +# 10. 始终以成功状态退出 exit 0 \ No newline at end of file From 082e950f2b40d9f981fad8b3f170946eb2c8c494 Mon Sep 17 00:00:00 2001 From: msslulu <1484036491@qq.com> Date: Mon, 13 Jul 2026 04:11:07 -0700 Subject: [PATCH 19/19] fix:Checkstyle check --- .github/workflows/checkstyle.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/checkstyle.yml b/.github/workflows/checkstyle.yml index 8fbd7901..176c5e7b 100644 --- a/.github/workflows/checkstyle.yml +++ b/.github/workflows/checkstyle.yml @@ -46,5 +46,5 @@ jobs: with: name: checkstyle-report path: | - target/checkstyle-result.xml - target/site/checkstyle.html + */target/checkstyle-result.xml + */target/site/checkstyle.html