2015-09-16 1 views
-1

J'essaie d'écrire un addin pour détecter les instructions using inutilisées dans ma solution C#. Avec MonoDevelop.Ide Je peux accéder tous en utilisant des instructions du document en cours avecRecherche d'instructions inutilisées avec MonoDevelop

var document = IdeApp.Workbench.ActiveDocument.ParsedDocument 
foreach (var u in (document.ParsedFile as CSharpUnresolvedFile).RootUsingScope.Usings) 
    Console.WriteLine(u); 

Ceci produit quelque chose comme

System.Collections.Generic 
System.Linq 
Foundation 
... 

La console immédiate me dit, u est

{Foundation} 
    Identifier: "Foundation" 
    LookupMode: ICSharpCode.NRefactory.CSharp.NameLookupMode.TypeInUsingDeclaration 
    TypeArguments: {ICSharpCode.NRefactory.EmptyList<ICSharpCode.NRefactory.TypeSystem.ITypeReference>} 
    Non-public members: 

Mais comment dire si, par exemple, Foundation est utilisé quelque part dans le document?

(En raison de la syntaxe grise mettant en lumière dans mon IDE, je suppose qu'il est possible du tout.)

Répondre

1

C'est une installation qui est déjà mis en œuvre MonoDevelop. Pour l'activer, vous devez aller dans Préférences -> Éditeur de texte -> Analyse de la source, et cocher l'option "Activer l'analyse des sources des fichiers ouverts".

+0

Oui, alors je peux cliquer avec le bouton droit et "Supprimer les directives d'utilisation redondantes". Mais j'essaie de le faire par programme. À la fin de la journée, je veux parcourir tous les fichiers et supprimer ces utilisations inutilisées. (Autant que je sache, ceci est construit dans Visual Studio, mais pas dans Xamarin Studio, que j'utilise.) – Falko

+0

intéressant, alors ce que vous voulez essentiellement faire est d'implémenter cette demande de fonctionnalité que j'ai déposée il y a quelque temps: https: //bugzilla.xamarin.com/show_bug.cgi?id=15203. Avec cela, je vous encourage à l'implémenter en tant que fonctionnalité MonoDevelop, pas en tant que nouveau complément. Aussi parce que vous devriez réutiliser le code qui existe déjà pour supprimer les instructions "using", ne pas réinventer la roue. – knocte