Ограничить длину метода?C#

Место общения программистов C#
Ответить
Anonymous
 Ограничить длину метода?

Сообщение Anonymous »

Я написал модульный тест, чтобы ограничить количество строк методов, но он выдает неправильные результаты и не работает во всех случаях?
Возможно, я не правильно понял некоторые математические вопросы или обнаружение и задавался вопросом, где я ошибся?
Я просматриваю все файлы *.cs, затем каждую строку, отмечая начало метода (объявление) и подсчитывая количество итераций. пока он не достигнет конечного оператора (}),
public class LongMethodLineCountTest
{
private const int MaxLinesForMethod = 60;

[Test]
public Task Check_All_Methods_Line_Count()
{
var path = Directory.GetParent(Directory.GetCurrentDirectory())?.Parent?.Parent.Parent.FullName;

foreach (var file in Directory.GetFiles(path, "*.cs", SearchOption.AllDirectories))
{
var lines = File.ReadAllLines(file);
var lastMethodDecLineNumber = 0;
var lastMethodDecName = string.Empty;
var lineNumber = 0;
var methods = new Dictionary();

foreach (var line in lines)
{
lineNumber++;

if (line.Length < 5)
{
continue;
}

var isMethodDecLine = line.Contains("private void") ||
line.Contains("public Task") ||
line.Contains("private Task") ||
line.Contains("public async") ||
line.Contains("private async");

var isMethodEndLine = line[4..] == "}";

if (isMethodDecLine)
{
lastMethodDecLineNumber = lineNumber;
lastMethodDecName = line;
}
else if (isMethodEndLine)
{
methods[lastMethodDecName] = lineNumber - lastMethodDecLineNumber;
}
}

var methodsTooBig = methods.Where(x => x.Value > MaxLinesForMethod).ToList();

if (methodsTooBig.Count != 0)
{
Console.WriteLine(file);
Console.WriteLine(string.Join(",", methodsTooBig.Select(x => x.Key)));
}

Assert.That(methods.Values, Has.All.LessThanOrEqualTo(MaxLinesForMethod));
}

return Task.CompletedTask;
}
}


Подробнее здесь: https://stackoverflow.com/questions/782 ... hod-length
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»