Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
137 commits
Select commit Hold shift + click to select a range
e5cde1b
fix:Checkstyle check
msslulu Jul 10, 2026
95b5fb3
fix:Checkstyle check
msslulu Jul 10, 2026
e48f78a
fix:Checkstyle check
msslulu Jul 10, 2026
f7978be
fix:Checkstyle check
msslulu Jul 10, 2026
4269943
fix:Checkstyle check
msslulu Jul 10, 2026
d3fd7b7
fix:Checkstyle check
msslulu Jul 10, 2026
b58e79f
fix:Checkstyle check
msslulu Jul 10, 2026
45714f7
fix:Checkstyle check
msslulu Jul 10, 2026
051cdc9
fix:Checkstyle check
msslulu Jul 10, 2026
7d23198
fix:Checkstyle check
msslulu Jul 10, 2026
35a3220
fix:Checkstyle check
msslulu Jul 10, 2026
35bfea8
fix:Checkstyle check
msslulu Jul 10, 2026
3843ac1
fix:Checkstyle check
msslulu Jul 10, 2026
3a1b0c9
fix:Checkstyle check
msslulu Jul 10, 2026
c52edf3
fix:Checkstyle check
msslulu Jul 13, 2026
929462f
fix:Checkstyle check
msslulu Jul 13, 2026
989abaf
fix:Checkstyle check
msslulu Jul 13, 2026
c97a525
fix:Checkstyle check
msslulu Jul 13, 2026
082e950
fix:Checkstyle check
msslulu Jul 13, 2026
8ed95e0
fix:Checkstyle check
msslulu Jul 14, 2026
5e47b0f
fix:Checkstyle check
msslulu Jul 14, 2026
ec22270
fix:Checkstyle check
msslulu Jul 14, 2026
f9fd623
fix:Checkstyle check test
msslulu Jul 14, 2026
9025582
fix:Checkstyle check test
msslulu Jul 14, 2026
8a82ac0
fix:Checkstyle check test
msslulu Jul 14, 2026
2bee0b1
fix:Checkstyle check test
msslulu Jul 14, 2026
4bf7806
fix:Checkstyle check test
msslulu Jul 14, 2026
4102cc6
fix:Checkstyle check test
msslulu Jul 14, 2026
9c654e9
fix:Checkstyle check test
msslulu Jul 14, 2026
9c1e5c8
fix:Checkstyle check test
msslulu Jul 14, 2026
b1e0c25
fix:Checkstyle check test
msslulu Jul 14, 2026
81d4c6b
fix:Checkstyle check test
msslulu Jul 14, 2026
3e5b3ad
fix:Checkstyle check test
msslulu Jul 14, 2026
e5e0688
fix:Checkstyle check test
msslulu Jul 14, 2026
44ab636
fix:Checkstyle check test
msslulu Jul 14, 2026
08a2166
fix:Checkstyle check test
msslulu Jul 14, 2026
fc0c465
fix:Checkstyle check test
msslulu Jul 14, 2026
f931007
fix:Checkstyle check test
msslulu Jul 14, 2026
625f4e9
fix:Checkstyle check test
msslulu Jul 14, 2026
0ed0206
fix:Checkstyle check test
msslulu Jul 14, 2026
2730cfc
fix:Checkstyle check test
msslulu Jul 14, 2026
a06b694
fix:Checkstyle check test
msslulu Jul 28, 2026
c0b8620
fix:Checkstyle check test
msslulu Aug 3, 2026
63a64b9
fix:Checkstyle check test
msslulu Aug 3, 2026
9b13999
fix:Checkstyle check test
msslulu Aug 3, 2026
8413433
fix:Checkstyle check test
msslulu Aug 3, 2026
9fb67ea
fix:Checkstyle check test
msslulu Aug 3, 2026
22022b4
fix:Checkstyle check test
msslulu Aug 3, 2026
3ceae07
fix:Checkstyle check test
msslulu Aug 3, 2026
024bd39
fix:Checkstyle check test
msslulu Aug 3, 2026
2f7db20
fix:Checkstyle check test
msslulu Aug 3, 2026
05cb819
fix:Checkstyle check test
msslulu Aug 3, 2026
70b30c9
fix:Checkstyle check test
msslulu Aug 3, 2026
5d3ad7f
fix:Checkstyle check test
msslulu Aug 3, 2026
ccbc2c9
fix:Checkstyle check test
msslulu Aug 3, 2026
f3eecf9
fix:pmd test
msslulu Aug 4, 2026
4384f22
fix:pmd test
msslulu Aug 4, 2026
eac5e85
fix:pmd test
msslulu Aug 4, 2026
f6012b6
fix:pmd test
msslulu Aug 4, 2026
b632204
fix:pmd test
msslulu Aug 4, 2026
1a260c1
fix:pmd test
msslulu Aug 4, 2026
4e52367
fix:pmd test
msslulu Aug 4, 2026
81a56c3
fix:pmd test
msslulu Aug 4, 2026
2cdffc4
fix:pmd test
msslulu Aug 4, 2026
aae082d
fix:pmd test
msslulu Aug 4, 2026
1f12a91
fix:pmd test
msslulu Aug 4, 2026
fc02bcb
fix:pmd test
msslulu Aug 4, 2026
3b63a2b
fix:pmd test
msslulu Aug 4, 2026
1654700
fix:pmd test
msslulu Aug 4, 2026
b38b50a
fix:pmd test
msslulu Aug 4, 2026
96e63c7
fix:pmd test
msslulu Aug 4, 2026
8e5fb54
fix:pmd test
msslulu Aug 4, 2026
c8355ae
fix:pmd test
msslulu Aug 4, 2026
424842f
fix:pmd test
msslulu Aug 4, 2026
1ff2d9f
fix:pmd test
msslulu Aug 4, 2026
c6d5bb4
fix:pmd test
msslulu Aug 4, 2026
1a7a165
fix:pmd test
msslulu Aug 4, 2026
2ede5e4
fix:pmd test
msslulu Aug 4, 2026
6937a69
fix:pmd test
msslulu Aug 4, 2026
3afd810
fix:pmd test
msslulu Aug 4, 2026
5580474
fix:pmd test
msslulu Aug 4, 2026
dec82dd
fix:pmd test
msslulu Aug 4, 2026
631f8a1
fix:pmd test
msslulu Aug 4, 2026
82a65e3
fix:pmd test
msslulu Aug 4, 2026
f55422b
fix:pmd test
msslulu Aug 4, 2026
a18fcdc
fix:pmd test
msslulu Aug 4, 2026
9fc20ad
fix:pmd test
msslulu Aug 4, 2026
6f87f7a
fix:pmd test
msslulu Aug 5, 2026
472d06b
fix:pmd test
msslulu Aug 5, 2026
0203930
fix:pmd test
msslulu Aug 5, 2026
c5e762c
fix:pmd test
msslulu Aug 5, 2026
8506a6c
fix:pmd test
msslulu Aug 5, 2026
d766de0
fix:pmd test
msslulu Aug 5, 2026
09fa71f
fix:pmd test
msslulu Aug 5, 2026
dceff4f
fix:pmd test
msslulu Aug 5, 2026
7979afe
fix:pmd test
msslulu Aug 5, 2026
3c9faf2
fix:code check test
msslulu Aug 5, 2026
11b9e95
fix:code check test
msslulu Aug 5, 2026
474acef
fix:code check test
msslulu Aug 5, 2026
ff97070
fix:code check test
msslulu Aug 5, 2026
cc7d855
fix:code check test
msslulu Aug 5, 2026
5811ddc
fix:code check test
msslulu Aug 5, 2026
8b81772
fix:code check test
msslulu Aug 5, 2026
790c02c
fix:code check test
msslulu Aug 5, 2026
a518629
fix:code check test
msslulu Aug 6, 2026
c635530
fix:code check test
msslulu Aug 6, 2026
cdff35b
fix:code check test
msslulu Aug 6, 2026
469d300
fix:code check test
msslulu Aug 6, 2026
3d3435e
fix:code check test
msslulu Aug 6, 2026
9bdc0ad
fix:code check test
msslulu Aug 6, 2026
2cd2420
fix:code check test
msslulu Aug 6, 2026
4916797
fix:code check test
msslulu Aug 6, 2026
40eb809
fix:code check test
msslulu Aug 6, 2026
8e46d1e
fix:code check test
msslulu Aug 6, 2026
4efd3d7
fix:code check test
msslulu Aug 6, 2026
1d2dab3
fix:code check test
msslulu Aug 6, 2026
e7e3871
fix:code check test
msslulu Aug 6, 2026
fe90229
fix:code check test
msslulu Aug 6, 2026
c58b1be
fix:code check test
msslulu Aug 6, 2026
97df9cf
fix:code check test
msslulu Aug 6, 2026
f8b20fb
fix:code check test
msslulu Aug 7, 2026
cfb89c0
fix:code check test
msslulu Aug 7, 2026
fae1519
fix:code check test
msslulu Aug 7, 2026
f0229eb
fix:code check test
msslulu Aug 7, 2026
19f3074
fix:code check test
msslulu Aug 7, 2026
4f6ae1b
fix:code check test
msslulu Aug 7, 2026
ae30f19
fix:code check test
msslulu Aug 7, 2026
a3db57f
fix:code check test
msslulu Aug 7, 2026
a569a50
fix:code check test
msslulu Aug 7, 2026
d7a3834
fix:code check test
msslulu Aug 7, 2026
71e0e73
fix:code check test
msslulu Aug 7, 2026
344f69d
fix:code check test
msslulu Aug 7, 2026
b49067e
fix:code check test
msslulu Aug 7, 2026
1f3cbce
fix:code check test
msslulu Aug 7, 2026
d451174
fix:code check test
msslulu Aug 7, 2026
b2ca052
fix:code check test
msslulu Aug 7, 2026
954899a
fix:code check test
msslulu Aug 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
162 changes: 162 additions & 0 deletions .github/scripts/checkstyle-pr.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
#!/bin/bash
# ============================================================
# checkstyle-pr.sh - 增量检查(扫描整个变更文件,不过滤行号)
# 功能:对本次提交中变更的 Java 文件执行完整的 Checkstyle 检查
# 不阻断构建,生成完整报告
# ============================================================

