Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8d7dde2b9a29de9204dbba36a839a81d1c5504ef
https://github.com/WebKit/WebKit/commit/8d7dde2b9a29de9204dbba36a839a81d1c5504ef
Author: Ryan Haddad <[email protected]>
Date: 2026-07-20 (Mon, 20 Jul 2026)
Changed paths:
M Makefile.shared
M Tools/CISupport/ews-build/steps.py
M Tools/CISupport/ews-build/steps_unittest.py
M Tools/Scripts/build-and-analyze
Log Message:
-----------
[SaferCPP] Stop analysis when compilation fails to avoid false positives
https://bugs.webkit.org/show_bug.cgi?id=311433
rdar://174030151
Reviewed by Ryosuke Niwa.
When compilation failed, `make analyze` still returned 0 (due to `|| true`), so
build-and-analyze
continued on to generate-static-analysis-archive and the SaferCPP EWS step
compared an incomplete
analyzer output against baseline, spuriously blaming the PR author for
pre-existing failures.
The analyzer emits findings as warnings, so a successful analyze run that finds
issues
still exits with rc=0. A non-zero exit code only signals a real compilation
failure. Propagating
it end-to-end lets the existing EWS revert/without-change path correctly
attribute the failure
instead of the author.
* Makefile.shared:
(analyze): Remove `|| true` so a compilation failure propagates. On success the
report-indexing loop still runs as before.
* Tools/Scripts/build-and-analyze:
(main): Return early with the non-zero return code when a command fails, so
generate-static-analysis-archive is skipped after a failed compile.
* Tools/CISupport/ews-build/steps.py:
(ScanBuild.run): Treat a non-zero return code as failure, not just a missing
`ANALYZE SUCCEEDED` string, to catch partial builds where an early target
succeeds but a later one fails to compile.
* Tools/CISupport/ews-build/steps_unittest.py:
(TestScanBuild.test_compile_failure): Added.
(TestScanBuild.test_partial_compile_failure): Added.
Canonical link: https://commits.webkit.org/317543@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications