Я написал модульный тест, чтобы ограничить количество строк методов, но он выдает неправильные результаты и не работает во всех случаях?
Возможно, я не правильно понял некоторые математические вопросы или обнаружение и задавался вопросом, где я ошибся?
Я просматриваю все файлы *.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
Ограничить длину метода? ⇐ C#
Место общения программистов C#
1711845532
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;
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78247880/limiting-method-length[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия