2015-09-16 10 views
-1

Я пытаюсь написать addin для обнаружения неиспользуемых операторов в моем решении C#. С MonoDevelop.Ide я могу получить доступ все используя операторы текущего документа сНайти неиспользуемые операторы с помощью MonoDevelop

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

Это выводит что-то вроде

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

Непосредственная консоль говорит мне, u является

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

Но как определить, используется ли, например, Foundation где-нибудь в документе?

(Из-за серой подсветкой синтаксиса в моем IDE, я предполагаю, что это вообще возможно.)

ответ

1

Это средство, которое уже реализовано в MonoDevelop. Чтобы включить его, перейдите в «Настройки» -> «Текстовый редактор» -> «Анализ источника» и установите флажок «Включить исходный анализ открытых файлов».

+0

Да, тогда я могу щелкнуть правой кнопкой мыши и «Удалить избыточность с помощью директив». Но я пытаюсь сделать это программно. В конце дня я хочу пройти все файлы и удалить неиспользуемые файлы. (Насколько я знаю, это встроено в Visual Studio, но не в Xamarin Studio, которое я использую.) – Falko

+0

интересно, то, что вы в основном хотите сделать, это реализовать этот запрос функции, который я подал некоторое время назад: https: //bugzilla.xamarin.com/show_bug.cgi?id=15203. При этом я рекомендую вам реализовать его как функцию MonoDevelop, а не как новую надстройку. Также потому, что вы должны повторно использовать код, который уже существует для удаления «использования» операторов, а не изобретать колесо. – knocte