SP2101: Тело метода не должно содержать более 120 строк кода. Как это можно подавить?
У меня есть метод, который проходит через множество типов файлов, например, так:
case ".jpg":
res = "image/jpeg";
break;
case ".pdf":
res = "application/pdf";
break;
case ".doc":
res = "application/msword";
break;
..это продолжается несколько сотен строк. И я столкнулся с ошибкой StyleCop: SP2101: Method body must not contain more than 120 code lines
Я искал вокруг и ничего не могу найти по этому поводу, не говоря уже о подавлении. Кто-нибудь знает, как подавить это сообщение?
Редактировать: я думаю, что это StyleCop+
ошибка и не может быть решена с помощью программы FxCop для копирования подавления.
3 ответа
Я автор StyleCop+.
Одним из правил, которое оно добавляет к оригинальной функциональности StyleCop, действительно является SP2101 (MethodMustNotContainMoreLinesThan), который проверяет размер вашего метода.
Как и любое другое предупреждение StyleCop, это может быть:
- отключено, в этом случае это означает, что вам просто не нужно
- подавлено для определенного места в коде (когда оно все еще нужно, но не здесь)
Более того, это настраивается. Если вы хотите использовать это правило, вы можете поставить любое число вместо 120 для вашей собственной конфигурации. 120 просто по умолчанию.
Суть этого правила заключается в ремонтопригодности. Может быть очень важно убедиться, что вы не попадаете в код спагетти. StyleCop - это просто инструмент, который дает вам возможность получить контроль над этим. StyleCop + предлагает еще несколько правил для проверки. Так что если вы хотите их использовать - продолжайте. Если нет - просто отключите его. Это своего рода инструмент, который действительно необходимо настроить перед использованием.
Дайте мне знать, если вам нужна помощь с настройкой.
Вы можете рефакторинг это к Dictionary<string,string>
:
var mimeTypesPerFileType = new Dictionary<string,string>();
mimeTypesPerFileType.Add(".jpg", "image/jpeg");
mimeTypesPerFileType.Add(".pdf", "application/pdf");
...
Это сократит количество строк в методе примерно на треть (хотя это может быть в отдельном методе / поле, поэтому вам не нужно каждый раз заполнять словарь).
И тогда метод просто меняется на:
return mimeTypesPerFileType[fileType];
Обновить:
Поскольку у вас есть около 400 нечетных случаев (около 1300 строк в методе), вы действительно должны загрузить эту карту из файла или базы данных. Это, безусловно, уменьшит количество строк.
Я не использую StyleCop, но одним из предложений может быть изменение вашего подхода. Вы можете сохранить все эти пары значений в файле XML и т. Д. И использовать List(Of T)
организовать их всех. Ваш метод может быть сокращен до нескольких строк.