From d88bae9ec20df5e18dba21f7e07db0c63724b11f Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 11 Dec 2025 17:57:16 +0000 Subject: [PATCH] Rust: Narrow the exclusion a little. --- rust/ql/src/queries/unusedentities/UnusedVariable.qll | 8 +++++--- .../query-tests/unusedentities/UnusedVariable.expected | 1 + rust/ql/test/query-tests/unusedentities/main.rs | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/rust/ql/src/queries/unusedentities/UnusedVariable.qll b/rust/ql/src/queries/unusedentities/UnusedVariable.qll index 64d49a547f1..744af559dd2 100644 --- a/rust/ql/src/queries/unusedentities/UnusedVariable.qll +++ b/rust/ql/src/queries/unusedentities/UnusedVariable.qll @@ -44,7 +44,9 @@ predicate isAllowableUnused(Variable v) { // a 'self' variable v.getText() = "self" or - // a common source of false positives is match arms that are misrecognized as - // a variable, having not been correctly resolved - v.getPat().getParentNode() instanceof MatchArm + // a common source of false positives is match arms containing constants + // (typically beginning with a capital letter) that are misrecognized as a + // variable, having not been correctly resolved. + v.getPat().getParentNode() instanceof MatchArm and + v.getText().charAt(0).isUppercase() } diff --git a/rust/ql/test/query-tests/unusedentities/UnusedVariable.expected b/rust/ql/test/query-tests/unusedentities/UnusedVariable.expected index ca3b2979ef9..583587b8a13 100644 --- a/rust/ql/test/query-tests/unusedentities/UnusedVariable.expected +++ b/rust/ql/test/query-tests/unusedentities/UnusedVariable.expected @@ -10,6 +10,7 @@ | main.rs:307:13:307:15 | num | Variable 'num' is not used. | | main.rs:342:25:342:25 | y | Variable 'y' is not used. | | main.rs:345:28:345:28 | a | Variable 'a' is not used. | +| main.rs:348:9:348:9 | p | Variable 'p' is not used. | | main.rs:366:9:366:13 | right | Variable 'right' is not used. | | main.rs:372:9:372:14 | right2 | Variable 'right2' is not used. | | main.rs:383:13:383:13 | y | Variable 'y' is not used. | diff --git a/rust/ql/test/query-tests/unusedentities/main.rs b/rust/ql/test/query-tests/unusedentities/main.rs index 96bd808cee9..a08a05a83bd 100644 --- a/rust/ql/test/query-tests/unusedentities/main.rs +++ b/rust/ql/test/query-tests/unusedentities/main.rs @@ -345,7 +345,7 @@ fn if_lets_matches() { MyPoint { x: 3, y: a } => { // $ Alert[rust/unused-variable] } MyPoint { x: 4, .. } => {} - p => { // $ MISSING: Alert[rust/unused-variable] + p => { // $ Alert[rust/unused-variable] } }