Код: Выделить всё
public static void foo()
{
var x = new List{1,2,1};
// ruleid: todictionary-crash
Dictionary bad = x.ToDictionary(i=>i,i=>i.ToString());
Dictionary good = x.GroupBy(i=>i).ToDictionary(i=>i.Key,i=>i.First().ToString());
}
< /code>
rules:
- id: todictionary-crash
languages:
- csharp
severity: ERROR
message: Semgrep found a match
patterns:
- pattern-regex: ToDictionary
- pattern-not-regex: GroupBy\(.*\)\.ToDictionary
< /code>
Но как это сделать с «реальными» образцами Semgrep? Если я < /p>
patterns:
- pattern: $X.ToDictionary(...)
- pattern-not: $X.GroupBy(...).ToDictionary(...)
Подробнее здесь: https://stackoverflow.com/questions/797 ... statements