Skip to content

Commit 7589d0a

Browse files
authored
Merge pull request #20394 from michaelnebel/java/code-quality-extended
Java: Add most `medium` precision queries to the `code-quality-extended` suite.
2 parents f5a06be + 0793259 commit 7589d0a

File tree

67 files changed

+235
-112
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+235
-112
lines changed

java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,117 @@
11
ql/java/ql/src/Advisory/Declarations/MissingOverrideAnnotation.ql
2+
ql/java/ql/src/Advisory/Declarations/NonFinalImmutableField.ql
3+
ql/java/ql/src/Advisory/Declarations/NonPrivateField.ql
24
ql/java/ql/src/Advisory/Documentation/ImpossibleJavadocThrows.ql
35
ql/java/ql/src/Advisory/Documentation/SpuriousJavadocParam.ql
6+
ql/java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql
7+
ql/java/ql/src/Advisory/Java Objects/AvoidCloneOverride.ql
8+
ql/java/ql/src/Advisory/Java Objects/AvoidCloneableInterface.ql
9+
ql/java/ql/src/Advisory/Java Objects/AvoidFinalizeOverride.ql
10+
ql/java/ql/src/Advisory/Naming/NamingConventionsConstants.ql
11+
ql/java/ql/src/Advisory/Naming/NamingConventionsMethods.ql
12+
ql/java/ql/src/Advisory/Naming/NamingConventionsPackages.ql
13+
ql/java/ql/src/Advisory/Naming/NamingConventionsRefTypes.ql
14+
ql/java/ql/src/Advisory/Naming/NamingConventionsVariables.ql
15+
ql/java/ql/src/Advisory/Statements/MissingDefaultInSwitch.ql
16+
ql/java/ql/src/Advisory/Statements/OneStatementPerLine.ql
17+
ql/java/ql/src/Advisory/Statements/TerminateIfElseIfWithElse.ql
18+
ql/java/ql/src/Advisory/Types/GenericsConstructor.ql
19+
ql/java/ql/src/Advisory/Types/GenericsReturnType.ql
20+
ql/java/ql/src/Advisory/Types/GenericsVariable.ql
421
ql/java/ql/src/Compatibility/JDK9/JdkInternalAccess.ql
522
ql/java/ql/src/Compatibility/JDK9/UnderscoreIdentifier.ql
23+
ql/java/ql/src/DeadCode/DeadClass.ql
24+
ql/java/ql/src/DeadCode/DeadEnumConstant.ql
25+
ql/java/ql/src/DeadCode/DeadField.ql
26+
ql/java/ql/src/DeadCode/DeadMethod.ql
627
ql/java/ql/src/DeadCode/UselessParameter.ql
728
ql/java/ql/src/Language Abuse/EmptyMethod.ql
829
ql/java/ql/src/Language Abuse/IterableIterator.ql
930
ql/java/ql/src/Language Abuse/LabelInSwitch.ql
31+
ql/java/ql/src/Language Abuse/OverridePackagePrivate.ql
32+
ql/java/ql/src/Language Abuse/TypeVarExtendsFinalType.ql
1033
ql/java/ql/src/Language Abuse/TypeVariableHidesType.ql
1134
ql/java/ql/src/Language Abuse/UselessNullCheck.ql
1235
ql/java/ql/src/Language Abuse/UselessTypeTest.ql
1336
ql/java/ql/src/Language Abuse/WrappedIterator.ql
37+
ql/java/ql/src/Likely Bugs/Arithmetic/BadAbsOfRandom.ql
1438
ql/java/ql/src/Likely Bugs/Arithmetic/ConstantExpAppearsNonConstant.ql
1539
ql/java/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql
1640
ql/java/ql/src/Likely Bugs/Arithmetic/LShiftLargerThanTypeWidth.ql
41+
ql/java/ql/src/Likely Bugs/Arithmetic/MultiplyRemainder.ql
42+
ql/java/ql/src/Likely Bugs/Arithmetic/RandomUsedOnce.ql
1743
ql/java/ql/src/Likely Bugs/Arithmetic/WhitespaceContradictsPrecedence.ql
44+
ql/java/ql/src/Likely Bugs/Cloning/MissingCallToSuperClone.ql
45+
ql/java/ql/src/Likely Bugs/Cloning/MissingMethodClone.ql
1846
ql/java/ql/src/Likely Bugs/Collections/ArrayIndexOutOfBounds.ql
1947
ql/java/ql/src/Likely Bugs/Collections/ContainsTypeMismatch.ql
48+
ql/java/ql/src/Likely Bugs/Collections/IteratorRemoveMayFail.ql
2049
ql/java/ql/src/Likely Bugs/Collections/ReadOnlyContainer.ql
2150
ql/java/ql/src/Likely Bugs/Collections/RemoveTypeMismatch.ql
2251
ql/java/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql
2352
ql/java/ql/src/Likely Bugs/Comparison/CompareIdenticalValues.ql
53+
ql/java/ql/src/Likely Bugs/Comparison/CovariantCompareTo.ql
54+
ql/java/ql/src/Likely Bugs/Comparison/CovariantEquals.ql
2455
ql/java/ql/src/Likely Bugs/Comparison/EqualsArray.ql
2556
ql/java/ql/src/Likely Bugs/Comparison/HashedButNoHash.ql
2657
ql/java/ql/src/Likely Bugs/Comparison/IncomparableEquals.ql
58+
ql/java/ql/src/Likely Bugs/Comparison/InconsistentCompareTo.ql
2759
ql/java/ql/src/Likely Bugs/Comparison/InconsistentEqualsHashCode.ql
2860
ql/java/ql/src/Likely Bugs/Comparison/MissingInstanceofInEquals.ql
2961
ql/java/ql/src/Likely Bugs/Comparison/RefEqBoxed.ql
62+
ql/java/ql/src/Likely Bugs/Comparison/StringComparison.ql
3063
ql/java/ql/src/Likely Bugs/Comparison/UselessComparisonTest.ql
3164
ql/java/ql/src/Likely Bugs/Comparison/WrongNanComparison.ql
65+
ql/java/ql/src/Likely Bugs/Concurrency/CallsToConditionWait.ql
3266
ql/java/ql/src/Likely Bugs/Concurrency/CallsToRunnableRun.ql
67+
ql/java/ql/src/Likely Bugs/Concurrency/DateFormatThreadUnsafe.ql
3368
ql/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLocking.ql
3469
ql/java/ql/src/Likely Bugs/Concurrency/DoubleCheckedLockingWithInitRace.ql
70+
ql/java/ql/src/Likely Bugs/Concurrency/FutileSynchOnField.ql
3571
ql/java/ql/src/Likely Bugs/Concurrency/NonSynchronizedOverride.ql
72+
ql/java/ql/src/Likely Bugs/Concurrency/NotifyNotNotifyAll.ql
3673
ql/java/ql/src/Likely Bugs/Concurrency/ScheduledThreadPoolExecutorZeroThread.ql
74+
ql/java/ql/src/Likely Bugs/Concurrency/SleepWithLock.ql
75+
ql/java/ql/src/Likely Bugs/Concurrency/StartInConstructor.ql
3776
ql/java/ql/src/Likely Bugs/Concurrency/SynchOnBoxedType.ql
3877
ql/java/ql/src/Likely Bugs/Concurrency/SynchSetUnsynchGet.ql
78+
ql/java/ql/src/Likely Bugs/Concurrency/SynchWriteObject.ql
79+
ql/java/ql/src/Likely Bugs/Finalization/NullifiedSuperFinalize.ql
80+
ql/java/ql/src/Likely Bugs/Frameworks/JUnit/BadSuiteMethod.ql
3981
ql/java/ql/src/Likely Bugs/Frameworks/JUnit/JUnit5MissingNestedAnnotation.ql
82+
ql/java/ql/src/Likely Bugs/Frameworks/Swing/BadlyOverriddenAdapter.ql
4083
ql/java/ql/src/Likely Bugs/Inheritance/NoNonFinalInConstructor.ql
4184
ql/java/ql/src/Likely Bugs/Likely Typos/ContainerSizeCmpZero.ql
4285
ql/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql
86+
ql/java/ql/src/Likely Bugs/Likely Typos/DangerousNonCircuitLogic.ql
87+
ql/java/ql/src/Likely Bugs/Likely Typos/EqualsTypo.ql
88+
ql/java/ql/src/Likely Bugs/Likely Typos/HashCodeTypo.ql
4389
ql/java/ql/src/Likely Bugs/Likely Typos/MissingFormatArg.ql
4490
ql/java/ql/src/Likely Bugs/Likely Typos/MissingSpaceTypo.ql
4591
ql/java/ql/src/Likely Bugs/Likely Typos/SelfAssignment.ql
4692
ql/java/ql/src/Likely Bugs/Likely Typos/StringBufferCharInit.ql
4793
ql/java/ql/src/Likely Bugs/Likely Typos/SuspiciousDateFormat.ql
94+
ql/java/ql/src/Likely Bugs/Likely Typos/ToStringTypo.ql
4895
ql/java/ql/src/Likely Bugs/Likely Typos/UnusedFormatArg.ql
4996
ql/java/ql/src/Likely Bugs/Nullness/NullAlways.ql
5097
ql/java/ql/src/Likely Bugs/Nullness/NullExprDeref.ql
5198
ql/java/ql/src/Likely Bugs/Nullness/NullMaybe.ql
99+
ql/java/ql/src/Likely Bugs/Reflection/AnnotationPresentCheck.ql
52100
ql/java/ql/src/Likely Bugs/Resource Leaks/CloseReader.ql
53101
ql/java/ql/src/Likely Bugs/Resource Leaks/CloseSql.ql
54102
ql/java/ql/src/Likely Bugs/Resource Leaks/CloseWriter.ql
103+
ql/java/ql/src/Likely Bugs/Serialization/IncorrectSerialVersionUID.ql
104+
ql/java/ql/src/Likely Bugs/Serialization/IncorrectSerializableMethods.ql
105+
ql/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorOnExternalizable.ql
106+
ql/java/ql/src/Likely Bugs/Serialization/MissingVoidConstructorsOnSerializable.ql
107+
ql/java/ql/src/Likely Bugs/Serialization/NonSerializableInnerClass.ql
108+
ql/java/ql/src/Likely Bugs/Serialization/ReadResolveObject.ql
55109
ql/java/ql/src/Likely Bugs/Statements/ContinueInFalseLoop.ql
110+
ql/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql
56111
ql/java/ql/src/Likely Bugs/Statements/PartiallyMaskedCatch.ql
57112
ql/java/ql/src/Likely Bugs/Statements/UseBraces.ql
58113
ql/java/ql/src/Likely Bugs/Termination/ConstantLoopCondition.ql
114+
ql/java/ql/src/Likely Bugs/Termination/SpinOnField.ql
59115
ql/java/ql/src/Performance/InefficientEmptyStringTest.ql
60116
ql/java/ql/src/Performance/InefficientKeySetIterator.ql
61117
ql/java/ql/src/Performance/InefficientOutputStream.ql
@@ -64,6 +120,7 @@ ql/java/ql/src/Performance/InnerClassCouldBeStatic.ql
64120
ql/java/ql/src/Performance/NewStringString.ql
65121
ql/java/ql/src/Performance/StringReplaceAllWithNonRegex.ql
66122
ql/java/ql/src/Violations of Best Practice/Boxed Types/BoxedVariable.ql
123+
ql/java/ql/src/Violations of Best Practice/Dead Code/CreatesEmptyZip.ql
67124
ql/java/ql/src/Violations of Best Practice/Dead Code/DeadRefTypes.ql
68125
ql/java/ql/src/Violations of Best Practice/Dead Code/InterfaceCannotBeImplemented.ql
69126
ql/java/ql/src/Violations of Best Practice/Dead Code/UnreadLocal.ql
@@ -73,10 +130,12 @@ ql/java/ql/src/Violations of Best Practice/Exception Handling/IgnoreExceptionalR
73130
ql/java/ql/src/Violations of Best Practice/Exception Handling/NumberFormatException.ql
74131
ql/java/ql/src/Violations of Best Practice/Implementation Hiding/AbstractToConcreteCollection.ql
75132
ql/java/ql/src/Violations of Best Practice/Implementation Hiding/ExposeRepresentation.ql
133+
ql/java/ql/src/Violations of Best Practice/Implementation Hiding/GetClassGetResource.ql
76134
ql/java/ql/src/Violations of Best Practice/Implementation Hiding/VisibleForTestingAbuse.ql
77135
ql/java/ql/src/Violations of Best Practice/Naming Conventions/AmbiguousOuterSuper.ql
78136
ql/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingMethodNames.ql
79137
ql/java/ql/src/Violations of Best Practice/Naming Conventions/ConfusingOverloading.ql
138+
ql/java/ql/src/Violations of Best Practice/Naming Conventions/FieldMasksSuperField.ql
80139
ql/java/ql/src/Violations of Best Practice/Naming Conventions/LocalShadowsFieldConfusing.ql
81140
ql/java/ql/src/Violations of Best Practice/Naming Conventions/SameNameAsSuper.ql
82141
ql/java/ql/src/Violations of Best Practice/Records/IgnoredSerializationMembersOfRecordClass.ql
@@ -87,4 +146,5 @@ ql/java/ql/src/Violations of Best Practice/Undesirable Calls/CallsToStringToStri
87146
ql/java/ql/src/Violations of Best Practice/Undesirable Calls/CallsToSystemExit.ql
88147
ql/java/ql/src/Violations of Best Practice/Undesirable Calls/DefaultToString.ql
89148
ql/java/ql/src/Violations of Best Practice/Undesirable Calls/DoNotCallFinalize.ql
149+
ql/java/ql/src/Violations of Best Practice/Undesirable Calls/NextFromIterator.ql
90150
ql/java/ql/src/Violations of Best Practice/Undesirable Calls/PrintLnArray.ql

