Skip to content

Commit

Permalink
Simplify registration extensions (#9049)
Browse files Browse the repository at this point in the history
  • Loading branch information
pavel-mikula-sonarsource committed Apr 9, 2024
1 parent e518a59 commit 8f54a08
Show file tree
Hide file tree
Showing 8 changed files with 52 additions and 68 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,45 +18,37 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

namespace SonarAnalyzer.Extensions
namespace SonarAnalyzer.Extensions;

public static class SonarAnalysisContextExtensions
{
internal static class SonarAnalysisContextExtensions
{
public static void RegisterNodeAction<TSyntaxKind>(this SonarAnalysisContext context,
Action<SonarSyntaxNodeReportingContext> action,
params TSyntaxKind[] syntaxKinds) where TSyntaxKind : struct =>
context.RegisterNodeAction(CSharpGeneratedCodeRecognizer.Instance, action, syntaxKinds);
public static void RegisterNodeAction(this SonarAnalysisContext context, Action<SonarSyntaxNodeReportingContext> action, params SyntaxKind[] syntaxKinds) =>
context.RegisterNodeAction(CSharpGeneratedCodeRecognizer.Instance, action, syntaxKinds);

public static void RegisterNodeAction<TSyntaxKind>(this SonarParametrizedAnalysisContext context,
Action<SonarSyntaxNodeReportingContext> action,
params TSyntaxKind[] syntaxKinds) where TSyntaxKind : struct =>
context.RegisterNodeAction(CSharpGeneratedCodeRecognizer.Instance, action, syntaxKinds);
public static void RegisterNodeAction(this SonarParametrizedAnalysisContext context, Action<SonarSyntaxNodeReportingContext> action, params SyntaxKind[] syntaxKinds) =>
context.RegisterNodeAction(CSharpGeneratedCodeRecognizer.Instance, action, syntaxKinds);

public static void RegisterNodeAction<TSyntaxKind>(this SonarCompilationStartAnalysisContext context,
Action<SonarSyntaxNodeReportingContext> action,
params TSyntaxKind[] syntaxKinds) where TSyntaxKind : struct =>
context.RegisterNodeAction(CSharpGeneratedCodeRecognizer.Instance, action, syntaxKinds);
public static void RegisterNodeAction(this SonarCompilationStartAnalysisContext context, Action<SonarSyntaxNodeReportingContext> action, params SyntaxKind[] syntaxKinds) =>
context.RegisterNodeAction(CSharpGeneratedCodeRecognizer.Instance, action, syntaxKinds);

public static void RegisterTreeAction(this SonarAnalysisContext context, Action<SonarSyntaxTreeReportingContext> action) =>
context.RegisterTreeAction(CSharpGeneratedCodeRecognizer.Instance, action);
public static void RegisterTreeAction(this SonarAnalysisContext context, Action<SonarSyntaxTreeReportingContext> action) =>
context.RegisterTreeAction(CSharpGeneratedCodeRecognizer.Instance, action);

public static void RegisterTreeAction(this SonarParametrizedAnalysisContext context, Action<SonarSyntaxTreeReportingContext> action) =>
context.RegisterTreeAction(CSharpGeneratedCodeRecognizer.Instance, action);
public static void RegisterTreeAction(this SonarParametrizedAnalysisContext context, Action<SonarSyntaxTreeReportingContext> action) =>
context.RegisterTreeAction(CSharpGeneratedCodeRecognizer.Instance, action);

public static void RegisterSemanticModelAction(this SonarParametrizedAnalysisContext context, Action<SonarSemanticModelReportingContext> action) =>
context.RegisterSemanticModelAction(CSharpGeneratedCodeRecognizer.Instance, action);
public static void RegisterSemanticModelAction(this SonarParametrizedAnalysisContext context, Action<SonarSemanticModelReportingContext> action) =>
context.RegisterSemanticModelAction(CSharpGeneratedCodeRecognizer.Instance, action);

public static void RegisterSemanticModelAction(this SonarAnalysisContext context, Action<SonarSemanticModelReportingContext> action) =>
context.RegisterSemanticModelAction(CSharpGeneratedCodeRecognizer.Instance, action);
public static void RegisterSemanticModelAction(this SonarAnalysisContext context, Action<SonarSemanticModelReportingContext> action) =>
context.RegisterSemanticModelAction(CSharpGeneratedCodeRecognizer.Instance, action);

public static void RegisterCodeBlockStartAction<TSyntaxKind>(this SonarAnalysisContext context, Action<SonarCodeBlockStartAnalysisContext<TSyntaxKind>> action)
where TSyntaxKind : struct =>
context.RegisterCodeBlockStartAction(CSharpGeneratedCodeRecognizer.Instance, action);
public static void RegisterCodeBlockStartAction(this SonarAnalysisContext context, Action<SonarCodeBlockStartAnalysisContext<SyntaxKind>> action) =>
context.RegisterCodeBlockStartAction(CSharpGeneratedCodeRecognizer.Instance, action);

public static void ReportIssue(this SonarCompilationReportingContext context, Diagnostic diagnostic) =>
context.ReportIssue(CSharpGeneratedCodeRecognizer.Instance, diagnostic);
public static void ReportIssue(this SonarCompilationReportingContext context, Diagnostic diagnostic) =>
context.ReportIssue(CSharpGeneratedCodeRecognizer.Instance, diagnostic);

public static void ReportIssue(this SonarSymbolReportingContext context, Diagnostic diagnostic) =>
context.ReportIssue(CSharpGeneratedCodeRecognizer.Instance, diagnostic);
}
public static void ReportIssue(this SonarSymbolReportingContext context, Diagnostic diagnostic) =>
context.ReportIssue(CSharpGeneratedCodeRecognizer.Instance, diagnostic);
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public sealed class GetHashCodeEqualsOverride : SonarDiagnosticAnalyzer
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create(Rule);

protected override void Initialize(SonarAnalysisContext context) =>
context.RegisterCodeBlockStartAction<SyntaxKind>(
context.RegisterCodeBlockStartAction(
cb =>
{
if (!(cb.CodeBlock is MethodDeclarationSyntax methodDeclaration))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public sealed class GuardConditionOnEqualsOverride : SonarDiagnosticAnalyzer
private static readonly ISet<string> MethodNames = new HashSet<string> { GetHashCodeEqualsOverride.EqualsName };

protected override void Initialize(SonarAnalysisContext context) =>
context.RegisterCodeBlockStartAction<SyntaxKind>(
context.RegisterCodeBlockStartAction(
cb =>
{
if (!(cb.OwningSymbol is IMethodSymbol methodSymbol)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public abstract class StaticFieldWrittenFrom : SonarDiagnosticAnalyzer
public sealed override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => ImmutableArray.Create(Rule);

protected sealed override void Initialize(SonarAnalysisContext context) =>
context.RegisterCodeBlockStartAction<SyntaxKind>(cbc =>
context.RegisterCodeBlockStartAction(cbc =>
{
if (!IsValidCodeBlockContext(cbc.CodeBlock, cbc.OwningSymbol))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public sealed class ThisShouldNotBeExposedFromConstructors : SonarDiagnosticAnal

protected override void Initialize(SonarAnalysisContext context)
{
context.RegisterCodeBlockStartAction<SyntaxKind>(
context.RegisterCodeBlockStartAction(
cbc =>
{
if (!IsInstanceConstructor(cbc.CodeBlock))
Expand Down
2 changes: 1 addition & 1 deletion analyzers/src/SonarAnalyzer.CSharp/Rules/VariableUnused.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public sealed class VariableUnused : VariableUnusedBase
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create(Rule);

protected override void Initialize(SonarAnalysisContext context) =>
context.RegisterCodeBlockStartAction<SyntaxKind>(cbc =>
context.RegisterCodeBlockStartAction(cbc =>
{
var collector = new UnusedLocalsCollector();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,45 +18,37 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

namespace SonarAnalyzer.Extensions
namespace SonarAnalyzer.Extensions;

public static class SonarAnalysisContextExtensions
{
public static class SonarAnalysisContextExtensions
{
public static void RegisterNodeAction<TSyntaxKind>(this SonarAnalysisContext context,
Action<SonarSyntaxNodeReportingContext> action,
params TSyntaxKind[] syntaxKinds) where TSyntaxKind : struct =>
context.RegisterNodeAction(VisualBasicGeneratedCodeRecognizer.Instance, action, syntaxKinds);
public static void RegisterNodeAction(this SonarAnalysisContext context, Action<SonarSyntaxNodeReportingContext> action, params SyntaxKind[] syntaxKinds) =>
context.RegisterNodeAction(VisualBasicGeneratedCodeRecognizer.Instance, action, syntaxKinds);

public static void RegisterNodeAction<TSyntaxKind>(this SonarParametrizedAnalysisContext context,
Action<SonarSyntaxNodeReportingContext> action,
params TSyntaxKind[] syntaxKinds) where TSyntaxKind : struct =>
context.RegisterNodeAction(VisualBasicGeneratedCodeRecognizer.Instance, action, syntaxKinds);
public static void RegisterNodeAction(this SonarParametrizedAnalysisContext context, Action<SonarSyntaxNodeReportingContext> action, params SyntaxKind[] syntaxKinds) =>
context.RegisterNodeAction(VisualBasicGeneratedCodeRecognizer.Instance, action, syntaxKinds);

public static void RegisterNodeAction<TSyntaxKind>(this SonarCompilationStartAnalysisContext context,
Action<SonarSyntaxNodeReportingContext> action,
params TSyntaxKind[] syntaxKinds) where TSyntaxKind : struct =>
context.RegisterNodeAction(VisualBasicGeneratedCodeRecognizer.Instance, action, syntaxKinds);
public static void RegisterNodeAction(this SonarCompilationStartAnalysisContext context, Action<SonarSyntaxNodeReportingContext> action, params SyntaxKind[] syntaxKinds) =>
context.RegisterNodeAction(VisualBasicGeneratedCodeRecognizer.Instance, action, syntaxKinds);

public static void RegisterTreeAction(this SonarAnalysisContext context, Action<SonarSyntaxTreeReportingContext> action) =>
context.RegisterTreeAction(VisualBasicGeneratedCodeRecognizer.Instance, action);
public static void RegisterTreeAction(this SonarAnalysisContext context, Action<SonarSyntaxTreeReportingContext> action) =>
context.RegisterTreeAction(VisualBasicGeneratedCodeRecognizer.Instance, action);

public static void RegisterTreeAction(this SonarParametrizedAnalysisContext context, Action<SonarSyntaxTreeReportingContext> action) =>
context.RegisterTreeAction(VisualBasicGeneratedCodeRecognizer.Instance, action);
public static void RegisterTreeAction(this SonarParametrizedAnalysisContext context, Action<SonarSyntaxTreeReportingContext> action) =>
context.RegisterTreeAction(VisualBasicGeneratedCodeRecognizer.Instance, action);

public static void RegisterSemanticModelAction(this SonarAnalysisContext context, Action<SonarSemanticModelReportingContext> action) =>
context.RegisterSemanticModelAction(VisualBasicGeneratedCodeRecognizer.Instance, action);
public static void RegisterSemanticModelAction(this SonarAnalysisContext context, Action<SonarSemanticModelReportingContext> action) =>
context.RegisterSemanticModelAction(VisualBasicGeneratedCodeRecognizer.Instance, action);

public static void RegisterSemanticModelAction(this SonarParametrizedAnalysisContext context, Action<SonarSemanticModelReportingContext> action) =>
context.RegisterSemanticModelAction(VisualBasicGeneratedCodeRecognizer.Instance, action);
public static void RegisterSemanticModelAction(this SonarParametrizedAnalysisContext context, Action<SonarSemanticModelReportingContext> action) =>
context.RegisterSemanticModelAction(VisualBasicGeneratedCodeRecognizer.Instance, action);

public static void RegisterCodeBlockStartAction<TSyntaxKind>(this SonarAnalysisContext context, Action<SonarCodeBlockStartAnalysisContext<TSyntaxKind>> action)
where TSyntaxKind : struct =>
context.RegisterCodeBlockStartAction(VisualBasicGeneratedCodeRecognizer.Instance, action);
public static void RegisterCodeBlockStartAction(this SonarAnalysisContext context, Action<SonarCodeBlockStartAnalysisContext<SyntaxKind>> action) =>
context.RegisterCodeBlockStartAction(VisualBasicGeneratedCodeRecognizer.Instance, action);

public static void ReportIssue(this SonarCompilationReportingContext context, Diagnostic diagnostic) =>
context.ReportIssue(VisualBasicGeneratedCodeRecognizer.Instance, diagnostic);
public static void ReportIssue(this SonarCompilationReportingContext context, Diagnostic diagnostic) =>
context.ReportIssue(VisualBasicGeneratedCodeRecognizer.Instance, diagnostic);

public static void ReportIssue(this SonarSymbolReportingContext context, Diagnostic diagnostic) =>
context.ReportIssue(VisualBasicGeneratedCodeRecognizer.Instance, diagnostic);
}
public static void ReportIssue(this SonarSymbolReportingContext context, Diagnostic diagnostic) =>
context.ReportIssue(VisualBasicGeneratedCodeRecognizer.Instance, diagnostic);
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public sealed class VariableUnused : VariableUnusedBase
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create(Rule);

protected override void Initialize(SonarAnalysisContext context) =>
context.RegisterCodeBlockStartAction<SyntaxKind>(cbc =>
context.RegisterCodeBlockStartAction(cbc =>
{
var collector = new UnusedLocalsCollector();
Expand Down

0 comments on commit 8f54a08

Please sign in to comment.