diff --git a/.github/workflows/errorprone.yml b/.github/workflows/errorprone.yml index f1d465f2f69..ce0a3d2b4f2 100644 --- a/.github/workflows/errorprone.yml +++ b/.github/workflows/errorprone.yml @@ -45,43 +45,72 @@ jobs: cache: maven - name: Run Error Prone Static Analysis (Strict Mode) + id: errorprone run: | echo "::group::Error Prone Analysis" # Temporarily remove -XepAllErrorsAsWarnings to run in strict mode sed -i 's/-Xplugin:ErrorProne -XepAllErrorsAsWarnings/-Xplugin:ErrorProne/g' pom.xml - mvn clean compile -DskipTests -T$(nproc) 2>&1 | tee errorprone.log - BUILD_RESULT=$? + + set -o pipefail + + # Use -fae (fail-at-end) to build all modules and report failures at the end + mvn -fae clean test-compile -T$(nproc) 2>&1 | tee errorprone.log + MVN_EXIT=${PIPESTATUS[0]} + + echo "mvn_exit=${MVN_EXIT}" >> $GITHUB_OUTPUT echo "::endgroup::" - exit $BUILD_RESULT + + exit 0 continue-on-error: true - name: Check for Error Prone Issues id: check-errors run: | + HAS_ERRORS=false + + if [ "${{ steps.errorprone.outputs.mvn_exit }}" != "0" ]; then + HAS_ERRORS=true + echo "Maven build exited with code ${{ steps.errorprone.outputs.mvn_exit }}" + fi + if grep -q "error: \[" errorprone.log; then + HAS_ERRORS=true + fi + + if grep -q "^\[ERROR\]" errorprone.log; then + HAS_ERRORS=true + fi + + if [ "$HAS_ERRORS" = "true" ]; then echo "has_errors=true" >> $GITHUB_OUTPUT - echo "::error::Error Prone found issues in the code" + echo "::error::Error Prone and/or compilation issues found in the code" echo "" - echo "=== Error Prone Issues Found ===" - grep -B 2 "error: \[" errorprone.log | head -50 + echo "=== Error Prone Issues ===" + grep -n "error: \[" errorprone.log | head -50 || echo "No Error Prone specific issues" echo "" - - # Create job summary + echo "=== Maven [ERROR] Lines ===" + grep -n "^\[ERROR\]" errorprone.log | head -50 || echo "No Maven errors" + echo "" + echo "## ⚠️ Error Prone Analysis Failed" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY - echo "Error Prone static analysis detected issues in this PR." >> $GITHUB_STEP_SUMMARY + echo "Error Prone static analysis and/or compilation detected issues in this PR." >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY - echo "### Issues Found (first 50):" >> $GITHUB_STEP_SUMMARY + echo "### Error Prone Issues (first 50):" >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY - grep -B 2 "error: \[" errorprone.log | head -50 >> $GITHUB_STEP_SUMMARY + grep -n "error: \[" errorprone.log | head -50 >> $GITHUB_STEP_SUMMARY || echo "None" >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "### Maven Compilation Errors (first 50):" >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + grep -n "^\[ERROR\]" errorprone.log | head -50 >> $GITHUB_STEP_SUMMARY || echo "None" >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "See the [Error Prone documentation](https://errorprone.info/) for details on each bug pattern." >> $GITHUB_STEP_SUMMARY else echo "has_errors=false" >> $GITHUB_OUTPUT echo "✅ No Error Prone issues found" - - # Create success summary + echo "## ✅ Error Prone Analysis Passed" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "No issues detected by Error Prone static analysis." >> $GITHUB_STEP_SUMMARY