From 56802035df83d5c777c306404dd22ac77e991987 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Tue, 9 Sep 2025 13:10:37 +0200 Subject: [PATCH 1/4] Java: Add some medium precision queries to the code-quality-extended suite. --- java/ql/src/Advisory/Declarations/NonFinalImmutableField.ql | 5 ++++- java/ql/src/Advisory/Declarations/NonPrivateField.ql | 5 ++++- java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql | 4 +++- .../src/Advisory/Documentation/MissingJavadocParameters.ql | 4 +++- .../Advisory/Documentation/MissingJavadocReturnValues.ql | 4 +++- java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql | 5 ++++- java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql | 4 +++- java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql | 4 +++- java/ql/src/Advisory/Java Objects/AvoidCloneOverride.ql | 4 +++- .../ql/src/Advisory/Java Objects/AvoidCloneableInterface.ql | 4 +++- java/ql/src/Advisory/Java Objects/AvoidFinalizeOverride.ql | 4 +++- java/ql/src/Advisory/Naming/NamingConventionsConstants.ql | 4 +++- java/ql/src/Advisory/Naming/NamingConventionsMethods.ql | 4 +++- java/ql/src/Advisory/Naming/NamingConventionsPackages.ql | 4 +++- java/ql/src/Advisory/Naming/NamingConventionsRefTypes.ql | 4 +++- java/ql/src/Advisory/Naming/NamingConventionsVariables.ql | 4 +++- java/ql/src/Advisory/Statements/MissingDefaultInSwitch.ql | 4 +++- java/ql/src/Advisory/Statements/OneStatementPerLine.ql | 4 +++- .../ql/src/Advisory/Statements/TerminateIfElseIfWithElse.ql | 4 +++- java/ql/src/Advisory/Types/GenericsConstructor.ql | 5 ++++- java/ql/src/Advisory/Types/GenericsReturnType.ql | 5 ++++- java/ql/src/Advisory/Types/GenericsVariable.ql | 5 ++++- java/ql/src/DeadCode/DeadClass.ql | 3 ++- java/ql/src/DeadCode/DeadEnumConstant.ql | 3 ++- java/ql/src/DeadCode/DeadField.ql | 3 ++- java/ql/src/DeadCode/DeadMethod.ql | 3 ++- java/ql/src/Language Abuse/OverridePackagePrivate.ql | 4 +++- java/ql/src/Language Abuse/TypeVarExtendsFinalType.ql | 4 ++-- java/ql/src/Likely Bugs/Arithmetic/BadAbsOfRandom.ql | 5 +++-- java/ql/src/Likely Bugs/Arithmetic/MultiplyRemainder.ql | 4 +++- java/ql/src/Likely Bugs/Arithmetic/RandomUsedOnce.ql | 5 +++-- java/ql/src/Likely Bugs/Cloning/MissingCallToSuperClone.ql | 5 +++-- java/ql/src/Likely Bugs/Cloning/MissingMethodClone.ql | 5 +++-- .../ql/src/Likely Bugs/Collections/IteratorRemoveMayFail.ql | 4 ++-- java/ql/src/Likely Bugs/Comparison/CovariantCompareTo.ql | 3 ++- java/ql/src/Likely Bugs/Comparison/CovariantEquals.ql | 3 ++- java/ql/src/Likely Bugs/Comparison/InconsistentCompareTo.ql | 3 ++- java/ql/src/Likely Bugs/Comparison/StringComparison.ql | 4 +++- java/ql/src/Likely Bugs/Concurrency/CallsToConditionWait.ql | 3 ++- .../src/Likely Bugs/Concurrency/DateFormatThreadUnsafe.ql | 3 ++- java/ql/src/Likely Bugs/Concurrency/FutileSynchOnField.ql | 3 ++- java/ql/src/Likely Bugs/Concurrency/NotifyNotNotifyAll.ql | 3 ++- java/ql/src/Likely Bugs/Concurrency/SleepWithLock.ql | 4 +++- java/ql/src/Likely Bugs/Concurrency/StartInConstructor.ql | 3 ++- java/ql/src/Likely Bugs/Concurrency/SynchWriteObject.ql | 4 ++-- .../src/Likely Bugs/Finalization/NullifiedSuperFinalize.ql | 5 +++-- java/ql/src/Likely Bugs/Frameworks/JUnit/BadSuiteMethod.ql | 6 +++--- .../Likely Bugs/Frameworks/Swing/BadlyOverriddenAdapter.ql | 6 +++--- .../Likely Bugs/Likely Typos/DangerousNonCircuitLogic.ql | 4 +++- java/ql/src/Likely Bugs/Likely Typos/EqualsTypo.ql | 5 +++-- java/ql/src/Likely Bugs/Likely Typos/HashCodeTypo.ql | 5 +++-- java/ql/src/Likely Bugs/Likely Typos/ToStringTypo.ql | 5 +++-- .../ql/src/Likely Bugs/Reflection/AnnotationPresentCheck.ql | 5 +++-- .../Likely Bugs/Serialization/IncorrectSerialVersionUID.ql | 6 +++--- .../Serialization/IncorrectSerializableMethods.ql | 6 +++--- .../Serialization/MissingVoidConstructorOnExternalizable.ql | 6 +++--- .../Serialization/MissingVoidConstructorsOnSerializable.ql | 6 +++--- .../Likely Bugs/Serialization/NonSerializableInnerClass.ql | 6 +++--- java/ql/src/Likely Bugs/Serialization/ReadResolveObject.ql | 6 +++--- java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql | 5 +++-- java/ql/src/Likely Bugs/Termination/SpinOnField.ql | 4 +++- .../Dead Code/CreatesEmptyZip.ql | 5 +++-- .../Implementation Hiding/GetClassGetResource.ql | 5 +++-- .../Naming Conventions/FieldMasksSuperField.ql | 4 +++- .../Undesirable Calls/NextFromIterator.ql | 3 ++- 65 files changed, 185 insertions(+), 96 deletions(-) diff --git a/java/ql/src/Advisory/Declarations/NonFinalImmutableField.ql b/java/ql/src/Advisory/Declarations/NonFinalImmutableField.ql index 493168d80a7e..1ca836ab2317 100644 --- a/java/ql/src/Advisory/Declarations/NonFinalImmutableField.ql +++ b/java/ql/src/Advisory/Declarations/NonFinalImmutableField.ql @@ -7,7 +7,10 @@ * @problem.severity recommendation * @precision medium * @id java/non-final-immutable-field - * @tags reliability + * @tags quality + * reliability + * correctness + * readability */ import java diff --git a/java/ql/src/Advisory/Declarations/NonPrivateField.ql b/java/ql/src/Advisory/Declarations/NonPrivateField.ql index 30b18ec53fda..ca081f41ed67 100644 --- a/java/ql/src/Advisory/Declarations/NonPrivateField.ql +++ b/java/ql/src/Advisory/Declarations/NonPrivateField.ql @@ -6,7 +6,10 @@ * @problem.severity recommendation * @precision medium * @id java/non-private-field - * @tags maintainability + * @tags quality + * maintainability + * readability + * complexity */ import java diff --git a/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql b/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql index 49d90a595d37..5f63754d9e46 100644 --- a/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql +++ b/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision medium * @id java/undocumented-function - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql b/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql index ec4735e5e211..d029df513b70 100644 --- a/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql +++ b/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision medium * @id java/undocumented-parameter - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql b/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql index 6668fa6da33e..1c5275f991a5 100644 --- a/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql +++ b/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision medium * @id java/undocumented-return-value - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql b/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql index 2b6b346062c9..c1025df1f989 100644 --- a/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql +++ b/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql @@ -6,7 +6,10 @@ * @problem.severity recommendation * @precision medium * @id java/undocumented-exception - * @tags maintainability + * @tags quality + * maintainability + * readability + * error-handling */ import java diff --git a/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql b/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql index b9c5958623da..2ca4f44567fc 100644 --- a/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql +++ b/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision medium * @id java/undocumented-type - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql b/java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql index e2e9b32feeef..eb3b80f47205 100644 --- a/java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql +++ b/java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision medium * @id java/use-of-clone-method - * @tags reliability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Advisory/Java Objects/AvoidCloneOverride.ql b/java/ql/src/Advisory/Java Objects/AvoidCloneOverride.ql index 45460ad15ed8..482aecd8e03c 100644 --- a/java/ql/src/Advisory/Java Objects/AvoidCloneOverride.ql +++ b/java/ql/src/Advisory/Java Objects/AvoidCloneOverride.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision medium * @id java/override-of-clone-method - * @tags reliability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Advisory/Java Objects/AvoidCloneableInterface.ql b/java/ql/src/Advisory/Java Objects/AvoidCloneableInterface.ql index 02abef171308..a3ab822872d6 100644 --- a/java/ql/src/Advisory/Java Objects/AvoidCloneableInterface.ql +++ b/java/ql/src/Advisory/Java Objects/AvoidCloneableInterface.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision medium * @id java/use-of-cloneable-interface - * @tags reliability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Advisory/Java Objects/AvoidFinalizeOverride.ql b/java/ql/src/Advisory/Java Objects/AvoidFinalizeOverride.ql index 3b5ddefbb34f..0d74c4281a2c 100644 --- a/java/ql/src/Advisory/Java Objects/AvoidFinalizeOverride.ql +++ b/java/ql/src/Advisory/Java Objects/AvoidFinalizeOverride.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision medium * @id java/override-of-finalize-method - * @tags reliability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Advisory/Naming/NamingConventionsConstants.ql b/java/ql/src/Advisory/Naming/NamingConventionsConstants.ql index 4ee4bfd27cf1..bd079b6fc203 100644 --- a/java/ql/src/Advisory/Naming/NamingConventionsConstants.ql +++ b/java/ql/src/Advisory/Naming/NamingConventionsConstants.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision medium * @id java/misnamed-constant - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Naming/NamingConventionsMethods.ql b/java/ql/src/Advisory/Naming/NamingConventionsMethods.ql index a4347b783a07..90b3edd4bbcc 100644 --- a/java/ql/src/Advisory/Naming/NamingConventionsMethods.ql +++ b/java/ql/src/Advisory/Naming/NamingConventionsMethods.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision medium * @id java/misnamed-function - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Naming/NamingConventionsPackages.ql b/java/ql/src/Advisory/Naming/NamingConventionsPackages.ql index 7d135b21fac2..efd6207d66f0 100644 --- a/java/ql/src/Advisory/Naming/NamingConventionsPackages.ql +++ b/java/ql/src/Advisory/Naming/NamingConventionsPackages.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision medium * @id java/misnamed-package - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Naming/NamingConventionsRefTypes.ql b/java/ql/src/Advisory/Naming/NamingConventionsRefTypes.ql index 6942eaab69a4..5106b6e80b7c 100644 --- a/java/ql/src/Advisory/Naming/NamingConventionsRefTypes.ql +++ b/java/ql/src/Advisory/Naming/NamingConventionsRefTypes.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision medium * @id java/misnamed-type - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Naming/NamingConventionsVariables.ql b/java/ql/src/Advisory/Naming/NamingConventionsVariables.ql index bafa2ec5b14f..0d225aa1749b 100644 --- a/java/ql/src/Advisory/Naming/NamingConventionsVariables.ql +++ b/java/ql/src/Advisory/Naming/NamingConventionsVariables.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision medium * @id java/misnamed-variable - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Statements/MissingDefaultInSwitch.ql b/java/ql/src/Advisory/Statements/MissingDefaultInSwitch.ql index eab8a596f0e7..28387ab766b9 100644 --- a/java/ql/src/Advisory/Statements/MissingDefaultInSwitch.ql +++ b/java/ql/src/Advisory/Statements/MissingDefaultInSwitch.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision medium * @id java/missing-default-in-switch - * @tags reliability + * @tags quality + * reliability + * correctness * external/cwe/cwe-478 */ diff --git a/java/ql/src/Advisory/Statements/OneStatementPerLine.ql b/java/ql/src/Advisory/Statements/OneStatementPerLine.ql index b4133761e27e..2663cab57a9c 100644 --- a/java/ql/src/Advisory/Statements/OneStatementPerLine.ql +++ b/java/ql/src/Advisory/Statements/OneStatementPerLine.ql @@ -5,7 +5,9 @@ * @problem.severity recommendation * @precision medium * @id java/multiple-statements-on-same-line - * @tags maintainability + * @tags quality + * maintainability + * readability */ import java diff --git a/java/ql/src/Advisory/Statements/TerminateIfElseIfWithElse.ql b/java/ql/src/Advisory/Statements/TerminateIfElseIfWithElse.ql index 0172719094cb..b15dd1c17464 100644 --- a/java/ql/src/Advisory/Statements/TerminateIfElseIfWithElse.ql +++ b/java/ql/src/Advisory/Statements/TerminateIfElseIfWithElse.ql @@ -6,7 +6,9 @@ * @problem.severity recommendation * @precision medium * @id java/non-terminated-if-else-if-chain - * @tags reliability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Advisory/Types/GenericsConstructor.ql b/java/ql/src/Advisory/Types/GenericsConstructor.ql index 411c24662901..4af9f93c86f2 100644 --- a/java/ql/src/Advisory/Types/GenericsConstructor.ql +++ b/java/ql/src/Advisory/Types/GenericsConstructor.ql @@ -6,7 +6,10 @@ * @problem.severity recommendation * @precision medium * @id java/raw-constructor-invocation - * @tags maintainability + * @tags quality + * maintainability + * readability + * correctness */ import java diff --git a/java/ql/src/Advisory/Types/GenericsReturnType.ql b/java/ql/src/Advisory/Types/GenericsReturnType.ql index 0107f7953a2d..4f17664902b8 100644 --- a/java/ql/src/Advisory/Types/GenericsReturnType.ql +++ b/java/ql/src/Advisory/Types/GenericsReturnType.ql @@ -6,7 +6,10 @@ * @problem.severity recommendation * @precision medium * @id java/raw-return-type - * @tags maintainability + * @tags quality + * maintainability + * readability + * correctness */ import java diff --git a/java/ql/src/Advisory/Types/GenericsVariable.ql b/java/ql/src/Advisory/Types/GenericsVariable.ql index 8f5fb3c05c91..d686feae5121 100644 --- a/java/ql/src/Advisory/Types/GenericsVariable.ql +++ b/java/ql/src/Advisory/Types/GenericsVariable.ql @@ -6,7 +6,10 @@ * @problem.severity recommendation * @precision medium * @id java/raw-variable - * @tags maintainability + * @tags quality + * maintainability + * readability + * correctness */ import java diff --git a/java/ql/src/DeadCode/DeadClass.ql b/java/ql/src/DeadCode/DeadClass.ql index 23f08fec3b87..22ffad4f835e 100644 --- a/java/ql/src/DeadCode/DeadClass.ql +++ b/java/ql/src/DeadCode/DeadClass.ql @@ -5,7 +5,8 @@ * @problem.severity recommendation * @precision medium * @id java/dead-class - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 */ diff --git a/java/ql/src/DeadCode/DeadEnumConstant.ql b/java/ql/src/DeadCode/DeadEnumConstant.ql index 190449943483..791c2b2a751f 100644 --- a/java/ql/src/DeadCode/DeadEnumConstant.ql +++ b/java/ql/src/DeadCode/DeadEnumConstant.ql @@ -5,7 +5,8 @@ * @problem.severity recommendation * @precision medium * @id java/dead-enum-constant - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 */ diff --git a/java/ql/src/DeadCode/DeadField.ql b/java/ql/src/DeadCode/DeadField.ql index 7a8bca7ac7bf..4dd0864bd159 100644 --- a/java/ql/src/DeadCode/DeadField.ql +++ b/java/ql/src/DeadCode/DeadField.ql @@ -5,7 +5,8 @@ * @problem.severity recommendation * @precision medium * @id java/dead-field - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 */ diff --git a/java/ql/src/DeadCode/DeadMethod.ql b/java/ql/src/DeadCode/DeadMethod.ql index 77401341b6c8..ea01cbf4db91 100644 --- a/java/ql/src/DeadCode/DeadMethod.ql +++ b/java/ql/src/DeadCode/DeadMethod.ql @@ -5,7 +5,8 @@ * @problem.severity recommendation * @precision medium * @id java/dead-function - * @tags maintainability + * @tags quality + * maintainability * useless-code * external/cwe/cwe-561 */ diff --git a/java/ql/src/Language Abuse/OverridePackagePrivate.ql b/java/ql/src/Language Abuse/OverridePackagePrivate.ql index d2866c76abc1..66663e18c4b2 100644 --- a/java/ql/src/Language Abuse/OverridePackagePrivate.ql +++ b/java/ql/src/Language Abuse/OverridePackagePrivate.ql @@ -6,8 +6,10 @@ * @problem.severity warning * @precision medium * @id java/non-overriding-package-private - * @tags maintainability + * @tags quality + * maintainability * readability + * correctness */ import java diff --git a/java/ql/src/Language Abuse/TypeVarExtendsFinalType.ql b/java/ql/src/Language Abuse/TypeVarExtendsFinalType.ql index 77c318bcb9ea..13b77d10d066 100644 --- a/java/ql/src/Language Abuse/TypeVarExtendsFinalType.ql +++ b/java/ql/src/Language Abuse/TypeVarExtendsFinalType.ql @@ -7,9 +7,9 @@ * @problem.severity warning * @precision medium * @id java/type-bound-extends-final - * @tags maintainability + * @tags quality + * maintainability * readability - * types */ import java diff --git a/java/ql/src/Likely Bugs/Arithmetic/BadAbsOfRandom.ql b/java/ql/src/Likely Bugs/Arithmetic/BadAbsOfRandom.ql index 26353891f418..2af66f5cfba8 100644 --- a/java/ql/src/Likely Bugs/Arithmetic/BadAbsOfRandom.ql +++ b/java/ql/src/Likely Bugs/Arithmetic/BadAbsOfRandom.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision medium * @id java/abs-of-random - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Arithmetic/MultiplyRemainder.ql b/java/ql/src/Likely Bugs/Arithmetic/MultiplyRemainder.ql index 8992d1753d9b..ee1e1ca3fed9 100644 --- a/java/ql/src/Likely Bugs/Arithmetic/MultiplyRemainder.ql +++ b/java/ql/src/Likely Bugs/Arithmetic/MultiplyRemainder.ql @@ -6,7 +6,9 @@ * @problem.severity warning * @precision medium * @id java/multiplication-of-remainder - * @tags maintainability + * @tags quality + * maintainability + * readability * correctness */ diff --git a/java/ql/src/Likely Bugs/Arithmetic/RandomUsedOnce.ql b/java/ql/src/Likely Bugs/Arithmetic/RandomUsedOnce.ql index a18df3568993..7a81d366a6e0 100644 --- a/java/ql/src/Likely Bugs/Arithmetic/RandomUsedOnce.ql +++ b/java/ql/src/Likely Bugs/Arithmetic/RandomUsedOnce.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision medium * @id java/random-used-once - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * external/cwe/cwe-335 */ diff --git a/java/ql/src/Likely Bugs/Cloning/MissingCallToSuperClone.ql b/java/ql/src/Likely Bugs/Cloning/MissingCallToSuperClone.ql index 8c2f7b1d6f8a..afc7c54bbade 100644 --- a/java/ql/src/Likely Bugs/Cloning/MissingCallToSuperClone.ql +++ b/java/ql/src/Likely Bugs/Cloning/MissingCallToSuperClone.ql @@ -7,8 +7,9 @@ * @problem.severity error * @precision medium * @id java/missing-call-to-super-clone - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * external/cwe/cwe-580 */ diff --git a/java/ql/src/Likely Bugs/Cloning/MissingMethodClone.ql b/java/ql/src/Likely Bugs/Cloning/MissingMethodClone.ql index 6d48a118e290..2542637b7459 100644 --- a/java/ql/src/Likely Bugs/Cloning/MissingMethodClone.ql +++ b/java/ql/src/Likely Bugs/Cloning/MissingMethodClone.ql @@ -6,8 +6,9 @@ * @problem.severity error * @precision medium * @id java/missing-clone-method - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Collections/IteratorRemoveMayFail.ql b/java/ql/src/Likely Bugs/Collections/IteratorRemoveMayFail.ql index 0308f68f231c..09d686947e00 100644 --- a/java/ql/src/Likely Bugs/Collections/IteratorRemoveMayFail.ql +++ b/java/ql/src/Likely Bugs/Collections/IteratorRemoveMayFail.ql @@ -6,9 +6,9 @@ * @problem.severity warning * @precision medium * @id java/iterator-remove-failure - * @tags reliability + * @tags quality + * reliability * correctness - * logic */ import java diff --git a/java/ql/src/Likely Bugs/Comparison/CovariantCompareTo.ql b/java/ql/src/Likely Bugs/Comparison/CovariantCompareTo.ql index de1e27073f66..6d55bfc64882 100644 --- a/java/ql/src/Likely Bugs/Comparison/CovariantCompareTo.ql +++ b/java/ql/src/Likely Bugs/Comparison/CovariantCompareTo.ql @@ -6,7 +6,8 @@ * @problem.severity error * @precision medium * @id java/wrong-compareto-signature - * @tags reliability + * @tags quality + * reliability * correctness */ diff --git a/java/ql/src/Likely Bugs/Comparison/CovariantEquals.ql b/java/ql/src/Likely Bugs/Comparison/CovariantEquals.ql index 13f63f15a726..84018a513a5b 100644 --- a/java/ql/src/Likely Bugs/Comparison/CovariantEquals.ql +++ b/java/ql/src/Likely Bugs/Comparison/CovariantEquals.ql @@ -6,7 +6,8 @@ * @problem.severity error * @precision medium * @id java/wrong-equals-signature - * @tags reliability + * @tags quality + * reliability * correctness */ diff --git a/java/ql/src/Likely Bugs/Comparison/InconsistentCompareTo.ql b/java/ql/src/Likely Bugs/Comparison/InconsistentCompareTo.ql index 8c5a7133e141..7592fe382666 100644 --- a/java/ql/src/Likely Bugs/Comparison/InconsistentCompareTo.ql +++ b/java/ql/src/Likely Bugs/Comparison/InconsistentCompareTo.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision medium * @id java/inconsistent-compareto-and-equals - * @tags reliability + * @tags quality + * reliability * correctness */ diff --git a/java/ql/src/Likely Bugs/Comparison/StringComparison.ql b/java/ql/src/Likely Bugs/Comparison/StringComparison.ql index 63d09e0f7915..cfca2c8d7ddb 100644 --- a/java/ql/src/Likely Bugs/Comparison/StringComparison.ql +++ b/java/ql/src/Likely Bugs/Comparison/StringComparison.ql @@ -6,7 +6,9 @@ * @problem.severity warning * @precision medium * @id java/reference-equality-on-strings - * @tags reliability + * @tags quality + * reliability + * correctness * external/cwe/cwe-597 */ diff --git a/java/ql/src/Likely Bugs/Concurrency/CallsToConditionWait.ql b/java/ql/src/Likely Bugs/Concurrency/CallsToConditionWait.ql index bf1639361154..b89d619fada0 100644 --- a/java/ql/src/Likely Bugs/Concurrency/CallsToConditionWait.ql +++ b/java/ql/src/Likely Bugs/Concurrency/CallsToConditionWait.ql @@ -6,7 +6,8 @@ * @problem.severity error * @precision medium * @id java/wait-on-condition-interface - * @tags reliability + * @tags quality + * reliability * correctness * concurrency * external/cwe/cwe-662 diff --git a/java/ql/src/Likely Bugs/Concurrency/DateFormatThreadUnsafe.ql b/java/ql/src/Likely Bugs/Concurrency/DateFormatThreadUnsafe.ql index 18683ac690ff..0d87ca49bb27 100644 --- a/java/ql/src/Likely Bugs/Concurrency/DateFormatThreadUnsafe.ql +++ b/java/ql/src/Likely Bugs/Concurrency/DateFormatThreadUnsafe.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision medium * @id java/thread-unsafe-dateformat - * @tags reliability + * @tags quality + * reliability * correctness * concurrency */ diff --git a/java/ql/src/Likely Bugs/Concurrency/FutileSynchOnField.ql b/java/ql/src/Likely Bugs/Concurrency/FutileSynchOnField.ql index 7c1875dfe3ec..5d816ad8cf94 100644 --- a/java/ql/src/Likely Bugs/Concurrency/FutileSynchOnField.ql +++ b/java/ql/src/Likely Bugs/Concurrency/FutileSynchOnField.ql @@ -6,7 +6,8 @@ * @problem.severity error * @precision medium * @id java/unsafe-sync-on-field - * @tags reliability + * @tags quality + * reliability * correctness * concurrency * language-features diff --git a/java/ql/src/Likely Bugs/Concurrency/NotifyNotNotifyAll.ql b/java/ql/src/Likely Bugs/Concurrency/NotifyNotNotifyAll.ql index 047e6853011e..e21b816f1684 100644 --- a/java/ql/src/Likely Bugs/Concurrency/NotifyNotNotifyAll.ql +++ b/java/ql/src/Likely Bugs/Concurrency/NotifyNotNotifyAll.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision medium * @id java/notify-instead-of-notify-all - * @tags reliability + * @tags quality + * reliability * correctness * concurrency * external/cwe/cwe-662 diff --git a/java/ql/src/Likely Bugs/Concurrency/SleepWithLock.ql b/java/ql/src/Likely Bugs/Concurrency/SleepWithLock.ql index 417e426b7868..70a3a901ade5 100644 --- a/java/ql/src/Likely Bugs/Concurrency/SleepWithLock.ql +++ b/java/ql/src/Likely Bugs/Concurrency/SleepWithLock.ql @@ -6,9 +6,11 @@ * @problem.severity error * @precision medium * @id java/sleep-with-lock-held - * @tags reliability + * @tags quality + * reliability * correctness * concurrency + * performance * external/cwe/cwe-833 */ diff --git a/java/ql/src/Likely Bugs/Concurrency/StartInConstructor.ql b/java/ql/src/Likely Bugs/Concurrency/StartInConstructor.ql index cb971a5f109f..3c80e4519518 100644 --- a/java/ql/src/Likely Bugs/Concurrency/StartInConstructor.ql +++ b/java/ql/src/Likely Bugs/Concurrency/StartInConstructor.ql @@ -7,7 +7,8 @@ * @problem.severity warning * @precision medium * @id java/thread-start-in-constructor - * @tags reliability + * @tags quality + * reliability * correctness * concurrency */ diff --git a/java/ql/src/Likely Bugs/Concurrency/SynchWriteObject.ql b/java/ql/src/Likely Bugs/Concurrency/SynchWriteObject.ql index 3eaa67436992..1842076a71b2 100644 --- a/java/ql/src/Likely Bugs/Concurrency/SynchWriteObject.ql +++ b/java/ql/src/Likely Bugs/Concurrency/SynchWriteObject.ql @@ -6,10 +6,10 @@ * @problem.severity warning * @precision medium * @id java/inconsistent-sync-writeobject - * @tags reliability + * @tags quality + * reliability * correctness * concurrency - * language-features * external/cwe/cwe-662 */ diff --git a/java/ql/src/Likely Bugs/Finalization/NullifiedSuperFinalize.ql b/java/ql/src/Likely Bugs/Finalization/NullifiedSuperFinalize.ql index 19bac66e0281..07fb27d5a536 100644 --- a/java/ql/src/Likely Bugs/Finalization/NullifiedSuperFinalize.ql +++ b/java/ql/src/Likely Bugs/Finalization/NullifiedSuperFinalize.ql @@ -6,8 +6,9 @@ * @problem.severity error * @precision medium * @id java/missing-super-finalize - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness * external/cwe/cwe-568 */ diff --git a/java/ql/src/Likely Bugs/Frameworks/JUnit/BadSuiteMethod.ql b/java/ql/src/Likely Bugs/Frameworks/JUnit/BadSuiteMethod.ql index 2b6ae1125ddd..fb82f330c22a 100644 --- a/java/ql/src/Likely Bugs/Frameworks/JUnit/BadSuiteMethod.ql +++ b/java/ql/src/Likely Bugs/Frameworks/JUnit/BadSuiteMethod.ql @@ -6,9 +6,9 @@ * @problem.severity warning * @precision medium * @id java/wrong-junit-suite-signature - * @tags testability - * maintainability - * frameworks/junit + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Frameworks/Swing/BadlyOverriddenAdapter.ql b/java/ql/src/Likely Bugs/Frameworks/Swing/BadlyOverriddenAdapter.ql index ed3ab29c3659..6a2db4b695f3 100644 --- a/java/ql/src/Likely Bugs/Frameworks/Swing/BadlyOverriddenAdapter.ql +++ b/java/ql/src/Likely Bugs/Frameworks/Swing/BadlyOverriddenAdapter.ql @@ -7,9 +7,9 @@ * @problem.severity warning * @precision medium * @id java/wrong-swing-event-adapter-signature - * @tags reliability - * maintainability - * frameworks/swing + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Likely Typos/DangerousNonCircuitLogic.ql b/java/ql/src/Likely Bugs/Likely Typos/DangerousNonCircuitLogic.ql index 8d9409059f8e..c93e5fe91a11 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/DangerousNonCircuitLogic.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/DangerousNonCircuitLogic.ql @@ -7,7 +7,9 @@ * @problem.severity warning * @precision medium * @id java/non-short-circuit-evaluation - * @tags reliability + * @tags quality + * reliability + * correctness * readability * external/cwe/cwe-691 */ diff --git a/java/ql/src/Likely Bugs/Likely Typos/EqualsTypo.ql b/java/ql/src/Likely Bugs/Likely Typos/EqualsTypo.ql index 585306be9583..d5a117fc2dac 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/EqualsTypo.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/EqualsTypo.ql @@ -5,9 +5,10 @@ * @problem.severity warning * @precision medium * @id java/equals-typo - * @tags maintainability + * @tags quality + * reliability + * correctness * readability - * naming */ import java diff --git a/java/ql/src/Likely Bugs/Likely Typos/HashCodeTypo.ql b/java/ql/src/Likely Bugs/Likely Typos/HashCodeTypo.ql index 7a69f9f7953f..e75f9f337fde 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/HashCodeTypo.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/HashCodeTypo.ql @@ -5,9 +5,10 @@ * @problem.severity warning * @precision medium * @id java/hashcode-typo - * @tags maintainability + * @tags quality + * reliability + * correctness * readability - * naming */ import java diff --git a/java/ql/src/Likely Bugs/Likely Typos/ToStringTypo.ql b/java/ql/src/Likely Bugs/Likely Typos/ToStringTypo.ql index 928d9f5a7cc4..a4d46ec69e0c 100644 --- a/java/ql/src/Likely Bugs/Likely Typos/ToStringTypo.ql +++ b/java/ql/src/Likely Bugs/Likely Typos/ToStringTypo.ql @@ -5,9 +5,10 @@ * @problem.severity warning * @precision medium * @id java/tostring-typo - * @tags maintainability + * @tags quality + * reliability + * correctness * readability - * naming */ import java diff --git a/java/ql/src/Likely Bugs/Reflection/AnnotationPresentCheck.ql b/java/ql/src/Likely Bugs/Reflection/AnnotationPresentCheck.ql index 0bfb4b45a5a5..8b75b8c97867 100644 --- a/java/ql/src/Likely Bugs/Reflection/AnnotationPresentCheck.ql +++ b/java/ql/src/Likely Bugs/Reflection/AnnotationPresentCheck.ql @@ -6,8 +6,9 @@ * @problem.severity error * @precision medium * @id java/ineffective-annotation-present-check - * @tags correctness - * logic + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Serialization/IncorrectSerialVersionUID.ql b/java/ql/src/Likely Bugs/Serialization/IncorrectSerialVersionUID.ql index af86d90d690d..813db75526e1 100644 --- a/java/ql/src/Likely Bugs/Serialization/IncorrectSerialVersionUID.ql +++ b/java/ql/src/Likely Bugs/Serialization/IncorrectSerialVersionUID.ql @@ -6,9 +6,9 @@ * @problem.severity warning * @precision medium * @id java/incorrect-serial-version-uid - * @tags reliability - * maintainability - * language-features + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Serialization/IncorrectSerializableMethods.ql b/java/ql/src/Likely Bugs/Serialization/IncorrectSerializableMethods.ql index 815245d1a7d3..0fbf52d207e8 100644 --- a/java/ql/src/Likely Bugs/Serialization/IncorrectSerializableMethods.ql +++ b/java/ql/src/Likely Bugs/Serialization/IncorrectSerializableMethods.ql @@ -6,9 +6,9 @@ * @problem.severity warning * @precision medium * @id java/wrong-object-serialization-signature - * @tags reliability - * maintainability - * language-features + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorOnExternalizable.ql b/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorOnExternalizable.ql index 44c92634fe07..47bb0640b5ef 100644 --- a/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorOnExternalizable.ql +++ b/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorOnExternalizable.ql @@ -6,9 +6,9 @@ * @problem.severity warning * @precision medium * @id java/missing-no-arg-constructor-on-externalizable - * @tags reliability - * maintainability - * language-features + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorsOnSerializable.ql b/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorsOnSerializable.ql index 651908b0b865..c38a074529d3 100644 --- a/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorsOnSerializable.ql +++ b/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorsOnSerializable.ql @@ -7,9 +7,9 @@ * @problem.severity warning * @precision medium * @id java/missing-no-arg-constructor-on-serializable - * @tags reliability - * maintainability - * language-features + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Serialization/NonSerializableInnerClass.ql b/java/ql/src/Likely Bugs/Serialization/NonSerializableInnerClass.ql index 8081c551eed3..520dba86c418 100644 --- a/java/ql/src/Likely Bugs/Serialization/NonSerializableInnerClass.ql +++ b/java/ql/src/Likely Bugs/Serialization/NonSerializableInnerClass.ql @@ -6,9 +6,9 @@ * @problem.severity warning * @precision medium * @id java/non-serializable-inner-class - * @tags reliability - * maintainability - * language-features + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Serialization/ReadResolveObject.ql b/java/ql/src/Likely Bugs/Serialization/ReadResolveObject.ql index 64e5a4833628..629e601f4694 100644 --- a/java/ql/src/Likely Bugs/Serialization/ReadResolveObject.ql +++ b/java/ql/src/Likely Bugs/Serialization/ReadResolveObject.ql @@ -7,9 +7,9 @@ * @problem.severity warning * @precision medium * @id java/wrong-readresolve-signature - * @tags reliability - * maintainability - * language-features + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql b/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql index d1cdb8bdfbbb..0e6584bb4e5c 100644 --- a/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql +++ b/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision medium * @id java/missing-case-in-switch - * @tags reliability - * readability + * @tags quality + * reliability + * correctness * external/cwe/cwe-478 */ diff --git a/java/ql/src/Likely Bugs/Termination/SpinOnField.ql b/java/ql/src/Likely Bugs/Termination/SpinOnField.ql index d1a7d49db55c..7cfb2308c966 100644 --- a/java/ql/src/Likely Bugs/Termination/SpinOnField.ql +++ b/java/ql/src/Likely Bugs/Termination/SpinOnField.ql @@ -6,9 +6,11 @@ * @problem.severity warning * @precision medium * @id java/spin-on-field - * @tags efficiency + * @tags quality + * reliability * correctness * concurrency + * performance */ import java diff --git a/java/ql/src/Violations of Best Practice/Dead Code/CreatesEmptyZip.ql b/java/ql/src/Violations of Best Practice/Dead Code/CreatesEmptyZip.ql index a2b6afbbeee0..beea4bba5d5a 100644 --- a/java/ql/src/Violations of Best Practice/Dead Code/CreatesEmptyZip.ql +++ b/java/ql/src/Violations of Best Practice/Dead Code/CreatesEmptyZip.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision medium * @id java/empty-zip-file-entry - * @tags reliability - * readability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Violations of Best Practice/Implementation Hiding/GetClassGetResource.ql b/java/ql/src/Violations of Best Practice/Implementation Hiding/GetClassGetResource.ql index 7f52c495835e..61e928b8c700 100644 --- a/java/ql/src/Violations of Best Practice/Implementation Hiding/GetClassGetResource.ql +++ b/java/ql/src/Violations of Best Practice/Implementation Hiding/GetClassGetResource.ql @@ -6,8 +6,9 @@ * @problem.severity warning * @precision medium * @id java/unsafe-get-resource - * @tags reliability - * maintainability + * @tags quality + * reliability + * correctness */ import java diff --git a/java/ql/src/Violations of Best Practice/Naming Conventions/FieldMasksSuperField.ql b/java/ql/src/Violations of Best Practice/Naming Conventions/FieldMasksSuperField.ql index faf64b0ae5ed..e45ba34b5e55 100644 --- a/java/ql/src/Violations of Best Practice/Naming Conventions/FieldMasksSuperField.ql +++ b/java/ql/src/Violations of Best Practice/Naming Conventions/FieldMasksSuperField.ql @@ -7,8 +7,10 @@ * @problem.severity warning * @precision medium * @id java/field-masks-super-field - * @tags maintainability + * @tags quality + * maintainability * readability + * correctness */ import java diff --git a/java/ql/src/Violations of Best Practice/Undesirable Calls/NextFromIterator.ql b/java/ql/src/Violations of Best Practice/Undesirable Calls/NextFromIterator.ql index ebdf55761989..31c0d0821e2c 100644 --- a/java/ql/src/Violations of Best Practice/Undesirable Calls/NextFromIterator.ql +++ b/java/ql/src/Violations of Best Practice/Undesirable Calls/NextFromIterator.ql @@ -6,7 +6,8 @@ * @problem.severity warning * @precision medium * @id java/iterator-hasnext-calls-next - * @tags reliability + * @tags quality + * reliability * correctness */ From 6ff6d0f6bd369e4fafcbbd022a6b8195fbdcbfc7 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Tue, 9 Sep 2025 14:43:15 +0200 Subject: [PATCH 2/4] Java: Update integration test expected output. --- .../java-code-quality-extended.qls.expected | 65 +++++++++++++++++++ .../query-suite/not_included_in_qls.expected | 26 -------- 2 files changed, 65 insertions(+), 26 deletions(-) diff --git a/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected b/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected index 852389b950b5..ea091b79c8b4 100644 --- a/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected +++ b/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected @@ -1,61 +1,122 @@ ql/java/ql/src/Advisory/Declarations/MissingOverrideAnnotation.ql +ql/java/ql/src/Advisory/Declarations/NonFinalImmutableField.ql +ql/java/ql/src/Advisory/Declarations/NonPrivateField.ql ql/java/ql/src/Advisory/Documentation/ImpossibleJavadocThrows.ql +ql/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql +ql/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql +ql/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql +ql/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql +ql/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql ql/java/ql/src/Advisory/Documentation/SpuriousJavadocParam.ql +ql/java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql +ql/java/ql/src/Advisory/Java Objects/AvoidCloneOverride.ql +ql/java/ql/src/Advisory/Java Objects/AvoidCloneableInterface.ql +ql/java/ql/src/Advisory/Java Objects/AvoidFinalizeOverride.ql +ql/java/ql/src/Advisory/Naming/NamingConventionsConstants.ql +ql/java/ql/src/Advisory/Naming/NamingConventionsMethods.ql +ql/java/ql/src/Advisory/Naming/NamingConventionsPackages.ql +ql/java/ql/src/Advisory/Naming/NamingConventionsRefTypes.ql +ql/java/ql/src/Advisory/Naming/NamingConventionsVariables.ql +ql/java/ql/src/Advisory/Statements/MissingDefaultInSwitch.ql +ql/java/ql/src/Advisory/Statements/OneStatementPerLine.ql +ql/java/ql/src/Advisory/Statements/TerminateIfElseIfWithElse.ql +ql/java/ql/src/Advisory/Types/GenericsConstructor.ql +ql/java/ql/src/Advisory/Types/GenericsReturnType.ql +ql/java/ql/src/Advisory/Types/GenericsVariable.ql ql/java/ql/src/Compatibility/JDK9/JdkInternalAccess.ql ql/java/ql/src/Compatibility/JDK9/UnderscoreIdentifier.ql +ql/java/ql/src/DeadCode/DeadClass.ql +ql/java/ql/src/DeadCode/DeadEnumConstant.ql +ql/java/ql/src/DeadCode/DeadField.ql +ql/java/ql/src/DeadCode/DeadMethod.ql ql/java/ql/src/DeadCode/UselessParameter.ql ql/java/ql/src/Language Abuse/EmptyMethod.ql ql/java/ql/src/Language Abuse/IterableIterator.ql ql/java/ql/src/Language Abuse/LabelInSwitch.ql +ql/java/ql/src/Language Abuse/OverridePackagePrivate.ql +ql/java/ql/src/Language Abuse/TypeVarExtendsFinalType.ql ql/java/ql/src/Language Abuse/TypeVariableHidesType.ql ql/java/ql/src/Language Abuse/UselessNullCheck.ql ql/java/ql/src/Language Abuse/UselessTypeTest.ql ql/java/ql/src/Language Abuse/WrappedIterator.ql +ql/java/ql/src/Likely Bugs/Arithmetic/BadAbsOfRandom.ql ql/java/ql/src/Likely Bugs/Arithmetic/ConstantExpAppearsNonConstant.ql ql/java/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql ql/java/ql/src/Likely Bugs/Arithmetic/LShiftLargerThanTypeWidth.ql +ql/java/ql/src/Likely Bugs/Arithmetic/MultiplyRemainder.ql +ql/java/ql/src/Likely Bugs/Arithmetic/RandomUsedOnce.ql ql/java/ql/src/Likely Bugs/Arithmetic/WhitespaceContradictsPrecedence.ql +ql/java/ql/src/Likely Bugs/Cloning/MissingCallToSuperClone.ql +ql/java/ql/src/Likely Bugs/Cloning/MissingMethodClone.ql ql/java/ql/src/Likely Bugs/Collections/ArrayIndexOutOfBounds.ql ql/java/ql/src/Likely Bugs/Collections/ContainsTypeMismatch.ql +ql/java/ql/src/Likely Bugs/Collections/IteratorRemoveMayFail.ql ql/java/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql ql/java/ql/src/Likely Bugs/Collections/RemoveTypeMismatch.ql ql/java/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql ql/java/ql/src/Likely Bugs/Comparison/CompareIdenticalValues.ql +ql/java/ql/src/Likely Bugs/Comparison/CovariantCompareTo.ql +ql/java/ql/src/Likely Bugs/Comparison/CovariantEquals.ql ql/java/ql/src/Likely Bugs/Comparison/EqualsArray.ql ql/java/ql/src/Likely Bugs/Comparison/HashedButNoHash.ql ql/java/ql/src/Likely Bugs/Comparison/IncomparableEquals.ql +ql/java/ql/src/Likely Bugs/Comparison/InconsistentCompareTo.ql ql/java/ql/src/Likely Bugs/Comparison/InconsistentEqualsHashCode.ql ql/java/ql/src/Likely Bugs/Comparison/MissingInstanceofInEquals.ql ql/java/ql/src/Likely Bugs/Comparison/RefEqBoxed.ql +ql/java/ql/src/Likely Bugs/Comparison/StringComparison.ql ql/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql ql/java/ql/src/Likely Bugs/Comparison/WrongNanComparison.ql +ql/java/ql/src/Likely Bugs/Concurrency/CallsToConditionWait.ql ql/java/ql/src/Likely Bugs/Concurrency/CallsToRunnableRun.ql +ql/java/ql/src/Likely Bugs/Concurrency/DateFormatThreadUnsafe.ql ql/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.ql ql/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLockingWithInitRace.ql +ql/java/ql/src/Likely Bugs/Concurrency/FutileSynchOnField.ql ql/java/ql/src/Likely Bugs/Concurrency/NonSynchronizedOverride.ql +ql/java/ql/src/Likely Bugs/Concurrency/NotifyNotNotifyAll.ql ql/java/ql/src/Likely Bugs/Concurrency/ScheduledThreadPoolExecutorZeroThread.ql +ql/java/ql/src/Likely Bugs/Concurrency/SleepWithLock.ql +ql/java/ql/src/Likely Bugs/Concurrency/StartInConstructor.ql ql/java/ql/src/Likely Bugs/Concurrency/SynchOnBoxedType.ql ql/java/ql/src/Likely Bugs/Concurrency/SynchSetUnsynchGet.ql +ql/java/ql/src/Likely Bugs/Concurrency/SynchWriteObject.ql +ql/java/ql/src/Likely Bugs/Finalization/NullifiedSuperFinalize.ql +ql/java/ql/src/Likely Bugs/Frameworks/JUnit/BadSuiteMethod.ql ql/java/ql/src/Likely Bugs/Frameworks/JUnit/JUnit5MissingNestedAnnotation.ql +ql/java/ql/src/Likely Bugs/Frameworks/Swing/BadlyOverriddenAdapter.ql ql/java/ql/src/Likely Bugs/Inheritance/NoNonFinalInConstructor.ql ql/java/ql/src/Likely Bugs/Likely Typos/ContainerSizeCmpZero.ql ql/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql +ql/java/ql/src/Likely Bugs/Likely Typos/DangerousNonCircuitLogic.ql +ql/java/ql/src/Likely Bugs/Likely Typos/EqualsTypo.ql +ql/java/ql/src/Likely Bugs/Likely Typos/HashCodeTypo.ql ql/java/ql/src/Likely Bugs/Likely Typos/MissingFormatArg.ql ql/java/ql/src/Likely Bugs/Likely Typos/MissingSpaceTypo.ql ql/java/ql/src/Likely Bugs/Likely Typos/SelfAssignment.ql ql/java/ql/src/Likely Bugs/Likely Typos/StringBufferCharInit.ql ql/java/ql/src/Likely Bugs/Likely Typos/SuspiciousDateFormat.ql +ql/java/ql/src/Likely Bugs/Likely Typos/ToStringTypo.ql ql/java/ql/src/Likely Bugs/Likely Typos/UnusedFormatArg.ql ql/java/ql/src/Likely Bugs/Nullness/NullAlways.ql ql/java/ql/src/Likely Bugs/Nullness/NullExprDeref.ql ql/java/ql/src/Likely Bugs/Nullness/NullMaybe.ql +ql/java/ql/src/Likely Bugs/Reflection/AnnotationPresentCheck.ql ql/java/ql/src/Likely Bugs/Resource Leaks/CloseReader.ql ql/java/ql/src/Likely Bugs/Resource Leaks/CloseSql.ql ql/java/ql/src/Likely Bugs/Resource Leaks/CloseWriter.ql +ql/java/ql/src/Likely Bugs/Serialization/IncorrectSerialVersionUID.ql +ql/java/ql/src/Likely Bugs/Serialization/IncorrectSerializableMethods.ql +ql/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorOnExternalizable.ql +ql/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorsOnSerializable.ql +ql/java/ql/src/Likely Bugs/Serialization/NonSerializableInnerClass.ql +ql/java/ql/src/Likely Bugs/Serialization/ReadResolveObject.ql ql/java/ql/src/Likely Bugs/Statements/ContinueInFalseLoop.ql +ql/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql ql/java/ql/src/Likely Bugs/Statements/PartiallyMaskedCatch.ql ql/java/ql/src/Likely Bugs/Statements/UseBraces.ql ql/java/ql/src/Likely Bugs/Termination/ConstantLoopCondition.ql +ql/java/ql/src/Likely Bugs/Termination/SpinOnField.ql ql/java/ql/src/Performance/InefficientEmptyStringTest.ql ql/java/ql/src/Performance/InefficientKeySetIterator.ql ql/java/ql/src/Performance/InefficientOutputStream.ql @@ -64,6 +125,7 @@ ql/java/ql/src/Performance/InnerClassCouldBeStatic.ql ql/java/ql/src/Performance/NewStringString.ql ql/java/ql/src/Performance/StringReplaceAllWithNonRegex.ql ql/java/ql/src/Violations of Best Practice/Boxed Types/BoxedVariable.ql +ql/java/ql/src/Violations of Best Practice/Dead Code/CreatesEmptyZip.ql ql/java/ql/src/Violations of Best Practice/Dead Code/DeadRefTypes.ql ql/java/ql/src/Violations of Best Practice/Dead Code/InterfaceCannotBeImplemented.ql ql/java/ql/src/Violations of Best Practice/Dead Code/UnreadLocal.ql @@ -73,10 +135,12 @@ ql/java/ql/src/Violations of Best Practice/Exception Handling/IgnoreExceptionalR ql/java/ql/src/Violations of Best Practice/Exception Handling/NumberFormatException.ql ql/java/ql/src/Violations of Best Practice/Implementation Hiding/AbstractToConcreteCollection.ql ql/java/ql/src/Violations of Best Practice/Implementation Hiding/ExposeRepresentation.ql +ql/java/ql/src/Violations of Best Practice/Implementation Hiding/GetClassGetResource.ql ql/java/ql/src/Violations of Best Practice/Implementation Hiding/VisibleForTestingAbuse.ql ql/java/ql/src/Violations of Best Practice/Naming Conventions/AmbiguousOuterSuper.ql ql/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingMethodNames.ql ql/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingOverloading.ql +ql/java/ql/src/Violations of Best Practice/Naming Conventions/FieldMasksSuperField.ql ql/java/ql/src/Violations of Best Practice/Naming Conventions/LocalShadowsFieldConfusing.ql ql/java/ql/src/Violations of Best Practice/Naming Conventions/SameNameAsSuper.ql ql/java/ql/src/Violations of Best Practice/Records/IgnoredSerializationMembersOfRecordClass.ql @@ -87,4 +151,5 @@ ql/java/ql/src/Violations of Best Practice/Undesirable Calls/CallsToStringToStri ql/java/ql/src/Violations of Best Practice/Undesirable Calls/CallsToSystemExit.ql ql/java/ql/src/Violations of Best Practice/Undesirable Calls/DefaultToString.ql ql/java/ql/src/Violations of Best Practice/Undesirable Calls/DoNotCallFinalize.ql +ql/java/ql/src/Violations of Best Practice/Undesirable Calls/NextFromIterator.ql ql/java/ql/src/Violations of Best Practice/Undesirable Calls/PrintLnArray.ql diff --git a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected index 3a1cd4e1adbc..be7e3a53e4f1 100644 --- a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected +++ b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected @@ -1,25 +1,3 @@ -ql/java/ql/src/Advisory/Declarations/NonFinalImmutableField.ql -ql/java/ql/src/Advisory/Declarations/NonPrivateField.ql -ql/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql -ql/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql -ql/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql -ql/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql -ql/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql -ql/java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql -ql/java/ql/src/Advisory/Java Objects/AvoidCloneOverride.ql -ql/java/ql/src/Advisory/Java Objects/AvoidCloneableInterface.ql -ql/java/ql/src/Advisory/Java Objects/AvoidFinalizeOverride.ql -ql/java/ql/src/Advisory/Naming/NamingConventionsConstants.ql -ql/java/ql/src/Advisory/Naming/NamingConventionsMethods.ql -ql/java/ql/src/Advisory/Naming/NamingConventionsPackages.ql -ql/java/ql/src/Advisory/Naming/NamingConventionsRefTypes.ql -ql/java/ql/src/Advisory/Naming/NamingConventionsVariables.ql -ql/java/ql/src/Advisory/Statements/MissingDefaultInSwitch.ql -ql/java/ql/src/Advisory/Statements/OneStatementPerLine.ql -ql/java/ql/src/Advisory/Statements/TerminateIfElseIfWithElse.ql -ql/java/ql/src/Advisory/Types/GenericsConstructor.ql -ql/java/ql/src/Advisory/Types/GenericsReturnType.ql -ql/java/ql/src/Advisory/Types/GenericsVariable.ql ql/java/ql/src/AlertSuppression.ql ql/java/ql/src/AlertSuppressionAnnotations.ql ql/java/ql/src/Architecture/Dependencies/MutualDependency.ql @@ -31,10 +9,6 @@ ql/java/ql/src/Architecture/Refactoring Opportunities/HubClasses.ql ql/java/ql/src/Architecture/Refactoring Opportunities/InappropriateIntimacy.ql ql/java/ql/src/Complexity/BlockWithTooManyStatements.ql ql/java/ql/src/Complexity/ComplexCondition.ql -ql/java/ql/src/DeadCode/DeadClass.ql -ql/java/ql/src/DeadCode/DeadEnumConstant.ql -ql/java/ql/src/DeadCode/DeadField.ql -ql/java/ql/src/DeadCode/DeadMethod.ql ql/java/ql/src/DeadCode/FLinesOfDeadCode.ql ql/java/ql/src/Frameworks/JavaEE/EJB/EjbContainerInterference.ql ql/java/ql/src/Frameworks/JavaEE/EJB/EjbFileIO.ql From 8e392cf8de277b8af93ae055b7bed0cebccda4e9 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 10 Sep 2025 16:13:24 +0200 Subject: [PATCH 3/4] Java: Remove java/undocumented-* queries from the code-quality-extended suite. --- java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql | 3 +-- java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql | 3 +-- .../src/Advisory/Documentation/MissingJavadocReturnValues.ql | 3 +-- java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql | 3 +-- java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql | 3 +-- 5 files changed, 5 insertions(+), 10 deletions(-) diff --git a/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql b/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql index 5f63754d9e46..3d4eacf7ee61 100644 --- a/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql +++ b/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql @@ -6,8 +6,7 @@ * @problem.severity recommendation * @precision medium * @id java/undocumented-function - * @tags quality - * maintainability + * @tags maintainability * readability */ diff --git a/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql b/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql index d029df513b70..b81500ff303a 100644 --- a/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql +++ b/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql @@ -6,8 +6,7 @@ * @problem.severity recommendation * @precision medium * @id java/undocumented-parameter - * @tags quality - * maintainability + * @tags maintainability * readability */ diff --git a/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql b/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql index 1c5275f991a5..87f5bf2a7ff8 100644 --- a/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql +++ b/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql @@ -6,8 +6,7 @@ * @problem.severity recommendation * @precision medium * @id java/undocumented-return-value - * @tags quality - * maintainability + * @tags maintainability * readability */ diff --git a/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql b/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql index c1025df1f989..ea12c8312391 100644 --- a/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql +++ b/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql @@ -6,8 +6,7 @@ * @problem.severity recommendation * @precision medium * @id java/undocumented-exception - * @tags quality - * maintainability + * @tags maintainability * readability * error-handling */ diff --git a/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql b/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql index 2ca4f44567fc..21ea91703f96 100644 --- a/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql +++ b/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql @@ -6,8 +6,7 @@ * @problem.severity recommendation * @precision medium * @id java/undocumented-type - * @tags quality - * maintainability + * @tags maintainability * readability */ From 07932590b568b59a583992ed1e59d9f1377256e6 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Wed, 10 Sep 2025 16:15:48 +0200 Subject: [PATCH 4/4] Java: Update integration test expected output. --- .../java/query-suite/java-code-quality-extended.qls.expected | 5 ----- .../java/query-suite/not_included_in_qls.expected | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected b/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected index ea091b79c8b4..cdd6769ab46f 100644 --- a/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected +++ b/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected @@ -2,11 +2,6 @@ ql/java/ql/src/Advisory/Declarations/MissingOverrideAnnotation.ql ql/java/ql/src/Advisory/Declarations/NonFinalImmutableField.ql ql/java/ql/src/Advisory/Declarations/NonPrivateField.ql ql/java/ql/src/Advisory/Documentation/ImpossibleJavadocThrows.ql -ql/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql -ql/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql -ql/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql -ql/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql -ql/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql ql/java/ql/src/Advisory/Documentation/SpuriousJavadocParam.ql ql/java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql ql/java/ql/src/Advisory/Java Objects/AvoidCloneOverride.ql diff --git a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected index be7e3a53e4f1..d1b6428ae227 100644 --- a/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected +++ b/java/ql/integration-tests/java/query-suite/not_included_in_qls.expected @@ -1,3 +1,8 @@ +ql/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql +ql/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql +ql/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql +ql/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql +ql/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql ql/java/ql/src/AlertSuppression.ql ql/java/ql/src/AlertSuppressionAnnotations.ql ql/java/ql/src/Architecture/Dependencies/MutualDependency.ql