예제 #1
0
 public void DoNotUseIif_CodeFix() =>
 Verifier.VerifyCodeFix(
     @"TestCases\DoNotUseIif.vb",
     @"TestCases\DoNotUseIif.Fixed.vb",
     new SonarAnalyzer.Rules.VisualBasic.DoNotUseIif(),
     new SonarAnalyzer.Rules.VisualBasic.DoNotUseIifCodeFixProvider(),
     additionalReferences: MetadataReferenceFacade.GetMicrosoftVisualBasic());
예제 #2
0
        private ProjectBuilder AddProject(AnalyzerLanguage language, string projectName, bool createExtraEmptyFile)
        {
            var languageName = language == AnalyzerLanguage.CSharp
                ? LanguageNames.CSharp
                : LanguageNames.VisualBasic;

            var project = Solution.AddProject(projectName, projectName, languageName);


            var projectBuilder = ProjectBuilder
                                 .FromProject(project)
                                 .AddReferences(MetadataReferenceFacade.GetProjectDefaultReferences());

            if (language == AnalyzerLanguage.VisualBasic)
            {
                // Need a reference to the VB dll to be able to use the Module keyword
                projectBuilder = projectBuilder.AddReferences(MetadataReferenceFacade.GetMicrosoftVisualBasic());
            }

            if (createExtraEmptyFile)
            {
                // adding an extra file to the project
                // this won't trigger any issues, but it keeps a reference to the original ParseOption, so
                // if an analyzer/codefix changes the language version, Roslyn throws an ArgumentException
                projectBuilder = projectBuilder
                                 .AddSnippet(string.Empty, fileName: "ExtraEmptyFile.g." + language.FileExtension);
            }

            return(projectBuilder);
        }
예제 #3
0
        private ProjectBuilder AddProject(AnalyzerLanguage language, string projectName, bool createExtraEmptyFile, OutputKind outputKind = OutputKind.DynamicallyLinkedLibrary)
        {
            var languageName = language == AnalyzerLanguage.CSharp
                ? LanguageNames.CSharp
                : LanguageNames.VisualBasic;

            var project = Solution.AddProject(projectName, projectName, languageName);

            var compilationOptions = project.CompilationOptions.WithOutputKind(outputKind);

            if (languageName == LanguageNames.CSharp)
            {
                compilationOptions = ((CSharpCompilationOptions)compilationOptions).WithAllowUnsafe(true);
            }
            project = project.WithCompilationOptions(compilationOptions);

            var projectBuilder = ProjectBuilder
                                 .FromProject(project)
                                 .AddReferences(MetadataReferenceFacade.GetProjectDefaultReferences());

            if (language == AnalyzerLanguage.VisualBasic)
            {
                // Need a reference to the VB dll to be able to use the Module keyword
                projectBuilder = projectBuilder.AddReferences(MetadataReferenceFacade.GetMicrosoftVisualBasic());
            }

            if (createExtraEmptyFile)
            {
                // adding an extra file to the project
                // this won't trigger any issues, but it keeps a reference to the original ParseOption, so
                // if an analyzer/codefix changes the language version, Roslyn throws an ArgumentException
                projectBuilder = projectBuilder
                                 .AddSnippet(string.Empty, fileName: "ExtraEmptyFile.g." + language.FileExtension);
            }

            return(projectBuilder);
        }