Sort and remove (unused) using statements Roslyn script/code?

后端 未结 5 643
旧时难觅i
旧时难觅i 2020-12-31 09:34

Sort and remove (unused) using statements Roslyn script/code? I\'m looking for some .NET/Roslyn (compiler as service) code that can run through a project and sort and remov

5条回答
  •  醉酒成梦
    2020-12-31 09:50

    This is a feature in Visual Studio, but academically I think you would collect using statements from your SyntaxTree like this:

    var usings = syntaxTree.Root.DescendentNodes().Where(node is UsingDirectiveSyntax);
    

    ...and compare that to the namespaces resolved by the symbol table like this:

    private static IEnumerable GetNamespaceSymbol(ISymbol symbol)
    {
        if (symbol != null && symbol.ContainingNamespace != null)
            yield return symbol.ContainingNamespace;
    }
    
    var ns = semanticModel.SyntaxTree.Root.DescendentNodes().SelectMany(node =>
        GetNamespaceSymbol(semanticModel.GetSemanticInfo(node).Symbol)).Distinct();
    

提交回复
热议问题