Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions change-notes/1.24/analysis-csharp.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion csharp/ql/src/Dead Code/DeadStoreOfLocal.ql
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,20 @@ string M7(bool b)
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
Expand Down