mirror of
https://github.com/github/codeql.git
synced 2026-04-24 00:05:14 +02:00
Mostly just adding `private import LegacyPointsTo`. Sometimes getting rid of other imports that are superceded by that module.
34 lines
1.1 KiB
Plaintext
34 lines
1.1 KiB
Plaintext
/**
|
|
* @name Wrong number of arguments in a call
|
|
* @description Using too many or too few arguments in a call to a function will result in a TypeError at runtime.
|
|
* @kind problem
|
|
* @tags quality
|
|
* reliability
|
|
* correctness
|
|
* external/cwe/cwe-685
|
|
* @problem.severity error
|
|
* @sub-severity low
|
|
* @precision very-high
|
|
* @id py/call/wrong-arguments
|
|
*/
|
|
|
|
import python
|
|
private import LegacyPointsTo
|
|
import CallArgs
|
|
|
|
from Call call, FunctionValue func, string too, string should, int limit
|
|
where
|
|
(
|
|
too_many_args(call, func, limit) and too = "too many arguments" and should = "no more than "
|
|
or
|
|
too_few_args(call, func, limit) and too = "too few arguments" and should = "no fewer than "
|
|
) and
|
|
not isAbstract(func) and
|
|
not exists(FunctionValue overridden |
|
|
func.overrides(overridden) and correct_args_if_called_as_method(call, overridden)
|
|
) and
|
|
/* The semantics of `__new__` can be a bit subtle, so we simply exclude `__new__` methods */
|
|
not func.getName() = "__new__"
|
|
select call, "Call to $@ with " + too + "; should be " + should + limit.toString() + ".", func,
|
|
func.descriptiveString()
|