Summary
Add analyzer RCS9012 (CodeAnalysis.Analyzers) that prefers IsKind(SyntaxKind) over Kind() == SyntaxKind / Kind() != SyntaxKind.
Motivation
In-repo style consistency (backlog A8). IsKind is the idiomatic Roslyn API (null-safe for SyntaxNode) and matches existing CodeAnalysis rules around IsKind (RCS9003, RCS9005).
Behavior
- Flag:
expr.Kind() == SyntaxKind.X, !=, and conditional forms (?.Kind()).
- Multi-kind:
Kind() == A || Kind() == B → same rule; fix to IsKind(A) || IsKind(B) (Microsoft single-param API only).
- Do not suggest Roslynator multi-param
IsKind(A, B).
- Default severity: Hidden (opt-in style).
- Code fix recommended.
Out of scope
Comparing two Kind() results (a.Kind() == b.Kind()).
Summary
Add analyzer RCS9012 (CodeAnalysis.Analyzers) that prefers
IsKind(SyntaxKind)overKind() == SyntaxKind/Kind() != SyntaxKind.Motivation
In-repo style consistency (backlog A8).
IsKindis the idiomatic Roslyn API (null-safe forSyntaxNode) and matches existing CodeAnalysis rules around IsKind (RCS9003, RCS9005).Behavior
expr.Kind() == SyntaxKind.X,!=, and conditional forms (?.Kind()).Kind() == A || Kind() == B→ same rule; fix toIsKind(A) || IsKind(B)(Microsoft single-param API only).IsKind(A, B).Out of scope
Comparing two
Kind()results (a.Kind() == b.Kind()).