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