public void Benchmark()
 {
     var analyzer = new SpellingAnalyzerCSharp(LengthWordChecker.Four);
     var allDiagnosticsByProject = Task.WhenAll(Solution.Projects.Select(p => FindSpellingMistakesForProject(p, analyzer)))
                                   .GetAwaiter()
                                   .GetResult();
 }
        public async Task operators_are_ignored()
        {
            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker("operator", "+", "operator+", "string", "Guid", "System.Guid", "op_Addition"));
            var project  = await ReadCodeFileAsProjectAsync("MethodNames.OperatorExamples.csx");

            var diagnostics = await GetDiagnosticsAsync(project, analyzer);

            diagnostics.Should().BeEmpty();
        }
        public async Task does_not_find_mistakes_for_invocation()
        {
            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker("System", "Console", "Write", "Line"));
            var project  = await ReadCodeFileAsProjectAsync("MethodNames.Invocation.csx");

            var diagnostics = await GetDiagnosticsAsync(project, analyzer);

            diagnostics.Should().BeEmpty();
        }
Example #4
0
        public async Task name_has_no_spelling_mistakes()
        {
            var analyzer = new SpellingAnalyzerCSharp(new AllGoodWordChecker());
            var project  = await ReadCodeFileAsProjectAsync("TypeName.FirstMiddleLast.csx");

            var diagnostics = await GetDiagnosticsAsync(project, analyzer);

            diagnostics.Should().BeEmpty();
        }
        public async Task interface_name_spelling_ignores_prefix_letter()
        {
            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker("I"));
            var project  = await ReadCodeFileAsProjectAsync("TypeName.ISimpleInterfaceExample.csx");

            var diagnostics = await GetDiagnosticsAsync(project, analyzer);

            diagnostics.Should().BeEmpty();
        }
Example #6
0
        public async Task generic_parameter_prefix_is_ignored()
        {
            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker("T"));
            var project  = await ReadCodeFileAsProjectAsync("GenericType.SimpleExamples.csx");

            var diagnostics = await GetDiagnosticsAsync(project, analyzer);

            diagnostics.Should().BeEmpty();
        }
        public async Task common_prefixes_are_ignored()
        {
            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker("_", "m", "m_"));
            var project  = await ReadCodeFileAsProjectAsync("Fields.SimpleExamples.csx");

            var diagnostics = await GetDiagnosticsAsync(project, analyzer);

            diagnostics.Should().BeEmpty();
        }
        public async Task at_symbol_is_not_checked()
        {
            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker("@", "@readonly"));
            var project  = await ReadCodeFileAsProjectAsync("LocalVariables.SimpleExamples.csx");

            var diagnostics = await GetDiagnosticsAsync(project, analyzer);

            diagnostics.Should().BeEmpty();
        }
Example #9
0
        public async Task does_not_find_mistakes_in_switch_label_keywords()
        {
            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker("case", "default"));
            var project  = await ReadCodeFileAsProjectAsync("Label.SimpleExamples.csx");

            var diagnostics = await GetDiagnosticsAsync(project, analyzer);

            diagnostics.Should().BeEmpty();
        }
        public async Task no_diagnostics_when_all_words_are_ok()
        {
            var analyzer = new SpellingAnalyzerCSharp(new AllGoodWordChecker());
            var project  = await ReadCodeFileAsProjectAsync("LocalVariables.SimpleExamples.csx");

            var diagnostics = await GetDiagnosticsAsync(project, analyzer);

            diagnostics.Should().BeEmpty();
        }
Example #11
0
        public async Task words_in_code_elements_are_ignored()
        {
            var word     = "ignored";
            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker(word));
            var project  = await ReadCodeFileAsProjectAsync("XmlDoc.SimpleExamples.csx");

            var diagnostics = await GetDiagnosticsAsync(project, analyzer);

            diagnostics.Should().BeEmpty();
        }
        public async Task can_find_mistakes_in_interface_props()
        {
            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker("Count"));
            var project  = await ReadCodeFileAsProjectAsync("TypeName.ISimpleInterfaceExample.csx");

            var diagnostics = (await GetDiagnosticsAsync(project, analyzer)).ToList();

            diagnostics.Should().ContainSingle()
            .Subject.Should()
            .HaveId("SP3110")
            .And.HaveLocation(122, 127, "TypeName.ISimpleInterfaceExample.csx")
            .And.HaveMessageContaining("Count");
        }
        public async Task can_check_spelling_of_catchs()
        {
            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker("bad", "Value"));
            var project  = await ReadCodeFileAsProjectAsync("Catch.SimpleExamples.csx");

            var diagnostics = (await GetDiagnosticsAsync(project, analyzer)).ToList();

            diagnostics.Should().HaveCount(2);
            diagnostics[0].Should().HaveMessageContaining("bad")
            .And.HaveLocation(309, 312, "Catch.SimpleExamples.csx");
            diagnostics[1].Should().HaveMessageContaining("Value")
            .And.HaveLocation(312, 317, "Catch.SimpleExamples.csx");
        }
Example #14
0
        public async Task can_find_mistake_in_labeled_variable_declaration()
        {
            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker("state"));
            var project  = await ReadCodeFileAsProjectAsync("Label.SimpleExamples.csx");

            var diagnostics = await GetDiagnosticsAsync(project, analyzer);

            diagnostics.Should().ContainSingle()
            .Subject.Should()
            .HaveId("SP3110")
            .And.HaveLocation(162, 167, "Label.SimpleExamples.csx")
            .And.HaveMessageContaining("state");
        }
