mirror of
https://github.com/github/codeql.git
synced 2025-12-30 07:36:34 +01:00
Will need subsequent PRs fixing up test failures (due to deprecated methods moving around), but other than that everything should be straight-forward.
28 lines
686 B
Plaintext
28 lines
686 B
Plaintext
/**
|
|
* @name 'super' in old style class
|
|
* @description Using super() to access inherited methods is not supported by old-style classes.
|
|
* @kind problem
|
|
* @tags portability
|
|
* correctness
|
|
* @problem.severity error
|
|
* @sub-severity low
|
|
* @precision very-high
|
|
* @id py/super-in-old-style
|
|
*/
|
|
|
|
import python
|
|
|
|
predicate uses_of_super_in_old_style_class(Call s) {
|
|
exists(Function f, ClassObject c |
|
|
s.getScope() = f and
|
|
f.getScope() = c.getPyClass() and
|
|
not c.failedInference() and
|
|
not c.isNewStyle() and
|
|
s.getFunc().(Name).getId() = "super"
|
|
)
|
|
}
|
|
|
|
from Call c
|
|
where uses_of_super_in_old_style_class(c)
|
|
select c, "super() will not work in old-style classes"
|