Files
codeql/python/ql/src/Expressions/NonPortableComparisonUsingIs.ql
2018-11-19 15:10:42 +00:00

23 lines
765 B
Plaintext

/**
* @name Non-portable comparison using is when operands support __eq__
* @description Comparison using 'is' when equivalence is not the same as identity and may not be portable.
* @kind problem
* @tags portability
* maintainability
* @problem.severity recommendation
* @sub-severity low
* @precision medium
* @id py/comparison-using-is-non-portable
*/
import python
import IsComparisons
from Compare comp, Cmpop op, ClassObject c
where invalid_portable_is_comparison(comp, op, c) and
exists(Expr sub |
sub = comp.getASubExpression() |
cpython_interned_constant(sub) and
not universally_interned_constant(sub)
)
select comp, "The result of this comparison with '" + op.getSymbol() + "' may differ between implementations of Python."