Example #15
0
        public async Task name_contains_spelling_mistake_in_the_middle()
        {
            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker("Middle"));
            var project  = await ReadCodeFileAsProjectAsync("TypeName.FirstMiddleLast.csx");

            var diagnostics = await GetDiagnosticsAsync(project, analyzer);

            diagnostics.Should().ContainSingle()
            .Subject.Should()
            .HaveId("SP3110")
            .And.HaveLocation(79, 85, "TypeName.FirstMiddleLast.csx")
            .And.HaveMessageContaining("Middle");
        }
        public async Task can_find_mistakes_in_indexer_params()
        {
            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker("index", "word"));
            var project  = await ReadCodeFileAsProjectAsync("Properties.SimpleExamples.csx");

            var diagnostics = (await GetDiagnosticsAsync(project, analyzer)).ToList();

            diagnostics.Should().HaveCount(2);
            diagnostics[0].Should().HaveMessageContaining("index")
            .And.HaveLocation(484, 489, "Properties.SimpleExamples.csx");
            diagnostics[1].Should().HaveMessageContaining("word")
            .And.HaveLocation(498, 502, "Properties.SimpleExamples.csx");
        }
        public async Task can_find_mistake_in_struct()
        {
            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker("Method"));
            var project  = await ReadCodeFileAsProjectAsync("TypeName.SimpleStructExample.csx");

            var diagnostics = await GetDiagnosticsAsync(project, analyzer);

            diagnostics.Should().ContainSingle()
            .Subject.Should()
            .HaveId("SP3110")
            .And.HaveLocation(197, 203, "TypeName.SimpleStructExample.csx")
            .And.HaveMessageContaining("Method");
        }
        public async Task interface_name_can_contain_mistakes()
        {
            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker("Simple", "Interface", "Example"));
            var project  = await ReadCodeFileAsProjectAsync("TypeName.ISimpleInterfaceExample.csx");

            var diagnostics = (await GetDiagnosticsAsync(project, analyzer)).ToList();

            diagnostics.Should().HaveCount(3);
            diagnostics[0].Should().HaveMessageContaining("Simple")
            .And.HaveLocation(79, 85, "TypeName.ISimpleInterfaceExample.csx");
            diagnostics[1].Should().HaveMessageContaining("Interface")
            .And.HaveLocation(85, 94, "TypeName.ISimpleInterfaceExample.csx");
            diagnostics[2].Should().HaveMessageContaining("Example")
            .And.HaveLocation(94, 101, "TypeName.ISimpleInterfaceExample.csx");
        }
        public async Task can_find_mistakes_in_enums(string expectedWord, int expectedStart)
        {
            var expectedEnd = expectedStart + expectedWord.Length;

            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker(expectedWord));
            var project  = await ReadCodeFileAsProjectAsync("Enum.SimpleExamples.csx");

            var diagnostics = await GetDiagnosticsAsync(project, analyzer);

            diagnostics.Should().ContainSingle()
            .Subject.Should()
            .HaveId("SP3110")
            .And.HaveLocation(expectedStart, expectedEnd, "Enum.SimpleExamples.csx")
            .And.HaveMessageContaining(expectedWord);
        }
Example #20
0
        public async Task name_contains_individual_mistakes_for_all_words()
        {
            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker("First", "Middle", "Last"));
            var project  = await ReadCodeFileAsProjectAsync("TypeName.FirstMiddleLast.csx");

            var diagnostics = (await GetDiagnosticsAsync(project, analyzer)).ToList();

            diagnostics.Should().HaveCount(3);
            diagnostics[0].Should().HaveMessageContaining("First")
            .And.HaveLocation(74, 79, "TypeName.FirstMiddleLast.csx");
            diagnostics[1].Should().HaveMessageContaining("Middle")
            .And.HaveLocation(79, 85, "TypeName.FirstMiddleLast.csx");
            diagnostics[2].Should().HaveMessageContaining("Last")
            .And.HaveLocation(85, 89, "TypeName.FirstMiddleLast.csx");
        }
        public async Task struct_name_can_contain_mistakes()
        {
            var analyzer = new SpellingAnalyzerCSharp(new WrongWordChecker("Simple", "Struct", "Example"));
            var project  = await ReadCodeFileAsProjectAsync("TypeName.SimpleStructExample.csx");

            var diagnostics = (await GetDiagnosticsAsync(project, analyzer)).ToList();

            diagnostics.Should().HaveCount(3);
            diagnostics[0].Should().HaveMessageContaining("Simple")
            .And.HaveLocation(75, 81, "TypeName.SimpleStructExample.csx");
            diagnostics[1].Should().HaveMessageContaining("Struct")
            .And.HaveLocation(81, 87, "TypeName.SimpleStructExample.csx");
            diagnostics[2].Should().HaveMessageContaining("Example")
            .And.HaveLocation(87, 94, "TypeName.SimpleStructExample.csx");
        }
Example #22
0
 static async Task RunTestAsync(Solution solution)
 {
     var analyzer = new SpellingAnalyzerCSharp(ThisSolutionPerfSpec.LengthWordChecker.Two);
     await Task.WhenAll(solution.Projects.Select(p => FindSpellingMistakesForProject(p, analyzer))).ConfigureAwait(false);
 }
Example #23
0
        static async Task <ImmutableArray <Diagnostic> > FindSpellingMistakesForProject(Project project, SpellingAnalyzerCSharp analyzer)
        {
            var compilation = await project.GetCompilationAsync().ConfigureAwait(false);

            var diagnostics = await compilation
                              .WithAnalyzers(ImmutableArray.Create <DiagnosticAnalyzer>(analyzer))
                              .GetAnalyzerDiagnosticsAsync()
                              .ConfigureAwait(false);

            return(diagnostics);
        }