зеркало из https://github.com/github/codeql.git
Python: Update change note for 1.23.
This commit is contained in:
Родитель
3d5d178b19
Коммит
35e3e3d2a1
|
@ -3,7 +3,19 @@
|
|||
|
||||
## General improvements
|
||||
|
||||
### Python 3.8 support
|
||||
|
||||
Python 3.8 syntax is now supported. In particular, the following constructs are parsed correctly:
|
||||
|
||||
- Assignment expressions using the "walrus" operator, such as `while chunk := file.read(1024): ...`.
|
||||
- The positional argument separator `/`, such as in `def foo(a, /, b, *, c): ...`.
|
||||
- Self-documenting expressions in f-strings, such as `f"{var=}"`.
|
||||
|
||||
### General query improvements
|
||||
|
||||
In an effort to deprecate the `Object` API (e.g. `ClassObject`) in favour of the
|
||||
`Value` API (e.g. `ClassValue`), many of the standard queries have been updated
|
||||
to use the `Value` API. This should result in more precise results.
|
||||
|
||||
## New queries
|
||||
|
||||
|
@ -20,8 +32,21 @@
|
|||
|----------------------------|------------------------|------------|
|
||||
| Unreachable code | Fewer false positives | Analysis now accounts for uses of `contextlib.suppress` to suppress exceptions. |
|
||||
| `__iter__` method returns a non-iterator | Better alert message | Alert now highlights which class is expected to be an iterator. |
|
||||
|
||||
| Explicit return in __init__ method | Fewer false positives | Instances where the `__init__` method returns the value of a call to a procedure are no longer flagged. |
|
||||
| Non-iterable used in for loop | Fewer false positives | `__aiter__` is now recognized as an iterator method. |
|
||||
| Unused import | Fewer false positives | Instances where a module is used in a forward-referenced type annotation, or only during type checking are no longer flagged. |
|
||||
| Module-level cyclic import | Fewer false positives | Instances where one of the links in an import cycle is never actually executed are no longer flagged. |
|
||||
| Undefined export | Fewer false positives | Instances where an exported value may be defined in a module that lacks points-to information are no longer flagged. |
|
||||
| Unreachable code | Fewer false positives | Unreachable `else` branches that do nothing but `assert` their non-reachability are no longer flagged. |
|
||||
|
||||
## Changes to QL libraries
|
||||
|
||||
* Django library now recognizes positional arguments from a `django.conf.urls.url` regex (Django version 1.x)
|
||||
* Instances of the `Value` class now support the `isAbsent` method, indicating
|
||||
whether the `Value` in question is missing points-to information, but has been
|
||||
inferred to likely exist anyway. For instance, if a file contains `import
|
||||
django`, but `django` was not extracted properly, there will be a
|
||||
`ModuleValue` corresponding to this "unknown" module, and the `isAbsent`
|
||||
method will hold for this `ModuleValue`.
|
||||
* The `Expr` class now has a nullary method `pointsTo` that returns the possible
|
||||
instances of `Value` that this expression may have.
|
||||
|
|
Загрузка…
Ссылка в новой задаче