public void SetParameterValues_WhenGivenSonarLintFileHasBooleanParameterType_OnlyOneParameter_PopulatesProperty()
        {
            // Arrange
            var options  = CreateOptions("ResourceTests\\RuleWithBooleanParameter\\SonarLint.xml");
            var analyzer = new CheckFileLicense(); // Cannot use mock because we use reflection to find properties.

            // Act
            ParameterLoader.SetParameterValues(analyzer, options);

            // Assert
            analyzer.IsRegularExpression.Should().BeTrue(); // value from XML file
        }
        public void SetParameterValues_WhenGivenValidSonarLintFileAndDoesNotContainAnalyzerParameters_DoesNotPopulateProperties()
        {
            // Arrange
            var options  = CreateOptions("ResourceTests\\SonarLint.xml");
            var analyzer = new LineLength(); // Cannot use mock because we use reflection to find properties.

            // Act
            ParameterLoader.SetParameterValues(analyzer, options);

            // Assert
            analyzer.Maximum.Should().Be(200); // Default value
        }
        public void SetParameterValues_WhenGivenSonarLintFileHasIntParameterType_PopulatesProperties()
        {
            // Arrange
            var options  = CreateOptions("ResourceTests\\SonarLint.xml");
            var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties.

            // Act
            ParameterLoader.SetParameterValues(analyzer, options);

            // Assert
            analyzer.Maximum.Should().Be(1); // Value from the xml file
        }
        public void SetParameterValues_WhenGivenSonarLintFileHasStringParameterType_OnlyOneParameter_PopulatesProperty()
        {
            // Arrange
            var options  = CreateOptions("ResourceTests\\RuleWithStringParameter\\SonarLint.xml");
            var analyzer = new EnumNameShouldFollowRegex(); // Cannot use mock because we use reflection to find properties.

            // Act
            ParameterLoader.SetParameterValues(analyzer, options);

            // Assert
            analyzer.FlagsEnumNamePattern.Should().Be("1"); // value from XML file
        }
        public void SetParameterValues_WithWrongPropertyType_StringInsteadOfBoolean_DoesNotPopulateProperties()
        {
            // Arrange
            var options  = CreateOptions("ResourceTests\\StringInsteadOfBoolean\\SonarLint.xml");
            var analyzer = new CheckFileLicense(); // Cannot use mock because we use reflection to find properties.

            // Act
            ParameterLoader.SetParameterValues(analyzer, options);

            // Assert
            analyzer.IsRegularExpression.Should().BeFalse(); // Default value
        }
        public void SetParameterValues_WhenNoSonarLintIsGiven_DoesNotPopulateParameters()
        {
            // Arrange
            var options  = CreateOptions("ResourceTests\\MyFile.xml");
            var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties.

            // Act
            ParameterLoader.SetParameterValues(analyzer, options);

            // Assert
            analyzer.Maximum.Should().Be(3); // Default value
        }
        public void SetParameterValues_WithWrongPropertyType_StringInsteadOfInt_DoesNotPopulateProperties()
        {
            // Arrange
            var options  = CreateOptions("ResourceTests\\StringInsteadOfInt\\SonarLint.xml");
            var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties.

            // Act
            ParameterLoader.SetParameterValues(analyzer, options);

            // Assert
            analyzer.Maximum.Should().Be(3); // Default value
        }
Exemple #8
0
        public void SetParameterValues_WithBadPath_DoesNotPopulateProperties()
        {
            // Arrange
            var options  = TestHelper.CreateOptions("ResourceTests\\ThisPathDoesNotExist\\SonarLint.xml");
            var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties.

            // Act
            ParameterLoader.SetParameterValues(analyzer, options);

            // Assert
            analyzer.Maximum.Should().Be(3); // Default value
        }
        public void SetParameterValues_WhenGivenValidSonarLintFileAndDoesNotContainAnalyzerParameters_DoesNotPopulateProperties()
        {
            // Arrange
            var additionalText = new Mock <AdditionalText>();

            additionalText.Setup(x => x.Path).Returns("ResourceTests\\SonarLint.xml");
            var options  = new AnalyzerOptions(ImmutableArray.Create(additionalText.Object));
            var analyzer = new LineLength(); // Cannot use mock because we use reflection to find properties.

            // Act
            ParameterLoader.SetParameterValues(analyzer, options);

            // Assert
            analyzer.Maximum.Should().Be(200); // Default value
        }
        public void SetParameterValues_WhenGivenValidSonarLintFileAndContainsAnalyzerParameters_PopulatesProperties()
        {
            // Arrange
            var additionalText = new Mock <AdditionalText>();

            additionalText.Setup(x => x.Path).Returns("ResourceTests\\SonarLint.xml");
            var options  = new AnalyzerOptions(ImmutableArray.Create(additionalText.Object));
            var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties.

            // Act
            ParameterLoader.SetParameterValues(analyzer, options);

            // Assert
            analyzer.Maximum.Should().Be(1); // Value from the xml file
        }
Exemple #11
0
        protected sealed override void Initialize(SonarAnalysisContext context)
        {
            var analysisContext = new ParameterLoadingAnalysisContext(context);

            Initialize(analysisContext);

            context.RegisterCompilationStartAction(
                cac =>
            {
                ParameterLoader.SetParameterValues(this, cac.Options);
                foreach (var compilationStartActions in analysisContext.CompilationStartActions)
                {
                    compilationStartActions(cac);
                }
            });
        }
        public void SetParameterValues_CalledTwiceAfterChangeInConfigFile_UpdatesProperties()
        {
            // Arrange
            var sonarLintXmlRelativePath = "ResourceTests\\ToChange\\SonarLint.xml";
            var options  = CreateOptions(sonarLintXmlRelativePath);
            var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties.

            // Act with the file on disk
            ParameterLoader.SetParameterValues(analyzer, options);
            analyzer.Maximum.Should().Be(1); // from the XML on disk

            // Update the file on disk
            var originalContent = File.ReadAllText(sonarLintXmlRelativePath);
            var modifiedContent = originalContent.Replace("<Value>1</Value>", "<Value>42</Value>");

            File.WriteAllText(sonarLintXmlRelativePath, modifiedContent);
            ParameterLoader.SetParameterValues(analyzer, options);
            analyzer.Maximum.Should().Be(42);

            // revert change
            File.WriteAllText(sonarLintXmlRelativePath, originalContent);
        }