Skip to content

Commit

Permalink
Addressed PR review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
CristianAmbrosini committed Mar 9, 2023
1 parent 5efb3c6 commit 993068b
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 38 deletions.
5 changes: 5 additions & 0 deletions analyzers/src/SonarAnalyzer.Common/Helpers/ParameterLoader.cs
Expand Up @@ -38,6 +38,11 @@ internal static class ParameterLoader
*/
internal static void SetParameterValues(ParametrizedDiagnosticAnalyzer parameteredAnalyzer, SonarLintXmlReader sonarLintReader)
{
if (!sonarLintReader.ParametrizedRules.Any())
{
return;
}

var propertyParameterPairs = parameteredAnalyzer.GetType()
.GetRuntimeProperties()
.Select(x => new { Property = x, Descriptor = x.GetCustomAttributes<RuleParameterAttribute>().SingleOrDefault() })
Expand Down
Expand Up @@ -58,7 +58,7 @@ public class SonarLintXmlReader
public string[] GlobalTestExclusions => globalTestExclusions ??= ReadCommaSeparatedArray(ReadSettingsProperty("sonar.global.test.exclusions"));

private List<SonarLintXmlRule> parametrizedRules;
public List<SonarLintXmlRule> ParametrizedRules => parametrizedRules ??= ReadRulesParameters();
public List<SonarLintXmlRule> ParametrizedRules => parametrizedRules ??= ReadRuleParameters();

public SonarLintXmlReader(SourceText sonarLintXml, string language = LanguageNames.CSharp)
{
Expand All @@ -83,7 +83,7 @@ private static SonarLintXml ParseContent(SourceText sonarLintXml)
}
}

private List<SonarLintXmlRule> ReadRulesParameters() =>
private List<SonarLintXmlRule> ReadRuleParameters() =>
sonarLintXml is { Rules: { } rules }
? rules.Where(x => x.Parameters.Any()).ToList()
: new();
Expand Down
Expand Up @@ -119,37 +119,6 @@ public void SetParameterValues_WhenGivenValidSonarLintFileAndDoesNotContainAnaly
analyzer.Maximum.Should().Be(200); // Default value
}

[TestMethod]
public void SetParameterValues_WithNonExistentPath_UsesInMemoryText()
{
// Arrange
var maxValue = 1;
var ruleParameters = new List<SonarLintXmlRule>()
{
new SonarLintXmlRule()
{
Key = "S1067",
Parameters = new List<SonarLintXmlKeyValuePair>()
{
new SonarLintXmlKeyValuePair()
{
Key = "max",
Value = maxValue.ToString()
}
}
}
};
var sonarLintXml = AnalysisScaffolding.CreateSonarLintXml(TestContext, rulesParameters: ruleParameters);
var compilation = CreateCompilationWithOption(sonarLintXml);
var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties.

// Act
ParameterLoader.SetParameterValues(analyzer, compilation.SonarLintFile());

// Assert
analyzer.Maximum.Should().Be(maxValue); // In-memory value
}

[TestMethod]
public void SetParameterValues_CalledTwiceAfterChangeInConfigFile_UpdatesProperties()
{
Expand Down Expand Up @@ -241,11 +210,6 @@ private static SonarCompilationReportingContext CreateCompilationWithOption(stri
? AnalysisScaffolding.CreateOptions(filePath)
: AnalysisScaffolding.CreateOptions(filePath, text);
var compilation = SolutionBuilder.Create().AddProject(AnalyzerLanguage.CSharp).GetCompilation();
return CreateCompilation(compilation, options);
}

private static SonarCompilationReportingContext CreateCompilation(Compilation compilation, AnalyzerOptions options)
{
var compilationContext = new CompilationAnalysisContext(compilation, options, _ => { }, _ => true, default);
return new(AnalysisScaffolding.CreateSonarAnalysisContext(), compilationContext);
}
Expand Down

0 comments on commit 993068b

Please sign in to comment.