From 0f8e39a236e4555684a29b9ec267e44636c146d1 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 26 Mar 2026 15:10:59 +0100 Subject: [PATCH] C++: Silence `ExtractionRecoverableWarning`s when BMN is active --- cpp/ql/src/Diagnostics/ExtractionProblems.qll | 11 ++++++++++- cpp/ql/src/Diagnostics/ExtractionWarnings.ql | 4 +++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/cpp/ql/src/Diagnostics/ExtractionProblems.qll b/cpp/ql/src/Diagnostics/ExtractionProblems.qll index b6dd835261d1..1199ca1c7f42 100644 --- a/cpp/ql/src/Diagnostics/ExtractionProblems.qll +++ b/cpp/ql/src/Diagnostics/ExtractionProblems.qll @@ -50,7 +50,7 @@ private newtype TExtractionProblem = /** * Superclass for the extraction problem hierarchy. */ -class ExtractionProblem extends TExtractionProblem { +abstract class ExtractionProblem extends TExtractionProblem { /** Gets the string representation of the problem. */ string toString() { none() } @@ -65,6 +65,9 @@ class ExtractionProblem extends TExtractionProblem { /** Gets the SARIF severity of this problem. */ int getSeverity() { none() } + + /** Gets the `Compilation` the problem is associated with. */ + abstract Compilation getCompilation(); } /** @@ -96,6 +99,8 @@ class ExtractionUnrecoverableError extends ExtractionProblem, TCompilationFailed // [errors](https://docs.oasis-open.org/sarif/sarif/v2.1.0/csprd01/sarif-v2.1.0-csprd01.html#_Toc10541338). result = 2 } + + override Compilation getCompilation() { result = c } } /** @@ -122,6 +127,8 @@ class ExtractionRecoverableWarning extends ExtractionProblem, TReportableWarning // [warnings](https://docs.oasis-open.org/sarif/sarif/v2.1.0/csprd01/sarif-v2.1.0-csprd01.html#_Toc10541338). result = 1 } + + override Compilation getCompilation() { result = err.getCompilation() } } /** @@ -148,4 +155,6 @@ class ExtractionUnknownProblem extends ExtractionProblem, TUnknownProblem { // [warnings](https://docs.oasis-open.org/sarif/sarif/v2.1.0/csprd01/sarif-v2.1.0-csprd01.html#_Toc10541338). result = 1 } + + override Compilation getCompilation() { result = err.getCompilation() } } diff --git a/cpp/ql/src/Diagnostics/ExtractionWarnings.ql b/cpp/ql/src/Diagnostics/ExtractionWarnings.ql index f32768734ca0..c0e9eb7d24be 100644 --- a/cpp/ql/src/Diagnostics/ExtractionWarnings.ql +++ b/cpp/ql/src/Diagnostics/ExtractionWarnings.ql @@ -10,7 +10,9 @@ import ExtractionProblems from ExtractionProblem warning where - warning instanceof ExtractionRecoverableWarning and exists(warning.getFile().getRelativePath()) + warning instanceof ExtractionRecoverableWarning and + exists(warning.getFile().getRelativePath()) and + not warning.getCompilation().buildModeNone() or warning instanceof ExtractionUnknownProblem select warning,