java/ql/integration-tests/java/query-suite/not_included_in_qls.expected

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,8 @@
1-
ql/java/ql/src/Advisory/Declarations/NonFinalImmutableField.ql
2-
ql/java/ql/src/Advisory/Declarations/NonPrivateField.ql
31
ql/java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql
42
ql/java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql
53
ql/java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql
64
ql/java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql
75
ql/java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql
8-
ql/java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql
9-
ql/java/ql/src/Advisory/Java Objects/AvoidCloneOverride.ql
10-
ql/java/ql/src/Advisory/Java Objects/AvoidCloneableInterface.ql
11-
ql/java/ql/src/Advisory/Java Objects/AvoidFinalizeOverride.ql
12-
ql/java/ql/src/Advisory/Naming/NamingConventionsConstants.ql
13-
ql/java/ql/src/Advisory/Naming/NamingConventionsMethods.ql
14-
ql/java/ql/src/Advisory/Naming/NamingConventionsPackages.ql
15-
ql/java/ql/src/Advisory/Naming/NamingConventionsRefTypes.ql
16-
ql/java/ql/src/Advisory/Naming/NamingConventionsVariables.ql
17-
ql/java/ql/src/Advisory/Statements/MissingDefaultInSwitch.ql
18-
ql/java/ql/src/Advisory/Statements/OneStatementPerLine.ql
19-
ql/java/ql/src/Advisory/Statements/TerminateIfElseIfWithElse.ql
20-
ql/java/ql/src/Advisory/Types/GenericsConstructor.ql
21-
ql/java/ql/src/Advisory/Types/GenericsReturnType.ql
22-
ql/java/ql/src/Advisory/Types/GenericsVariable.ql
236
ql/java/ql/src/AlertSuppression.ql
247
ql/java/ql/src/AlertSuppressionAnnotations.ql
258
ql/java/ql/src/Architecture/Dependencies/MutualDependency.ql
@@ -31,10 +14,6 @@ ql/java/ql/src/Architecture/Refactoring Opportunities/HubClasses.ql
3114
ql/java/ql/src/Architecture/Refactoring Opportunities/InappropriateIntimacy.ql
3215
ql/java/ql/src/Complexity/BlockWithTooManyStatements.ql
3316
ql/java/ql/src/Complexity/ComplexCondition.ql
34-
ql/java/ql/src/DeadCode/DeadClass.ql
35-
ql/java/ql/src/DeadCode/DeadEnumConstant.ql
36-
ql/java/ql/src/DeadCode/DeadField.ql
37-
ql/java/ql/src/DeadCode/DeadMethod.ql
3817
ql/java/ql/src/DeadCode/FLinesOfDeadCode.ql
3918
ql/java/ql/src/Frameworks/JavaEE/EJB/EjbContainerInterference.ql
4019
ql/java/ql/src/Frameworks/JavaEE/EJB/EjbFileIO.ql

