mirror of
https://github.com/github/codeql.git
synced 2025-12-24 20:56:33 +01:00
Without backticks, the text UNDERSCORE UNDERSCORE eq UNDERSCORE UNDERSCORE would be considered to make things bold in our markdown output, making the query info look strange. Example https://codeql.github.com/codeql-query-help/python/py-slots-in-old-style-class/
28 lines
749 B
Plaintext
28 lines
749 B
Plaintext
/**
|
|
* @name Comparison using is when operands support `__eq__`
|
|
* @description Comparison using 'is' when equivalence is not the same as identity
|
|
* @kind problem
|
|
* @tags reliability
|
|
* correctness
|
|
* @problem.severity warning
|
|
* @sub-severity low
|
|
* @precision high
|
|
* @id py/comparison-using-is
|
|
*/
|
|
|
|
import python
|
|
import IsComparisons
|
|
|
|
from Compare comp, Cmpop op, ClassValue c, string alt
|
|
where
|
|
invalid_portable_is_comparison(comp, op, c) and
|
|
not cpython_interned_constant(comp.getASubExpression()) and
|
|
(
|
|
op instanceof Is and alt = "=="
|
|
or
|
|
op instanceof IsNot and alt = "!="
|
|
)
|
|
select comp,
|
|
"Values compared using '" + op.getSymbol() +
|
|
"' when equivalence is not the same as identity. Use '" + alt + "' instead."
|