You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
| Deserialization of untrusted data (`cs/unsafe-deserialization-untrusted-input`) | security, external/cwe/cwe-502 | Finds flow of untrusted input to calls to unsafe deserializers. |
11
-
|Unsafe year argument for 'DateTime' constructor (`cs/unsafe-year-construction`) | reliability, date-time | Finds incorrect manipulation of `DateTime` values, which could lead to invalid dates. |
|Mishandling the Japanese era start date (`cs/mishandling-japanese-era`) |reliability, date-time| Finds hard-coded Japanese era start dates that could be invalid. |
9
+
| Deserialized delegate (`cs/deserialized-delegate`) | security, external/cwe/cwe-502 | Finds unsafe deserialization of delegate types. Results are shown on LGTM by default. |
10
+
| Deserialization of untrusted data (`cs/unsafe-deserialization-untrusted-input`) | security, external/cwe/cwe-502 | Finds flow of untrusted input to calls to unsafe deserializers. Results are shown on LGTM by default. |
11
+
|Mishandling the Japanese era start date (`cs/mishandling-japanese-era`) | reliability, date-time | Finds hard-coded Japanese era start dates that could be invalid. Results are not shown on LGTM by default. |
12
+
| Unsafe year argument for 'DateTime' constructor (`cs/unsafe-year-construction`) |reliability, date-time| Finds incorrect manipulation of `DateTime` values, which could lead to invalid dates. Results are not shown on LGTM by default. |
13
+
|Unsafe deserializer (`cs/unsafe-deserialization`) |security, external/cwe/cwe-502| Finds calls to unsafe deserializers. By default, the query is not run on LGTM. |
| Dereferenced variable may be null (`cs/dereferenced-value-may-be-null`) | Fewer false positive results | More `null` checks are now taken into account, including `null` checks for `dynamic` expressions and `null` checks such as `object alwaysNull = null; if (x != alwaysNull) ...`. |
20
-
| Missing Dispose call on local IDisposable (`cs/local-not-disposed`) | Fewer false positive results | The query has been rewritten in order to identify more dispose patterns. For example, a local `IDisposable` that is disposed of by passing through a fluent API is no longer reported. |
21
-
22
-
## Removal of old queries
20
+
| Missing Dispose call on local IDisposable (`cs/local-not-disposed`) | Fewer false positive results | The query has been rewritten in order to identify more dispose patterns. For example, a local `IDisposable` that is disposed of by passing through a fluent API is no longer reported as missing a dispose call. |
23
21
24
22
## Changes to code extraction
25
23
@@ -29,22 +27,19 @@ The following changes in version 1.23 affect C# analysis in all applications.
29
27
30
28
* The new class `NamespaceAccess` models accesses to namespaces, for example in `nameof` expressions.
31
29
* The data-flow library now makes it easier to specify barriers/sanitizers
32
-
arising from guards by overriding the predicate
30
+
arising from guards. You can override the predicate
33
31
`isBarrierGuard`/`isSanitizerGuard` on data-flow and taint-tracking
34
32
configurations respectively.
35
33
* The data-flow library has been extended with a new feature to aid debugging.
36
-
Instead of specifying `isSink(Node n) { any() }` on a configuration to
37
-
explore the possible flow from a source, it is recommended to use the new
38
-
`Configuration::hasPartialFlow` predicate, as this gives a more complete
39
-
picture of the partial flow paths from a given source. The feature is
40
-
disabled by default and can be enabled for individual configurations by
34
+
Previously, to explore the possible flow from all sources you could specify `isSink(Node n) { any() }` on a configuration.
35
+
Now you can use the new `Configuration::hasPartialFlow` predicate,
36
+
which gives a more complete picture of the partial flow paths from a given source, including flow that doesn't reach any sink.
37
+
The feature is disabled by default and can be enabled for individual configurations by
41
38
overriding `int explorationLimit()`.
42
-
*`foreach` statements where the body is guaranteed to be executed at least once, such as `foreach (var x in new string[]{ "a", "b", "c" }) { ... }`, are now recognized by all analyses based on the controlflow graph (such as SSA, data flow and taint tracking).
43
-
* Fixed the controlflow graph for `switch` statements where the `default` case was not the last case. This had caused the remaining cases to be unreachable. `SwitchStmt.getCase(int i)` now puts the `default` case last.
39
+
*`foreach` statements where the body is guaranteed to be executed at least once, such as `foreach (var x in new string[]{ "a", "b", "c" }) { ... }`, are now recognized by all analyses based on the control-flow graph (such as SSA, data flow and taint tracking).
40
+
* Fixed the control-flow graph for `switch` statements where the `default` case was not the last case. This had caused the remaining cases to be unreachable. `SwitchStmt.getCase(int i)` now puts the `default` case last.
44
41
* There is now a `DataFlow::localExprFlow` predicate and a
45
42
`TaintTracking::localExprTaint` predicate to make it easy to use the most
46
43
common case of local data flow and taint: from one `Expr` to another.
47
44
* Data is now tracked through null-coalescing expressions (`??`).
48
45
* A new library `semmle.code.csharp.Unification` has been added. This library exposes two predicates `unifiable` and `subsumes` for calculating type unification and type subsumption, respectively.
Copy file name to clipboardExpand all lines: docs/language/learn-ql/cobol/introduce-libraries-cobol.rst
-1Lines changed: 0 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -149,4 +149,3 @@ What next?
149
149
----------
150
150
151
151
- Find out more about QL in the `QL language handbook <https://help.semmle.com/QL/ql-handbook/index.html>`__ and `QL language specification <https://help.semmle.com/QL/ql-spec/language.html>`__.
152
-
- Learn more about the query console in `Using the query console <https://lgtm.com/help/lgtm/using-query-console>`__.
Copy file name to clipboardExpand all lines: docs/language/learn-ql/cobol/ql-for-cobol.rst
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,15 +6,15 @@ CodeQL for COBOL
6
6
:hidden:
7
7
8
8
introduce-libraries-cobol
9
-
9
+
10
+
.. include:: ../../support/cobol-note.rst
11
+
10
12
This page provides an overview of the CodeQL for COBOL documentation that is currently available.
11
13
12
-
- `Basic COBOL query <https://lgtm.com/help/lgtm/console/ql-cobol-basic-example>`__ describes how to write and run queries using LGTM.
13
14
- :doc:`Introducing the CodeQL libraries for COBOL <introduce-libraries-cobol>` introduces the standard libraries used to write queries for COBOL code.
14
15
15
16
16
17
Other resources
17
18
---------------
18
19
19
-
- For the queries used in LGTM, display a `COBOL query <https://lgtm.com/search?q=language%3Acobol&t=rules>`__ and click **Open in query console** to see the code used to find alerts.
20
20
- For more information about the library for COBOL see the `CodeQL library for COBOL <https://help.semmle.com/qldoc/cobol/>`__.
0 commit comments