From 107d142b24d982d3b9cf2326c6a249c5bac8c276 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 16 Sep 2025 10:33:25 +0200 Subject: [PATCH] C#: Exclude enum types as they don't inherit the default toString. --- csharp/ql/src/Useless code/DefaultToStringQuery.qll | 1 + .../ql/src/change-notes/2025-09-16-default-tostring-enum.md | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 csharp/ql/src/change-notes/2025-09-16-default-tostring-enum.md diff --git a/csharp/ql/src/Useless code/DefaultToStringQuery.qll b/csharp/ql/src/Useless code/DefaultToStringQuery.qll index f11b5a9cd324..411ca47b5e67 100644 --- a/csharp/ql/src/Useless code/DefaultToStringQuery.qll +++ b/csharp/ql/src/Useless code/DefaultToStringQuery.qll @@ -47,6 +47,7 @@ private predicate alwaysInvokesToString(ParameterRead pr) { */ predicate alwaysDefaultToString(ValueOrRefType t) { not t instanceof TupleType and + not t instanceof Enum and exists(ToStringMethod m | t.hasMethod(m) | m.getDeclaringType() instanceof SystemObjectClass or m.getDeclaringType() instanceof SystemValueTypeClass diff --git a/csharp/ql/src/change-notes/2025-09-16-default-tostring-enum.md b/csharp/ql/src/change-notes/2025-09-16-default-tostring-enum.md new file mode 100644 index 000000000000..30ba96e0b01f --- /dev/null +++ b/csharp/ql/src/change-notes/2025-09-16-default-tostring-enum.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The query `cs/call-to-object-tostring` has been improved to remove false positives for enum types.