public static void VerifyUtilityAnalyzer <TMessage>(IEnumerable <string> paths, UtilityAnalyzerBase diagnosticAnalyzer, string protobufPath, Action <IList <TMessage> > verifyProtobuf, CompilationErrorBehavior checkMode = CompilationErrorBehavior.Default) where TMessage : IMessage <TMessage>, new() { var solutionBuilder = SolutionBuilder.CreateSolutionFromPaths(paths); foreach (var compilation in solutionBuilder.Compile()) { DiagnosticVerifier.Verify(compilation, diagnosticAnalyzer, checkMode); verifyProtobuf(ReadProtobuf(protobufPath).ToList()); } IEnumerable <TMessage> ReadProtobuf(string path) { using (var input = File.OpenRead(path)) { var parser = new MessageParser <TMessage>(() => new TMessage()); while (input.Position < input.Length) { yield return(parser.ParseDelimitedFrom(input)); } } } }
private static void VerifyAnalyzer(IEnumerable <string> paths, SonarDiagnosticAnalyzer[] diagnosticAnalyzers, IEnumerable <ParseOptions> options = null, CompilationErrorBehavior checkMode = CompilationErrorBehavior.Default, IEnumerable <MetadataReference> additionalReferences = null) { var solutionBuilder = SolutionBuilder.CreateSolutionFromPaths(paths, additionalReferences); foreach (var compilation in solutionBuilder.Compile(options?.ToArray())) { DiagnosticVerifier.Verify(compilation, diagnosticAnalyzers, checkMode); } }
private static void VerifyAnalyzer(IEnumerable <string> paths, SonarDiagnosticAnalyzer[] diagnosticAnalyzers, IEnumerable <ParseOptions> options = null, CompilationErrorBehavior checkMode = CompilationErrorBehavior.Default, OutputKind outputKind = OutputKind.DynamicallyLinkedLibrary, IEnumerable <MetadataReference> additionalReferences = null) { var solutionBuilder = SolutionBuilder.CreateSolutionFromPaths(paths, outputKind, additionalReferences, IsSupportForCSharp9InitNeeded(options)); foreach (var compilation in solutionBuilder.Compile(options?.ToArray())) { DiagnosticVerifier.Verify(compilation, diagnosticAnalyzers, checkMode); } }
public static void VerifyUtilityAnalyzer<TMessage>(IEnumerable<string> paths, UtilityAnalyzerBase diagnosticAnalyzer, string protobufPath, Action<IReadOnlyList<TMessage>> verifyProtobuf, IEnumerable<ParseOptions> options = null) where TMessage : IMessage<TMessage>, new() { var solutionBuilder = SolutionBuilder.CreateSolutionFromPaths(paths); foreach (var compilation in solutionBuilder.Compile(options?.ToArray())) { DiagnosticVerifier.Verify(compilation, diagnosticAnalyzer, CompilationErrorBehavior.Default); verifyProtobuf(ReadProtobuf(protobufPath).ToList()); }
public static void VerifyVisualBasicAnalyzer(string snippet, SonarDiagnosticAnalyzer diagnosticAnalyzer, CompilationErrorBehavior checkMode = CompilationErrorBehavior.Default, IEnumerable <MetadataReference> additionalReferences = null) { var solution = SolutionBuilder .Create() .AddProject(AnalyzerLanguage.VisualBasic) .AddSnippet(snippet) .AddReferences(additionalReferences) .GetSolution(); // ToDo: add [CallerLineNumber]int lineNumber = 0 // then add ability to shift result reports with this line number foreach (var compilation in solution.Compile()) { DiagnosticVerifier.Verify(compilation, diagnosticAnalyzer, checkMode); } }