Из-за избыточных вещей я имею в виду пространства имен, поскольку я знаю, что они необходимы, но если их 10 тыс., это не добавляет ценной информации в таблицу.
Можно ли это сделать с помощью Linq?
Из-за избыточных вещей я имею в виду пространства имен, поскольку я знаю, что они необходимы, но если их 10 тыс., это не добавляет ценной информации в таблицу.
Можно ли это сделать с помощью Linq?
Не нужно изобретать велосипед. Взгляните на Visual Studio Code Metrics PowerTool 11.0
Обзор
Код Metrics PowerTool - это утилита командной строки, которая вычисляет метрики кода для вашего управляемого кода и сохраняет их в XML файле. Этот инструмент позволяет командам собирать и сообщать показатели кода как часть процесса сборки. Вычисляемые показатели кода:
• Индекс работоспособности
• Cyclomatic Complexity
• Глубина наследования
• Сочетание классов
• Линии кода (LOC)
Я знаю, что вы сказали, что у вас нет Ultimate, поэтому я просто хотел показать вам, чего вам не хватает.
Для всех остальных SourceMonitor
Visual studio сделает это за вас. Щелкните правой кнопкой мыши на своем проекте и выберите Calculate Code Metrics
.
От: http://rajputyh.blogspot.in/2014/02/counting-number-of-real-lines-in-your-c.html
private int CountNumberOfLinesInCSFilesOfDirectory(string dirPath)
{
FileInfo[] csFiles = new DirectoryInfo(dirPath.Trim())
.GetFiles("*.cs", SearchOption.AllDirectories);
int totalNumberOfLines = 0;
Parallel.ForEach(csFiles, fo =>
{
Interlocked.Add(ref totalNumberOfLines, CountNumberOfLine(fo));
});
return totalNumberOfLines;
}
private int CountNumberOfLine(Object tc)
{
FileInfo fo = (FileInfo)tc;
int count = 0;
int inComment = 0;
using (StreamReader sr = fo.OpenText())
{
string line;
while ((line = sr.ReadLine()) != null)
{
if (IsRealCode(line.Trim(), ref inComment))
count++;
}
}
return count;
}
private bool IsRealCode(string trimmed, ref int inComment)
{
if (trimmed.StartsWith("/*") && trimmed.EndsWith("*/"))
return false;
else if (trimmed.StartsWith("/*"))
{
inComment++;
return false;
}
else if (trimmed.EndsWith("*/"))
{
inComment--;
return false;
}
return
inComment == 0
&& !trimmed.StartsWith("//")
&& (trimmed.StartsWith("if")
|| trimmed.StartsWith("else if")
|| trimmed.StartsWith("using (")
|| trimmed.StartsWith("else if")
|| trimmed.Contains(";")
|| trimmed.StartsWith("public") //method signature
|| trimmed.StartsWith("private") //method signature
|| trimmed.StartsWith("protected") //method signature
);
}
У меня нет твердого представления о них, но вы можете использовать Значения кодовых показателей, чтобы получить некоторую статистику о вашем решении, например, строки кода.
мы использовали куб tfs для получения данных о том, сколько строк добавляет/удаляет/меняет на наших tfs. Этот, который вы можете просмотреть с помощью excel. Но нужно правильно настроить его. И я не думаю, что это исключает комментарии и пустые строки и т.д.
Ctrl + Shift + f (Найти в файлах) → put ";" в разделе "Найти что:" - текстовое поле → Нажмите кнопку "Найти все".
Этот чрезвычайно простой метод использует тот факт, что любой оператор С# заканчивается точкой с запятой. И, по крайней мере, я не использую точки с запятой в любом другом месте (например, в комментариях)...