diff --git a/.gitignore b/.gitignore index fc347f42..4f6ae903 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,7 @@ x86/ *.class *.log .vscode/ + + +#Ignore vscode AI rules +.github/instructions/codacy.instructions.md diff --git a/src/Analyzer/CodeAnalyzer.cs b/src/Analyzer/CodeAnalyzer.cs index 97ed4184..596048f4 100644 --- a/src/Analyzer/CodeAnalyzer.cs +++ b/src/Analyzer/CodeAnalyzer.cs @@ -123,7 +123,15 @@ public async Task Analyze(string file, CancellationToken cancellationToken) try { var solution = CompilationHelper.GetSolutionFromFile(DefaultSourceFolder + file); - var compilation = await solution.Projects.First().GetCompilationAsync(); + var project = solution.Projects.First(); + + // FIX: Prevent SonarAnalyzer NullReferenceException + project = project.AddAnalyzerConfigDocument( + ".editorconfig", + Microsoft.CodeAnalysis.Text.SourceText.From("is_global = true\n"), + filePath: "/.editorconfig").Project; + + var compilation = await project.GetCompilationAsync(cancellationToken); // Parallelize diagnostics fetching var diagnostics = await diagnosticsRunner.GetDiagnostics(compilation, cancellationToken); diff --git a/src/Analyzer/Runner/DiagnosticsRunner.cs b/src/Analyzer/Runner/DiagnosticsRunner.cs index 3b7488ea..477bb724 100644 --- a/src/Analyzer/Runner/DiagnosticsRunner.cs +++ b/src/Analyzer/Runner/DiagnosticsRunner.cs @@ -53,8 +53,7 @@ public Task> GetDiagnostics(Compilation compilation, var modifiedCompilation = compilation.WithOptions(compilationOptions); var compilationWithAnalyzer = modifiedCompilation.WithAnalyzers( diagnosticsAnalyzers, - options, - cancellationToken); + options); return compilationWithAnalyzer.GetAnalyzerDiagnosticsAsync(cancellationToken); } diff --git a/src/Analyzer/Utilities/RuleFinder.cs b/src/Analyzer/Utilities/RuleFinder.cs index d7545dec..46d254cf 100644 --- a/src/Analyzer/Utilities/RuleFinder.cs +++ b/src/Analyzer/Utilities/RuleFinder.cs @@ -40,8 +40,8 @@ public IEnumerable GetParameterlessAnalyzerTypes() public static bool IsParameterized(Type analyzerType) { - return analyzerType.GetProperties() - .Any(p => p.GetCustomAttributes().Any()); + return Array.Exists(analyzerType.GetProperties(), + p => p.GetCustomAttributes().Any()); } public IEnumerable GetAnalyzerTypes()