set -e

echo "========================================"
echo " Checkstyle 增量检查"
echo " 扫描范围:本次变更的 Java 文件(完整文件)"
echo "========================================"

# 1. 确定目标分支
if [ -n "$GITHUB_BASE_REF" ]; then
BASE_BRANCH="origin/$GITHUB_BASE_REF"
elif [ -n "$GITHUB_REF" ] && [ "$GITHUB_EVENT_NAME" == "push" ]; then
BASE_BRANCH="HEAD^"
else
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 环境变量。"
exit 1
fi
echo "🔍 本地运行模式,对比分支: $BASE_BRANCH"
fi

# 2. 获取变更的 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 "----------------------------------------"

# 按模块分组
declare -A module_files
for file in $CHANGED_FILES; do
module="${file%%/*}"
if [ -z "$module" ] || [ "$module" == "$file" ]; then
echo "⚠️ 忽略根目录文件: $file"
continue
fi
rel="${file#$module/}"
if [ -z "${module_files[$module]}" ]; then
module_files[$module]="$rel"
else
module_files[$module]="${module_files[$module]},$rel"
fi
done

if [ ${#module_files[@]} -eq 0 ]; then
echo "⚠️ 没有识别到任何模块,跳过检查。"
exit 0
fi

echo "📝 按模块分组后的相对路径:"
for module in "${!module_files[@]}"; do
echo " $module: ${module_files[$module]}"
done
echo "----------------------------------------"

total_violations=0

# 对每个模块执行 Checkstyle
for module in "${!module_files[@]}"; do
file_list="${module_files[$module]}"
echo "🚀 扫描模块: $module"
echo " 文件列表: $file_list"

if [ ! -d "$module" ] || [ ! -f "$module/pom.xml" ]; then
echo "⚠️ 模块目录 $module 不存在或没有 pom.xml,跳过。"
continue
fi

echo " - 生成 XML 报告..."
set +e
(cd "$module" && mvn checkstyle:check -X ... 2>&1 | grep "Loading checkstyle configuration" \
-Dcheckstyle.config.location=../checkstyle/huawei-checkstyle.xml \
-Dcheckstyle.includes="$file_list" \
-Dcheckstyle.violationSeverity=warning)
if [ $? -ne 0 ]; then
echo " ⚠️ 模块 $module 的 Checkstyle 检查失败(但继续)"
fi
set -e

echo " - 生成 HTML 报告..."
set +e
(cd "$module" && mvn checkstyle:checkstyle \
-Dcheckstyle.config.location=../checkstyle/huawei-checkstyle.xml \
-Dcheckstyle.includes="$file_list" \
-Dcheckstyle.outputFormat=html \
-Dcheckstyle.violationSeverity=warning)
if [ $? -ne 0 ]; then
echo " ⚠️ 模块 $module 的 HTML 报告生成失败(但继续)"
fi
set -e

report_file="$module/target/checkstyle-result.xml"
if [ -f "$report_file" ]; then
count=$(grep -c '<error' "$report_file" 2>/dev/null || true)
else
count=0
fi
echo ""
done

echo "----------------------------------------"
if [ $total_violations -eq 0 ]; then
echo "✅ 所有变更文件未发现违规!"
else
echo "⚠️ 总计发现 $total_violations 个违规。"
# 显示部分违规摘要(第一个有违规的模块)
echo ""
echo "📋 违规摘要(前 30 条):"
for module in "${!module_files[@]}"; do
report_file="$module/target/checkstyle-result.xml"
if [ -f "$report_file" ] && [ $(grep -c '<error' "$report_file" || true) -gt 0 ]; then
grep '<error' "$report_file" | head -30 | sed 's/<error //; s/\/>//' | \
sed 's|line="|行号: |g; s|column="|列: |g; s|severity="|严重性: |g; s|message="|信息: |g; s|source="||g' | \
while read -r line; do
echo " $line"
done || true
break
fi
done
fi

# Step Summary
if [ -n "$GITHUB_STEP_SUMMARY" ]; then
{
echo "## 📋 Checkstyle 汇总报告"
echo ""
echo "| 指标 | 结果 |"
echo "|------|------|"
if [ $total_violations -eq 0 ]; then
echo "| 总违规数 | ✅ **0** |"
else
echo "| 总违规数 | ⚠️ **$total_violations** |"
fi
echo "| 涉及模块 | ${!module_files[*]} |"
echo ""
echo "📥 完整报告已作为 Artifact 上传。"
} >> "$GITHUB_STEP_SUMMARY"
fi

# 根据违规数决定退出码
if [ $total_violations -eq 0 ]; then
echo "✅ 检查通过,构建成功。"
exit 0
else
echo "❌ 发现 $total_violations 个违规,构建失败。"
exit 1
fi
90 changes: 90 additions & 0 deletions .github/scripts/pmd-pr.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
#!/bin/bash
# ============================================================
# pmd-pr.sh - PMD 增量扫描脚本
# 功能:只扫描本次提交中变更的 Java 文件
# 生成报告到 target/pmd-report.xml(或自定义路径)
# ============================================================

set -e

echo "========================================"
echo " PMD 增量扫描"
echo " 扫描范围:本次变更的 Java 文件"
echo "========================================"

# 1. 确定目标分支
if [ -n "$GITHUB_BASE_REF" ]; then
BASE_BRANCH="origin/$GITHUB_BASE_REF"
elif [ -n "$GITHUB_REF" ] && [ "$GITHUB_EVENT_NAME" == "push" ]; then
BASE_BRANCH="HEAD^"
else
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 环境变量。"
exit 1
fi
echo "🔍 本地运行模式,对比分支: $BASE_BRANCH"
fi

# 2. 获取变更的 Java 文件
CHANGED_FILES=$(git diff --name-only "$BASE_BRANCH" HEAD 2>/dev/null | grep '\.java$' || true)

if [ -z "$CHANGED_FILES" ]; then
echo "✅ 没有 Java 文件变更,跳过 PMD 扫描。"
exit 0
fi

echo "📝 变更的 Java 文件:"
echo "$CHANGED_FILES"
echo "----------------------------------------"

# 3. 生成文件列表(绝对路径)
FILE_LIST="changed-files.txt"
> "$FILE_LIST"
for file in $CHANGED_FILES; do
echo "$PWD/$file" >> "$FILE_LIST"
done

echo "📄 文件列表已生成:$FILE_LIST"
echo "----------------------------------------"

# 4. 准备 PMD(如果未安装)
PMD_VERSION="6.55.0"
PMD_HOME="./pmd"
if [ ! -d "$PMD_HOME" ]; then
echo "⬇️ 下载 PMD $PMD_VERSION ..."
curl -L "https://github.com/pmd/pmd/releases/download/pmd_releases%2F${PMD_VERSION}/pmd-bin-${PMD_VERSION}.zip" -o pmd.zip
unzip -q pmd.zip
mv pmd-bin-${PMD_VERSION} "$PMD_HOME"
rm pmd.zip
fi
PMD_CMD="$PMD_HOME/bin/run.sh"
chmod +x "$PMD_CMD"

# 5. 执行 PMD 扫描(使用 -filelist)
echo "🚀 执行 PMD 扫描..."
REPORT_FILE="target/pmd-report.xml"
set +e
"$PMD_CMD" pmd --no-cache \
-filelist "$FILE_LIST" \
-f xml \
-R category/java/quickstart.xml \
-r "$REPORT_FILE"
EXIT_CODE=$?
set -e

# 6. 检查是否生成报告
if [ -f "$REPORT_FILE" ]; then
echo "✅ PMD 报告已生成:$REPORT_FILE"
else
echo "⚠️ PMD 未生成报告,可能无违规或出错。"
fi

# 7. 清理临时文件
rm -f "$FILE_LIST"

# 8. 始终以成功状态退出(违规由 YAML 汇总步骤决定)
exit 0
74 changes: 74 additions & 0 deletions .github/scripts/spotbugs-incremental.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
#!/bin/bash
# ============================================================
# spotbugs-incremental.sh - 增量 SpotBugs 扫描
# 功能:只分析本次变更的 Java 文件对应的类
# ============================================================

set -e

echo "========================================"
echo " SpotBugs 增量扫描"
echo "========================================"

# 确定目标分支
if [ -n "$GITHUB_BASE_REF" ]; then
BASE_BRANCH="origin/$GITHUB_BASE_REF"
elif [ -n "$GITHUB_REF" ] && [ "$GITHUB_EVENT_NAME" == "push" ]; then
BASE_BRANCH="HEAD^"
else
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 环境变量。"
exit 1
fi
echo "🔍 本地运行模式,对比分支: $BASE_BRANCH"
fi

# 获取变更的 Java 文件
CHANGED_JAVA=$(git diff --name-only "$BASE_BRANCH" HEAD 2>/dev/null | grep '\.java$' || true)

if [ -z "$CHANGED_JAVA" ]; then
echo "✅ 没有 Java 文件变更,跳过 SpotBugs 扫描。"
exit 0
fi

echo "📝 变更的 Java 文件:"
echo "$CHANGED_JAVA"

# 提取类名列表
class_list=""
for file in $CHANGED_JAVA; do
# 文件可能已被删除,跳过
if [ ! -f "$file" ]; then
continue
fi
# 提取包名(假设文件中有 package 声明)
pkg=$(grep '^package' "$file" | sed -E 's/package\s+([^;]+);.*/\1/' | head -1)
if [ -z "$pkg" ]; then
echo "⚠️ 跳过 $file(未找到 package 声明)"
continue
fi
# 提取类名(不含 .java 后缀)
classname=$(basename "$file" .java)
fqdn="$pkg.$classname"
if [ -z "$class_list" ]; then
class_list="$fqdn"
else
class_list="$class_list,$fqdn"
fi
done

if [ -z "$class_list" ]; then
echo "⚠️ 未能提取到任何有效的类名,跳过 SpotBugs。"
exit 0
fi

echo "📋 待分析的类:$class_list"
echo "----------------------------------------"

# 执行 SpotBugs 增量分析
echo "🚀 执行 SpotBugs 增量扫描..."
mvn spotbugs:check -Dspotbugs.onlyAnalyze="$class_list"
Loading
Loading