Skip to content

Commit 748ac99

Browse files
committed
fix:code check test
1 parent 6d816cd commit 748ac99

1 file changed

Lines changed: 58 additions & 14 deletions

File tree

.github/scripts/spotbugs-incremental.sh

Lines changed: 58 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
#!/bin/bash
22
# ============================================================
33
# spotbugs-incremental.sh - 增量 SpotBugs 扫描
4-
# 功能:只分析本次变更的 src/main/java 文件对应的类
4+
# 功能:只分析本次变更的 src/main/java 或 src/test/java 文件对应的类
55
# 报告:各模块 target/spotbugsXml.xml、target/spotbugs-reports/spotbugs*.html
66
# ============================================================
77

88
set -euo pipefail
99

1010
echo "========================================"
1111
echo " SpotBugs 增量扫描"
12-
echo " 扫描范围:本次变更的主源码 Java 类"
12+
echo " 扫描范围:本次变更的主源码和测试源码 Java 类"
1313
echo "========================================"
1414

1515
# 1. 确定目标分支
@@ -47,6 +47,8 @@ echo "----------------------------------------"
4747

4848
# 3. 按 Maven 模块提取待分析类
4949
declare -A module_classes
50+
declare -A module_include_tests
51+
declare -A module_scopes
5052
scan_count=0
5153

5254
for file in $CHANGED_JAVA; do
@@ -63,8 +65,14 @@ for file in $CHANGED_JAVA; do
6365
continue
6466
fi
6567

66-
if [[ "$rel" != src/main/java/* ]]; then
67-
echo "ℹ️ SpotBugs 默认分析主类,跳过非主源码文件: $file"
68+
source_scope=""
69+
if [[ "$rel" == src/main/java/* ]]; then
70+
source_scope="main"
71+
elif [[ "$rel" == src/test/java/* ]]; then
72+
source_scope="test"
73+
module_include_tests[$module]="true"
74+
else
75+
echo "ℹ️ SpotBugs 分析编译后的 main/test class,跳过非源码目录文件: $file"
6876
continue
6977
fi
7078

@@ -82,17 +90,25 @@ for file in $CHANGED_JAVA; do
8290
else
8391
module_classes[$module]="${module_classes[$module]},$fqcn"
8492
fi
93+
94+
if [ -z "${module_scopes[$module]:-}" ]; then
95+
module_scopes[$module]="$source_scope"
96+
elif [[ ",${module_scopes[$module]}," != *",$source_scope,"* ]]; then
97+
module_scopes[$module]="${module_scopes[$module]},$source_scope"
98+
fi
99+
85100
scan_count=$((scan_count + 1))
86101
done
87102

88103
if [ ${#module_classes[@]} -eq 0 ]; then
89-
echo "✅ 没有需要 SpotBugs 分析的主源码类"
104+
echo "✅ 没有需要 SpotBugs 分析的主源码或测试源码类"
90105
exit 0
91106
fi
92107

93108
echo "📋 按模块分组后的类:"
94109
for module in "${!module_classes[@]}"; do
95-
echo " $module: ${module_classes[$module]}"
110+
include_tests="${module_include_tests[$module]:-false}"
111+
echo " $module (${module_scopes[$module]}, includeTests=$include_tests): ${module_classes[$module]}"
96112
done
97113
echo "----------------------------------------"
98114

@@ -104,17 +120,32 @@ html_failures=0
104120
# 4. 对每个模块执行 SpotBugs
105121
for module in "${!module_classes[@]}"; do
106122
class_list="${module_classes[$module]}"
123+
include_tests="${module_include_tests[$module]:-false}"
107124
echo "🚀 扫描模块: $module"
108125
echo " 类列表: $class_list"
126+
echo " 扫描测试类: $include_tests"
109127

110128
rm -f "$module/target/spotbugsXml.xml"
111129
rm -rf "$module/target/spotbugs-reports"
112130

113131
set +e
114-
output=$(cd "$module" && mvn spotbugs:check \
115-
-Dspotbugs.onlyAnalyze="$class_list" \
116-
-Dspotbugs.xmlOutput=true \
117-
-Dspotbugs.htmlOutput=true 2>&1)
132+
if [ "$include_tests" == "true" ]; then
133+
output=$(cd "$module" && mvn test-compile spotbugs:check \
134+
-DskipTests \
135+
-Dcheckstyle.skip=true \
136+
-Dpmd.skip=true \
137+
-Dcpd.skip=true \
138+
-Dspotbugs.onlyAnalyze="$class_list" \
139+
-Dspotbugs.includeTests=true \
140+
-Dspotbugs.xmlOutput=true \
141+
-Dspotbugs.htmlOutput=true 2>&1)
142+
else
143+
output=$(cd "$module" && mvn spotbugs:check \
144+
-Dspotbugs.onlyAnalyze="$class_list" \
145+
-Dspotbugs.includeTests=false \
146+
-Dspotbugs.xmlOutput=true \
147+
-Dspotbugs.htmlOutput=true 2>&1)
148+
fi
118149
mvn_exit=$?
119150
set -e
120151
echo "$output"
@@ -128,10 +159,23 @@ for module in "${!module_classes[@]}"; do
128159
if [ "$html_count" -eq 0 ]; then
129160
echo " - 未找到 SpotBugs HTML 报告,单独生成可视化报告..."
130161
set +e
131-
report_output=$(cd "$module" && mvn spotbugs:spotbugs \
132-
-Dspotbugs.onlyAnalyze="$class_list" \
133-
-Dspotbugs.xmlOutput=true \
134-
-Dspotbugs.htmlOutput=true 2>&1)
162+
if [ "$include_tests" == "true" ]; then
163+
report_output=$(cd "$module" && mvn test-compile spotbugs:spotbugs \
164+
-DskipTests \
165+
-Dcheckstyle.skip=true \
166+
-Dpmd.skip=true \
167+
-Dcpd.skip=true \
168+
-Dspotbugs.onlyAnalyze="$class_list" \
169+
-Dspotbugs.includeTests=true \
170+
-Dspotbugs.xmlOutput=true \
171+
-Dspotbugs.htmlOutput=true 2>&1)
172+
else
173+
report_output=$(cd "$module" && mvn spotbugs:spotbugs \
174+
-Dspotbugs.onlyAnalyze="$class_list" \
175+
-Dspotbugs.includeTests=false \
176+
-Dspotbugs.xmlOutput=true \
177+
-Dspotbugs.htmlOutput=true 2>&1)
178+
fi
135179
report_exit=$?
136180
set -e
137181
echo "$report_output"

0 commit comments

Comments
 (0)