Skip to content

Python: Tag quality queries with quality and sub category. #19812

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Jun 19, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,8 +1,99 @@
ql/python/ql/src/Classes/ConflictingAttributesInBaseClasses.ql
ql/python/ql/src/Classes/DefineEqualsWhenAddingAttributes.ql
ql/python/ql/src/Classes/EqualsOrHash.ql
ql/python/ql/src/Classes/InconsistentMRO.ql
ql/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql
ql/python/ql/src/Classes/MissingCallToDel.ql
ql/python/ql/src/Classes/MissingCallToInit.ql
ql/python/ql/src/Classes/MutatingDescriptor.ql
ql/python/ql/src/Classes/SubclassShadowing.ql
ql/python/ql/src/Classes/SuperclassDelCalledMultipleTimes.ql
ql/python/ql/src/Classes/SuperclassInitCalledMultipleTimes.ql
ql/python/ql/src/Classes/WrongNameForArgumentInClassInstantiation.ql
ql/python/ql/src/Classes/WrongNumberArgumentsInClassInstantiation.ql
ql/python/ql/src/Exceptions/CatchingBaseException.ql
ql/python/ql/src/Exceptions/EmptyExcept.ql
ql/python/ql/src/Exceptions/IllegalExceptionHandlerType.ql
ql/python/ql/src/Exceptions/IllegalRaise.ql
ql/python/ql/src/Exceptions/IncorrectExceptOrder.ql
ql/python/ql/src/Exceptions/NotImplementedIsNotAnException.ql
ql/python/ql/src/Expressions/CallToSuperWrongClass.ql
ql/python/ql/src/Expressions/CompareConstants.ql
ql/python/ql/src/Expressions/CompareIdenticalValues.ql
ql/python/ql/src/Expressions/CompareIdenticalValuesMissingSelf.ql
ql/python/ql/src/Expressions/Comparisons/UselessComparisonTest.ql
ql/python/ql/src/Expressions/ContainsNonContainer.ql
ql/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.ql
ql/python/ql/src/Expressions/EqualsNone.ql
ql/python/ql/src/Expressions/ExpectedMappingForFormatString.ql
ql/python/ql/src/Expressions/ExplicitCallToDel.ql
ql/python/ql/src/Expressions/Formatting/MixedExplicitImplicitIn3101Format.ql
ql/python/ql/src/Expressions/Formatting/UnusedArgumentIn3101Format.ql
ql/python/ql/src/Expressions/Formatting/UnusedNamedArgumentIn3101Format.ql
ql/python/ql/src/Expressions/Formatting/WrongNameInArgumentsFor3101Format.ql
ql/python/ql/src/Expressions/Formatting/WrongNumberArgumentsFor3101Format.ql
ql/python/ql/src/Expressions/HashedButNoHash.ql
ql/python/ql/src/Expressions/IncorrectComparisonUsingIs.ql
ql/python/ql/src/Expressions/NonCallableCalled.ql
ql/python/ql/src/Expressions/Regex/BackspaceEscape.ql
ql/python/ql/src/Expressions/Regex/DuplicateCharacterInSet.ql
ql/python/ql/src/Expressions/Regex/MissingPartSpecialGroup.ql
ql/python/ql/src/Expressions/Regex/UnmatchableCaret.ql
ql/python/ql/src/Expressions/Regex/UnmatchableDollar.ql
ql/python/ql/src/Expressions/UnintentionalImplicitStringConcatenation.ql
ql/python/ql/src/Expressions/UnnecessaryLambda.ql
ql/python/ql/src/Expressions/UnsupportedFormatCharacter.ql
ql/python/ql/src/Expressions/WrongNameForArgumentInCall.ql
ql/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql
ql/python/ql/src/Expressions/WrongNumberArgumentsInCall.ql
ql/python/ql/src/Functions/ConsistentReturns.ql
ql/python/ql/src/Functions/ExplicitReturnInInit.ql
ql/python/ql/src/Functions/IncorrectRaiseInSpecialMethod.ql
ql/python/ql/src/Functions/IncorrectlyOverriddenMethod.ql
ql/python/ql/src/Functions/IncorrectlySpecifiedOverriddenMethod.ql
ql/python/ql/src/Functions/InitIsGenerator.ql
ql/python/ql/src/Functions/IterReturnsNonIterator.ql
ql/python/ql/src/Functions/IterReturnsNonSelf.ql
ql/python/ql/src/Functions/ModificationOfParameterWithDefault.ql
ql/python/ql/src/Functions/NonCls.ql
ql/python/ql/src/Functions/NonSelf.ql
ql/python/ql/src/Functions/OverlyComplexDelMethod.ql
ql/python/ql/src/Functions/ReturnConsistentTupleSizes.ql
ql/python/ql/src/Functions/SignatureOverriddenMethod.ql
ql/python/ql/src/Functions/SignatureSpecialMethods.ql
ql/python/ql/src/Functions/UseImplicitNoneReturnValue.ql
ql/python/ql/src/Imports/EncodingError.ql
ql/python/ql/src/Imports/ImportandImportFrom.ql
ql/python/ql/src/Imports/ModuleImportsItself.ql
ql/python/ql/src/Imports/MultipleImports.ql
ql/python/ql/src/Imports/SyntaxError.ql
ql/python/ql/src/Imports/UnintentionalImport.ql
ql/python/ql/src/Imports/UnusedImport.ql
ql/python/ql/src/Lexical/CommentedOutCode.ql
ql/python/ql/src/Resources/FileNotAlwaysClosed.ql
ql/python/ql/src/Statements/AssertOnTuple.ql
ql/python/ql/src/Statements/ConstantInConditional.ql
ql/python/ql/src/Statements/IterableStringOrSequence.ql
ql/python/ql/src/Statements/MismatchInMultipleAssignment.ql
ql/python/ql/src/Statements/ModificationOfLocals.ql
ql/python/ql/src/Statements/NestedLoopsSameVariable.ql
ql/python/ql/src/Statements/NestedLoopsSameVariableWithReuse.ql
ql/python/ql/src/Statements/NonIteratorInForLoop.ql
ql/python/ql/src/Statements/RedundantAssignment.ql
ql/python/ql/src/Statements/ShouldUseWithStatement.ql
ql/python/ql/src/Statements/SideEffectInAssert.ql
ql/python/ql/src/Statements/StatementNoEffect.ql
ql/python/ql/src/Statements/TopLevelPrint.ql
ql/python/ql/src/Statements/UnnecessaryElseClause.ql
ql/python/ql/src/Statements/UnnecessaryPass.ql
ql/python/ql/src/Statements/UnreachableCode.ql
ql/python/ql/src/Statements/UnusedExceptionObject.ql
ql/python/ql/src/Statements/UseOfExit.ql
ql/python/ql/src/Testing/ImpreciseAssert.ql
ql/python/ql/src/Variables/GlobalAtModuleLevel.ql
ql/python/ql/src/Variables/LoopVariableCapture/LoopVariableCapture.ql
ql/python/ql/src/Variables/MultiplyDefined.ql
ql/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql
ql/python/ql/src/Variables/UndefinedExport.ql
ql/python/ql/src/Variables/UnusedLocalVariable.ql
ql/python/ql/src/Variables/UnusedModuleVariable.ql
Original file line number Diff line number Diff line change
@@ -1,8 +1,99 @@
ql/python/ql/src/Classes/ConflictingAttributesInBaseClasses.ql
ql/python/ql/src/Classes/DefineEqualsWhenAddingAttributes.ql
ql/python/ql/src/Classes/EqualsOrHash.ql
ql/python/ql/src/Classes/InconsistentMRO.ql
ql/python/ql/src/Classes/InitCallsSubclass/InitCallsSubclassMethod.ql
ql/python/ql/src/Classes/MissingCallToDel.ql
ql/python/ql/src/Classes/MissingCallToInit.ql
ql/python/ql/src/Classes/MutatingDescriptor.ql
ql/python/ql/src/Classes/SubclassShadowing.ql
ql/python/ql/src/Classes/SuperclassDelCalledMultipleTimes.ql
ql/python/ql/src/Classes/SuperclassInitCalledMultipleTimes.ql
ql/python/ql/src/Classes/WrongNameForArgumentInClassInstantiation.ql
ql/python/ql/src/Classes/WrongNumberArgumentsInClassInstantiation.ql
ql/python/ql/src/Exceptions/CatchingBaseException.ql
ql/python/ql/src/Exceptions/EmptyExcept.ql
ql/python/ql/src/Exceptions/IllegalExceptionHandlerType.ql
ql/python/ql/src/Exceptions/IllegalRaise.ql
ql/python/ql/src/Exceptions/IncorrectExceptOrder.ql
ql/python/ql/src/Exceptions/NotImplementedIsNotAnException.ql
ql/python/ql/src/Expressions/CallToSuperWrongClass.ql
ql/python/ql/src/Expressions/CompareConstants.ql
ql/python/ql/src/Expressions/CompareIdenticalValues.ql
ql/python/ql/src/Expressions/CompareIdenticalValuesMissingSelf.ql
ql/python/ql/src/Expressions/Comparisons/UselessComparisonTest.ql
ql/python/ql/src/Expressions/ContainsNonContainer.ql
ql/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.ql
ql/python/ql/src/Expressions/EqualsNone.ql
ql/python/ql/src/Expressions/ExpectedMappingForFormatString.ql
ql/python/ql/src/Expressions/ExplicitCallToDel.ql
ql/python/ql/src/Expressions/Formatting/MixedExplicitImplicitIn3101Format.ql
ql/python/ql/src/Expressions/Formatting/UnusedArgumentIn3101Format.ql
ql/python/ql/src/Expressions/Formatting/UnusedNamedArgumentIn3101Format.ql
ql/python/ql/src/Expressions/Formatting/WrongNameInArgumentsFor3101Format.ql
ql/python/ql/src/Expressions/Formatting/WrongNumberArgumentsFor3101Format.ql
ql/python/ql/src/Expressions/HashedButNoHash.ql
ql/python/ql/src/Expressions/IncorrectComparisonUsingIs.ql
ql/python/ql/src/Expressions/NonCallableCalled.ql
ql/python/ql/src/Expressions/Regex/BackspaceEscape.ql
ql/python/ql/src/Expressions/Regex/DuplicateCharacterInSet.ql
ql/python/ql/src/Expressions/Regex/MissingPartSpecialGroup.ql
ql/python/ql/src/Expressions/Regex/UnmatchableCaret.ql
ql/python/ql/src/Expressions/Regex/UnmatchableDollar.ql
ql/python/ql/src/Expressions/UnintentionalImplicitStringConcatenation.ql
ql/python/ql/src/Expressions/UnnecessaryLambda.ql
ql/python/ql/src/Expressions/UnsupportedFormatCharacter.ql
ql/python/ql/src/Expressions/WrongNameForArgumentInCall.ql
ql/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql
ql/python/ql/src/Expressions/WrongNumberArgumentsInCall.ql
ql/python/ql/src/Functions/ConsistentReturns.ql
ql/python/ql/src/Functions/ExplicitReturnInInit.ql
ql/python/ql/src/Functions/IncorrectRaiseInSpecialMethod.ql
ql/python/ql/src/Functions/IncorrectlyOverriddenMethod.ql
ql/python/ql/src/Functions/IncorrectlySpecifiedOverriddenMethod.ql
ql/python/ql/src/Functions/InitIsGenerator.ql
ql/python/ql/src/Functions/IterReturnsNonIterator.ql
ql/python/ql/src/Functions/IterReturnsNonSelf.ql
ql/python/ql/src/Functions/ModificationOfParameterWithDefault.ql
ql/python/ql/src/Functions/NonCls.ql
ql/python/ql/src/Functions/NonSelf.ql
ql/python/ql/src/Functions/OverlyComplexDelMethod.ql
ql/python/ql/src/Functions/ReturnConsistentTupleSizes.ql
ql/python/ql/src/Functions/SignatureOverriddenMethod.ql
ql/python/ql/src/Functions/SignatureSpecialMethods.ql
ql/python/ql/src/Functions/UseImplicitNoneReturnValue.ql
ql/python/ql/src/Imports/EncodingError.ql
ql/python/ql/src/Imports/ImportandImportFrom.ql
ql/python/ql/src/Imports/ModuleImportsItself.ql
ql/python/ql/src/Imports/MultipleImports.ql
ql/python/ql/src/Imports/SyntaxError.ql
ql/python/ql/src/Imports/UnintentionalImport.ql
ql/python/ql/src/Imports/UnusedImport.ql
ql/python/ql/src/Lexical/CommentedOutCode.ql
ql/python/ql/src/Resources/FileNotAlwaysClosed.ql
ql/python/ql/src/Statements/AssertOnTuple.ql
ql/python/ql/src/Statements/ConstantInConditional.ql
ql/python/ql/src/Statements/IterableStringOrSequence.ql
ql/python/ql/src/Statements/MismatchInMultipleAssignment.ql
ql/python/ql/src/Statements/ModificationOfLocals.ql
ql/python/ql/src/Statements/NestedLoopsSameVariable.ql
ql/python/ql/src/Statements/NestedLoopsSameVariableWithReuse.ql
ql/python/ql/src/Statements/NonIteratorInForLoop.ql
ql/python/ql/src/Statements/RedundantAssignment.ql
ql/python/ql/src/Statements/ShouldUseWithStatement.ql
ql/python/ql/src/Statements/SideEffectInAssert.ql
ql/python/ql/src/Statements/StatementNoEffect.ql
ql/python/ql/src/Statements/TopLevelPrint.ql
ql/python/ql/src/Statements/UnnecessaryElseClause.ql
ql/python/ql/src/Statements/UnnecessaryPass.ql
ql/python/ql/src/Statements/UnreachableCode.ql
ql/python/ql/src/Statements/UnusedExceptionObject.ql
ql/python/ql/src/Statements/UseOfExit.ql
ql/python/ql/src/Testing/ImpreciseAssert.ql
ql/python/ql/src/Variables/GlobalAtModuleLevel.ql
ql/python/ql/src/Variables/LoopVariableCapture/LoopVariableCapture.ql
ql/python/ql/src/Variables/MultiplyDefined.ql
ql/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql
ql/python/ql/src/Variables/UndefinedExport.ql
ql/python/ql/src/Variables/UnusedLocalVariable.ql
ql/python/ql/src/Variables/UnusedModuleVariable.ql
6 changes: 3 additions & 3 deletions python/ql/src/Classes/ConflictingAttributesInBaseClasses.ql
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
* @name Conflicting attributes in base classes
* @description When a class subclasses multiple base classes and more than one base class defines the same attribute, attribute overriding may result in unexpected behavior by instances of this class.
* @kind problem
* @tags reliability
* maintainability
* modularity
* @tags quality
* reliability
* correctness
* @problem.severity warning
* @sub-severity low
* @precision high
Expand Down
3 changes: 2 additions & 1 deletion python/ql/src/Classes/DefineEqualsWhenAddingAttributes.ql
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
* @name `__eq__` not overridden when adding attributes
* @description When adding new attributes to instances of a class, equality for that class needs to be defined.
* @kind problem
* @tags reliability
* @tags quality
* reliability
* correctness
* @problem.severity warning
* @sub-severity high
Expand Down
3 changes: 2 additions & 1 deletion python/ql/src/Classes/EqualsOrHash.ql
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
* @name Inconsistent equality and hashing
* @description Defining equality for a class without also defining hashability (or vice-versa) violates the object model.
* @kind problem
* @tags reliability
* @tags quality
* reliability
* correctness
* external/cwe/cwe-581
* @problem.severity warning
Expand Down
3 changes: 2 additions & 1 deletion python/ql/src/Classes/InconsistentMRO.ql
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
* @name Inconsistent method resolution order
* @description Class definition will raise a type error at runtime due to inconsistent method resolution order(MRO)
* @kind problem
* @tags reliability
* @tags quality
* reliability
* correctness
* @problem.severity error
* @sub-severity high
Expand Down
4 changes: 3 additions & 1 deletion python/ql/src/Classes/MissingCallToDel.ql
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@
* @name Missing call to `__del__` during object destruction
* @description An omitted call to a super-class `__del__` method may lead to class instances not being cleaned up properly.
* @kind problem
* @tags efficiency
* @tags quality
* reliability
* correctness
* performance
* @problem.severity error
* @sub-severity low
* @precision high
Expand Down
3 changes: 2 additions & 1 deletion python/ql/src/Classes/MissingCallToInit.ql
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
* @name Missing call to `__init__` during object initialization
* @description An omitted call to a super-class `__init__` method may lead to objects of this class not being fully initialized.
* @kind problem
* @tags reliability
* @tags quality
* reliability
* correctness
* @problem.severity error
* @sub-severity low
Expand Down
3 changes: 2 additions & 1 deletion python/ql/src/Classes/MutatingDescriptor.ql
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
* @name Mutation of descriptor in `__get__` or `__set__` method.
* @description Descriptor objects can be shared across many instances. Mutating them can cause strange side effects or race conditions.
* @kind problem
* @tags reliability
* @tags quality
* reliability
* correctness
* @problem.severity error
* @sub-severity low
Expand Down
3 changes: 2 additions & 1 deletion python/ql/src/Classes/SubclassShadowing.ql
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
* method, hides the method in the subclass.
* @kind problem
* @problem.severity error
* @tags maintainability
* @tags quality
* reliability
* correctness
* @sub-severity low
* @precision high
Expand Down
3 changes: 2 additions & 1 deletion python/ql/src/Classes/SuperclassDelCalledMultipleTimes.ql
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
* @name Multiple calls to `__del__` during object destruction
* @description A duplicated call to a super-class `__del__` method may lead to class instances not be cleaned up properly.
* @kind problem
* @tags efficiency
* @tags quality
* reliability
* correctness
* @problem.severity warning
* @sub-severity high
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
* @name Multiple calls to `__init__` during object initialization
* @description A duplicated call to a super-class `__init__` method may lead to objects of this class not being properly initialized.
* @kind problem
* @tags reliability
* @tags quality
* reliability
* correctness
* @problem.severity warning
* @sub-severity high
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
* parameter of the __init__ method of the class being
* instantiated, will result in a TypeError at runtime.
* @kind problem
* @tags reliability
* @tags quality
* reliability
* correctness
* external/cwe/cwe-628
* @problem.severity error
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
* @description Using too many or too few arguments in a call to the `__init__`
* method of a class will result in a TypeError at runtime.
* @kind problem
* @tags reliability
* @tags quality
* reliability
* correctness
* external/cwe/cwe-685
* @problem.severity error
Expand Down
6 changes: 3 additions & 3 deletions python/ql/src/Exceptions/CatchingBaseException.ql
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
* @name Except block handles 'BaseException'
* @description Handling 'BaseException' means that system exits and keyboard interrupts may be mis-handled.
* @kind problem
* @tags reliability
* readability
* convention
* @tags quality
* reliability
* error-handling
* external/cwe/cwe-396
* @problem.severity recommendation
* @sub-severity high
Expand Down
5 changes: 3 additions & 2 deletions python/ql/src/Exceptions/EmptyExcept.ql
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
* @name Empty except
* @description Except doesn't do anything and has no comment
* @kind problem
* @tags reliability
* maintainability
* @tags quality
* reliability
* error-handling
* external/cwe/cwe-390
* @problem.severity recommendation
* @sub-severity high
Expand Down
6 changes: 3 additions & 3 deletions python/ql/src/Exceptions/IllegalExceptionHandlerType.ql
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
* @name Non-exception in 'except' clause
* @description An exception handler specifying a non-exception type will never handle any exception.
* @kind problem
* @tags reliability
* correctness
* types
* @tags quality
* reliability
* error-handling
* @problem.severity error
* @sub-severity low
* @precision very-high
Expand Down
6 changes: 3 additions & 3 deletions python/ql/src/Exceptions/IllegalRaise.ql
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
* @name Illegal raise
* @description Raising a non-exception object or type will result in a TypeError being raised instead.
* @kind problem
* @tags reliability
* correctness
* types
* @tags quality
* reliability
* error-handling
* @problem.severity error
* @sub-severity high
* @precision very-high
Expand Down
5 changes: 3 additions & 2 deletions python/ql/src/Exceptions/IncorrectExceptOrder.ql
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
* @description Handling general exceptions before specific exceptions means that the specific
* handlers are never executed.
* @kind problem
* @tags reliability
* maintainability
* @tags quality
* reliability
* error-handling
* external/cwe/cwe-561
* @problem.severity error
* @sub-severity low
Expand Down
5 changes: 3 additions & 2 deletions python/ql/src/Exceptions/NotImplementedIsNotAnException.ql
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@
* @sub-severity high
* @precision very-high
* @id py/raise-not-implemented
* @tags reliability
* maintainability
* @tags quality
* reliability
* error-handling
*/

import python
Expand Down
Loading