• M
    Implementation for Analyzer driver v2 for IDE analyzer host. · 3298740f
    Manish Vasani 提交于
    Changes include:
    
    1. Enhance CompilationWithAnalyzers to allow computing analyzer diagnostics for a specific tree/span within a compilation and/or for a subset of analyzers. Implementation ensures no duplicate analysis by tracking partial analysis state and caching the reported analyzer diagnostics.
    
    2. Overview of the new APIs added to CompilationWithAnalyzers:
        1. GetAnalyzerSyntaxDiagnostics(tree, analyzers, ct)
            1. Analogous to SyntaxTree.GetDiagnostics(ct)
            2. Gets analyzer diagnostics reported by executing syntax tree actions on the given tree.
        2. GetAnalyzerSemanticDiagnostics(semanticModel, spanOpt, analyzers, ct)
            1. Analogous to SemanticModel.GetDiagnostics(spanOpt, ct)
            2. Gets analyzer diagnostics reported by executing rest of the non-compilation actions on the given tree span.
        3. GetAnalyzerCompilationDiagnostics(analyzers, ct)
            1. Gets rest of the analyzer diagnostics which are reported by either of the following means:
                1. Compilation actions (and compilation end actions)
                2. Non-compilation actions reporting diagnostics on different tree: Executing a symbol action on a symbol definition in a tree, can report diagnostic on its partial definition in some other tree.
    
    3. Simplify IDE analyzer driver by switching it to using the new CompilationWithAnalyzers APIs for analyzer diagnostic computation. Both the IDE and compiler drivers now use the compilation event queue model for driving analysis.
    3298740f
Features.csproj 42.1 KB