mirror of
https://github.com/github/codeql.git
synced 2026-04-28 02:05:14 +02:00
Merge pull request #2773 from hvitved/csharp/useless-assignment-to-local-default
C#: Remove false positives for `cs/useless-assignment-to-local`
This commit is contained in:
@@ -20,6 +20,7 @@ The following changes in version 1.24 affect C# analysis in all applications.
|
||||
| Useless assignment to local variable (`cs/useless-assignment-to-local`) | Fewer false positive results | Results have been removed when the variable is named `_` in a `foreach` statement. |
|
||||
| Potentially dangerous use of non-short-circuit logic (`cs/non-short-circuit`) | Fewer false positive results | Results have been removed when the expression contains an `out` parameter. |
|
||||
| Dereferenced variable may be null (`cs/dereferenced-value-may-be-null`) | More results | Results are reported from parameters with a default value of `null`. |
|
||||
| Useless assignment to local variable (`cs/useless-assignment-to-local`) | Fewer false positive results | Results have been removed when the value assigned is an (implicitly or explicitly) cast default-like value. For example, `var s = (string)null` and `string s = default`. |
|
||||
|
||||
## Removal of old queries
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ class RelevantDefinition extends AssignableDefinition {
|
||||
*/
|
||||
private predicate isDefaultLikeInitializer() {
|
||||
this.isInitializer() and
|
||||
exists(Expr e | e = this.getSource() |
|
||||
exists(Expr e | e = this.getSource().stripCasts() |
|
||||
exists(string val | val = e.getValue() |
|
||||
val = "0" or
|
||||
val = "-1" or
|
||||
|
||||
@@ -389,6 +389,20 @@ class Initializers
|
||||
return s;
|
||||
return null;
|
||||
}
|
||||
|
||||
string M8()
|
||||
{
|
||||
string s = default; // "GOOD"
|
||||
s = "";
|
||||
return s;
|
||||
}
|
||||
|
||||
string M9()
|
||||
{
|
||||
var s = (string)null; // "GOOD"
|
||||
s = "";
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
||||
class Anonymous
|
||||
|
||||
Reference in New Issue
Block a user