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
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();