java/ql/src/Advisory/Declarations/NonFinalImmutableField.ql

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77
* @problem.severity recommendation
88
* @precision medium
99
* @id java/non-final-immutable-field
10-
* @tags reliability
10+
* @tags quality
11+
* reliability
12+
* correctness
13+
* readability
1114
*/
1215

1316
import java

java/ql/src/Advisory/Declarations/NonPrivateField.ql

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@
66
* @problem.severity recommendation
77
* @precision medium
88
* @id java/non-private-field
9-
* @tags maintainability
9+
* @tags quality
10+
* maintainability
11+
* readability
12+
* complexity
1013
*/
1114

1215
import java

java/ql/src/Advisory/Documentation/MissingJavadocMethods.ql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* @precision medium
88
* @id java/undocumented-function
99
* @tags maintainability
10+
* readability
1011
*/
1112

1213
import java

java/ql/src/Advisory/Documentation/MissingJavadocParameters.ql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* @precision medium
88
* @id java/undocumented-parameter
99
* @tags maintainability
10+
* readability
1011
*/
1112

1213
import java

java/ql/src/Advisory/Documentation/MissingJavadocReturnValues.ql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* @precision medium
88
* @id java/undocumented-return-value
99
* @tags maintainability
10+
* readability
1011
*/
1112

1213
import java

java/ql/src/Advisory/Documentation/MissingJavadocThrows.ql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
* @precision medium
88
* @id java/undocumented-exception
99
* @tags maintainability
10+
* readability
11+
* error-handling
1012
*/
1113

1214
import java

java/ql/src/Advisory/Documentation/MissingJavadocTypes.ql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* @precision medium
88
* @id java/undocumented-type
99
* @tags maintainability
10+
* readability
1011
*/
1112

1213
import java

java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
* @problem.severity recommendation
77
* @precision medium
88
* @id java/use-of-clone-method
9-
* @tags reliability
9+
* @tags quality
10+
* reliability
11+
* correctness
1012
*/
1113

1214
import java

0 commit comments

Comments
 (0)