2016-02-17 4 views
1

Мне интересно узнать, сколько статических методов и статических классов у нас есть в нашем решении Visual Studio 2013. У нас есть много проектов ...Кодекс Метрики - количество статических классов и методов

Есть ли что-то в Visual Studio, которое может это сделать? Я не вижу ничего в окне «Кодовые метрики», которое считается.

Я знаю, что я могу использовать Ctrl + F для поиска статического класса (бит более сложный с использованием RegEx для статического класса). Также это сложно для методов. Таким образом, я получаю 350 или около того статических классов.

Единственная другая мысль, которую я имею на этом, - это что-то вроде написания моей собственной проверки на основе отражения.

ответ

2

С Ctrl-F и с помощью «Искать в: Всем растворе», вы могли бы просто найти с этим регулярным выражением для статических методов

^\s*(public\s+|internal\s+|private\s+)?static\s+([a-zA-Z0-9_\<\>\.\:]+)\s+([a-zA-Z0-9_\<\>]+)\s*\(.*\) 

и это для статических классов

^\s*(public\s+|internal\s+|private\s+)?static\s+class 

Чтобы быть более уверенный в отсутствии ложных срабатываний, вы можете ограничить поиск поиском только в * .cs файлах. Внизу «Find Results» вы увидите «Matching lines:» со счетом после него.

Ограничения, которые я вижу:

  • Новая строка в объявлении метода или класса разорвет поиска. Это можно было бы исправить добавлением (\r?\n)? после каждого токена в регулярных выражениях выше.
  • Комментарий блока или код #ifdef 0 не будет обнаружен. Я не думаю, что есть простой способ обойти это без тщательного анализа его с помощью Roslyn (например) или путем его компиляции и использования отражения, как вы говорите в своем вопросе.
+0

@ Эти поиски работали в ваших целях? –

+0

Эй, Джон, да. Единственное, что мне нравится NDepend для такого рода вещей, и все причудливые инструменты, которые получают письменную информацию о том, что помощь в разработке - особенно в устаревших системах. Я отмечу это как ответ, поскольку он свободен! – Andez

1

Инструмент NDepend поставляется с code query language based on C# LINQ + он интегрируется с VS2010,2012,2013,2015.

В частности, чтобы узнать, сколько статические классов и статические методов ваших проектов имеют, вам просто нужно отредактировать два код запроса:

from t in Application.Types where t.IsStatic select new { t, t.NbLinesOfCode } 

и

from m in Application.Methods where m.IsStatic select new { m, m.NbLinesOfCode } 

запросов составляются в прямом эфире, и отображаются перечисленные элементы кода.

Обратите внимание, что язык кода запроса может использоваться для написания правила кода. Около 200 default code rules and queries are provided.

NDepend code query to list static methods

Чтобы получить процент от статических типов вы можете написать запрос:

(Application.Types.Count(t => t.IsStatic) * 100f/Application.Types.Count()) 
.ToEnumerable().Sum() 

Чтобы получить процент строк кода в статических типов вы можете написать запрос:

(Application.Types.Where(t => t.IsStatic).Sum(t => t.NbLinesOfCode) * 100f/Application.Types.Sum(t => t.NbLinesOfCode)) 
.ToEnumerable().Sum() 

Отказ от ответственности: Я работаю для NDepend

+1

Должен признаться, мне нравится nDepend. У меня был суд, срок действия которого истек. Если бы я мог заставить нашего разработчика-разработчика инвестировать – Andez

Смежные вопросы