Meziantou.Analyzer
2.0.183
Анализатор Roslyn для обеспечения соблюдения некоторых хороших практик в C# с точки зрения дизайна, использования, безопасности, производительности и стиля.
Установите пакет Nuget https://www.nuget.org/packages/meziantou.analyzer/
Если вы уже используете другие анализаторы, вы можете проверить, какие правила дублируются с известными анализаторами
| Идентификатор | Категория | Описание | Тяжесть | Включено | Код исправление |
|---|---|---|---|---|---|
| MA0001 | Использование | StringComparison отсутствует | ✔ | ✔ | |
| MA0002 | Использование | IequalityComparer <string> или iComparer <string> отсутствует | ✔ | ✔ | |
| MA0003 | Стиль | Добавить имя параметра для улучшения читаемости | ✔ | ✔ | |
| MA0004 | Использование | Используйте задачу. Configureawait | ✔ | ✔ | |
| MA0005 | Производительность | Используйте array.empty <t> () | ✔ | ✔ | |
| MA0006 | Использование | Используйте string.equals вместо оператора равенства | ✔ | ✔ | |
| MA0007 | Стиль | Добавить запятую после последнего значения | ✔ | ✔ | |
| MA0008 | Производительность | Добавить structlayoutattribute | ✔ | ✔ | |
| MA0009 | Безопасность | Добавить тайм -аут оценки корзины | ✔ | ||
| MA0010 | Дизайн | Марк атрибуты с атрибутом | ✔ | ✔ | |
| MA0011 | Использование | IformatProvider отсутствует | ✔ | ||
| MA0012 | Дизайн | Не поднимайте зарезервированный тип исключения | ✔ | ||
| MA0013 | Дизайн | Типы не должны расширять System.applicationException | ✔ | ||
| MA0014 | Дизайн | Не поднимайте System.ApplicationException Тип | ✔ | ||
| MA0015 | Использование | Укажите имя параметра в аргументе | ✔ | ||
| MA0016 | Дизайн | Предпочитаю использование абстракции коллекции вместо реализации | ✔ | ||
| MA0017 | Дизайн | Абстрактные типы не должны иметь публичных или внутренних конструкторов | ✔ | ✔ | |
| MA0018 | Дизайн | Не объявляйте статические члены на общих типах (устарели; вместо этого используйте CA1000) | ✔ | ||
| MA0019 | Использование | Используйте EventArgs.empty | ✔ | ✔ | |
| MA0020 | Производительность | Используйте прямые методы вместо методов LINQ | ✔ | ✔ | |
| MA0021 | Использование | Используйте stringcomparer.gethashcode вместо string.gethashcode | ✔ | ✔ | |
| MA0022 | Дизайн | Return task.fromresult вместо возвращения NULL | ✔ | ✔ | |
| MA0023 | Производительность | Добавить regexoptions.explicitcapture | ✔ | ||
| MA0024 | Использование | Используйте явный StringComperer, когда это возможно | ✔ | ✔ | |
| MA0025 | Дизайн | Реализовать функциональность вместо того, чтобы бросать NotimplementedException | ✔ | ||
| MA0026 | Дизайн | Исправить комментарий Тодо | ✔ | ||
| MA0027 | Использование | Предпочитаю переосмысление исключения неявно | ✔ | ✔ | |
| MA0028 | Производительность | Оптимизировать использование StringBuilder | ✔ | ✔ | |
| MA0029 | Производительность | Объединить методы LINQ | ✔ | ✔ | |
| MA0030 | Производительность | Удалить бесполезный звонок за заказ | ✔ | ✔ | |
| MA0031 | Производительность | Оптимизировать перечисление. Count () Использование | ✔ | ✔ | |
| MA0032 | Использование | Используйте перегрузку с аргументом CancellationToken | |||
| MA0033 | Дизайн | Не отметьте поля экземпляра с помощью ThreadStaticatTribute | ✔ | ||
| MA0035 | Использование | Не используйте опасные методы резьбы | ✔ | ||
| MA0036 | Дизайн | Сделайте класс статичным | ✔ | ✔ | |
| MA0037 | Использование | Удалить пустое заявление | ✔ | ✔ | |
| MA0038 | Дизайн | Сделайте метод статическим (устаревший, используйте CA1822 вместо этого) | ✔ | ✔ | |
| MA0039 | Безопасность | Не пишите свой собственный метод проверки сертификата | ✔ | ||
| MA0040 | Использование | Переместить параметр отмены на методы, которые принимают один | ✔ | ✔ | |
| MA0041 | Дизайн | Сделайте свойство статичным (устаревше, используйте CA1822 вместо этого) | ✔ | ✔ | |
| MA0042 | Дизайн | Не используйте блокирующие вызовы в асинхронном методе | ✔ | ✔ | |
| MA0043 | Использование | Используйте name of operator в ArgementException | ✔ | ✔ | |
| MA0044 | Производительность | Удалить бесполезный вызов ToString | ✔ | ✔ | |
| MA0045 | Дизайн | Не используйте блокирующие вызовы в методе синхронизации (необходимо создать асинхро | ✔ | ||
| MA0046 | Дизайн | Используйте EventHandler <t> для объявления событий | ✔ | ||
| MA0047 | Дизайн | Объявить типы в пространствах имен | ✔ | ||
| MA0048 | Дизайн | Имя файла должно соответствовать имени типа | ✔ | ||
| MA0049 | Дизайн | Имя типа не должно соответствовать содержанию пространства имен | ✔ | ||
| MA0050 | Дизайн | Правильно подтвердить аргументы в методах итератора | ✔ | ✔ | |
| MA0051 | Дизайн | Метод слишком длинный | ✔ | ||
| MA0052 | Производительность | Заменить постоянный enum.tostring на имя | ✔ | ✔ | |
| MA0053 | Дизайн | Сделать класс запечатанным | ✔ | ✔ | |
| MA0054 | Дизайн | Внедрить пойманное исключение как Innerexception | ✔ | ||
| MA0055 | Дизайн | Не используйте финализатор | ✔ | ||
| MA0056 | Дизайн | Не звоните переопределяемым членам в конструкторе | ✔ | ||
| MA0057 | Именование | Имя класса должно закончиться «атрибутом» | ✔ | ||
| MA0058 | Именование | Имя класса должно закончиться «исключением» | ✔ | ||
| MA0059 | Именование | Имя класса должно закончиться «EventArgs» | ✔ | ||
| MA0060 | Дизайн | Значение, возвращаемое Stream.read/stream.readasync, не используется | ✔ | ||
| MA0061 | Дизайн | Переопределения метода не должны менять значения по умолчанию | ✔ | ✔ | |
| MA0062 | Дизайн | Не флаги перечисления не должны быть помечены "flagsattribute" | ✔ | ||
| MA0063 | Производительность | Используйте, где перед заказом | ✔ | ||
| MA0064 | Дизайн | Избегайте блокировки общедоступного экземпляра | ✔ | ||
| MA0065 | Производительность | По умолчанию valueType.equals или хэшкод используется для равенства структуры | ✔ | ||
| MA0066 | Производительность | Хэш -таблица недружелюбного типа используется в хэш -таблице | ✔ | ||
| MA0067 | Дизайн | Используйте Guid.empty | ✔ | ✔ | |
| MA0068 | Дизайн | Неверное имя параметра для нулевого атрибута | ✔ | ||
| MA0069 | Дизайн | Неоконтрольные статические поля не должны быть видны | ✔ | ||
| MA0070 | Дизайн | Устаревшие атрибуты должны включать объяснения | ✔ | ||
| MA0071 | Стиль | Избегайте использования избыточного другого | ✔ | ✔ | |
| MA0072 | Дизайн | Не бросай из наконец -то блок | ✔ | ||
| MA0073 | Стиль | Избегайте сравнения с постоянной Bool | ✔ | ✔ | |
| MA0074 | Использование | Избегайте неявных чувствительных к культуре методов | ✔ | ✔ | |
| MA0075 | Дизайн | Не используйте неявное чувствительное к культуре ToString | ✔ | ||
| MA0076 | Дизайн | Не используйте неявное чувствительное к культуре ToString в интерполированных строках | ✔ | ||
| MA0077 | Дизайн | Класс, который обеспечивает равные (t), должен реализовать iequatable <t> | ✔ | ✔ | |
| MA0078 | Производительность | Используйте «актер» вместо «Select», чтобы разыграть | ✔ | ✔ | |
| MA0079 | Использование | Отправить отмену с использованием .withcancellation () | ✔ | ✔ | |
| MA0080 | Использование | Используйте токен отмены с помощью .withcancellation () | |||
| MA0081 | Дизайн | Переопределение метода не должно пропускать ключевое слово Params | ✔ | ✔ | |
| MA0082 | Дизайн | NAN не следует использовать в сравнении | ✔ | ||
| MA0083 | Дизайн | Параметры конструктораргумента должны существовать в конструкторах | ✔ | ||
| MA0084 | Дизайн | Локальные переменные не должны скрывать другие символы | ✔ | ||
| MA0085 | Использование | Анонимные делегаты не должны использоваться для отмены подписки на события | ✔ | ||
| MA0086 | Дизайн | Не бросайте из финализатора | ✔ | ||
| MA0087 | Дизайн | Параметры с атрибутами [DefaultParametervalue] также должны быть помечены [необязательно] | ✔ | ||
| MA0088 | Дизайн | Используйте [DefaultParametervalue] вместо [DefaultValue] | ✔ | ||
| MA0089 | Производительность | Оптимизировать использование метода строк | ✔ | ✔ | |
| MA0090 | Дизайн | Удалить пустое другое/наконец -то блок | ✔ | ||
| MA0091 | Использование | Отправитель должен быть «этим», например, событиями | ✔ | ✔ | |
| MA0092 | Использование | Отправитель должен быть «нулевым» для статических событий | ✔ | ||
| MA0093 | Использование | События не должны быть нулевыми | ✔ | ✔ | |
| MA0094 | Дизайн | Класс, который обеспечивает сравнение (t), должен реализовать Icomparable <t> | ✔ | ||
| MA0095 | Дизайн | Класс, который реализует iequatable <t>, должен переопределить равные (объект) | ✔ | ||
| MA0096 | Дизайн | Класс, который реализует Icomparable <t>, также должен реализовать iequatable <t> | ✔ | ||
| MA0097 | Дизайн | Класс, который реализует Icomplable <t> или Icomplable, должен переопределить операторы сравнения | ✔ | ||
| MA0098 | Производительность | Используйте Indexer вместо методов LINQ | ✔ | ✔ | |
| MA0099 | Использование | Используйте явное значение перечисления вместо 0 | ✔ | ||
| MA0100 | Использование | Ждать задания перед избавлением ресурсов | ✔ | ||
| MA0101 | Использование | Строка содержит неявный символ конца линии | ? | ✔ | ✔ |
| MA0102 | Дизайн | Сделайте участник Readonly | ✔ | ✔ | |
| MA0103 | Использование | Используйте последовательность, а не оператор равенства | ✔ | ✔ | |
| MA0104 | Дизайн | Не создавайте тип с именем из BCL | |||
| MA0105 | Производительность | Используйте параметры Lambda вместо использования закрытия | ✔ | ||
| MA0106 | Производительность | Избегайте закрытия, используя перегрузку с параметром «FactoryArgument» | ✔ | ||
| MA0107 | Дизайн | Не используйте чувствительный к культуре объект. | |||
| MA0108 | Использование | Удалить избыточное значение аргумента | ✔ | ✔ | |
| MA0109 | Дизайн | Подумайте о добавлении перегрузки со SPAN <T> или памятью <T> | |||
| MA0110 | Производительность | Используйте генератор источника коррекса | ✔ | ✔ | |
| MA0111 | Производительность | Используйте string.create вместо formattablesting | ✔ | ✔ | |
| MA0112 | Производительность | Используйте 'count> 0' вместо 'any ()' | |||
| MA0113 | Дизайн | Используйте DateTime.UnixePoch | ✔ | ✔ | |
| MA0114 | Дизайн | Используйте DateTimeOffset.UNIXEPOCH | ✔ | ✔ | |
| MA0115 | Использование | Неизвестный параметр компонента | ✔ | ||
| MA0116 | Дизайн | Параметры с атрибутами [SupplyParameterFromQuery] также должны быть помечены как [параметр] | ✔ | ✔ | |
| MA0117 | Дизайн | Параметры с [EditorRequired] атрибутами также должны быть помечены как [параметр] | ✔ | ✔ | |
| MA0118 | Дизайн | [JSinvokable] Методы должны быть публичными | ✔ | ||
| MA0119 | Дизайн | Jsruntime нельзя использовать в натурализованных или температурных | ✔ | ||
| MA0120 | Производительность | Используйте Invokevoidasync, когда возвращаемое значение не используется | ✔ | ✔ | |
| MA0121 | Дизайн | Не перезаписать значение параметра | |||
| MA0122 | Дизайн | Параметры с атрибутами [SupplyParameterFromQuery] действительны только в маршрутируемых компонентах (@Page) | ✔ | ||
| MA0123 | Дизайн | Номер последовательности должен быть постоянным | ✔ | ||
| MA0124 | Дизайн | Тип параметра журнала недопустим | ✔ | ||
| MA0125 | Дизайн | Список типов параметров журнала содержит неверный тип | ✔ | ||
| MA0126 | Дизайн | Список типов параметров журнала содержит дубликат | ✔ | ||
| MA0127 | Использование | Используйте string.equals вместо IS -шаблона | |||
| MA0128 | Использование | Использовать оператор IS, а не последовательно, | ✔ | ✔ | |
| MA0129 | Использование | Ждать задачи в использовании оператора | ✔ | ||
| MA0130 | Использование | GetType () не следует использовать в экземплярах System.Type. | ✔ | ||
| MA0131 | Использование | ArgementNullexception.ThrowifNull не следует использовать с не нулевами типами | ✔ | ||
| MA0132 | Дизайн | Не конвертируйте неявно в DateTimeOffset | ✔ | ||
| MA0133 | Дизайн | Используйте DateTimeOffset, а не полагаться на неявное преобразование | ✔ | ||
| MA0134 | Использование | Наблюдайте за результатом асинхронных вызовов | ✔ | ||
| MA0135 | Дизайн | Параметр журнала не имеет настроенного типа | |||
| MA0136 | Использование | Сырая строка содержит неявный символ конца линии | ? | ✔ | |
| MA0137 | Дизайн | Используйте суффикс «Async», когда метод возвращает ожидаемый тип | |||
| MA0138 | Дизайн | Не используйте суффикс «асинхрон», когда метод не возвращает ожидаемый тип | |||
| MA0139 | Дизайн | Тип параметра журнала недопустим | ✔ | ||
| MA0140 | Дизайн | Оба, если и нет, филиал имеют идентичный код | ✔ | ||
| MA0141 | Использование | Используйте соответствие шаблонов вместо операторов неравенства для нулевой проверки | ✔ | ||
| MA0142 | Использование | Используйте соответствие шаблонов вместо операторов равенства для нулевой проверки | ✔ | ||
| MA0143 | Дизайн | Первичные параметры конструктора должны быть чтения | ✔ | ||
| MA0144 | Производительность | Используйте System.operatingSystem для проверки текущей ОС | ✔ | ||
| MA0145 | Использование | Метод подписи для [UncaCccessorAttribute] не действителен | ✔ | ||
| MA0146 | Использование | Имя должно быть явно установлено на локальных функциях | ✔ | ||
| MA0147 | Использование | Избегайте Async void метод для делегата | ✔ | ||
| MA0148 | Использование | Используйте соответствие шаблонов вместо операторов равенства для дискретного значения | ✔ | ||
| MA0149 | Использование | Используйте соответствие шаблонов вместо операторов неравенства для дискретной стоимости | ✔ | ||
| MA0150 | Дизайн | Не звоните в объект по умолчанию. | ✔ | ||
| MA0151 | Использование | DebuggerDisplay должен содержать действующих участников | ✔ | ||
| MA0152 | Производительность | Используйте развернут вместо использования, ожидая дважды | ✔ | ||
| MA0153 | Дизайн | Не регистрируйте символы, украшенные DataClassalizationattribute напрямую | ✔ | ||
| MA0154 | Дизайн | Используйте Langword в комментарии XML | ✔ | ✔ | |
| MA0155 | Дизайн | Не используйте Async void методы | |||
| MA0156 | Дизайн | Используйте суффикс «асинхрон», когда метод возвращает iasyncenumerable <t> | |||
| MA0157 | Дизайн | Не используйте суффикс Async, когда метод не возвращает iasyncenumerable <t> | |||
| MA0158 | Производительность | Используйте System.Threading.Lock | ✔ | ||
| MA0159 | Производительность | Используйте «заказ» вместо «orderby» | ✔ | ✔ | |
| MA0160 | Производительность | Использовать содержит, вместо trygetValue | ✔ | ||
| MA0161 | Использование | Useshellexecute должен быть явно установлен | |||
| MA0162 | Использование | Используйте процесс. | |||
| MA0163 | Использование | Useshellexecute должен быть ложным при перенаправлении стандартного входа или вывода | ✔ | ||
| MA0164 | Стиль | Используйте скобки, чтобы сделать не более четким рисунком | ✔ | ✔ | |
| MA0165 | Использование | Сделайте интерполированную строку | ? | ✔ | ✔ |
| Идентификатор | Подавленное правило | Оправдание |
|---|---|---|
MAS0001 | CA1822 | Подавить CA1822 на методах, украшенных атрибутами BenchmarkDotnet. |
MAS0002 | CA1822 | Подавить CA1822 на методах, украшенных атрибутом System.Text.JSON, такими как [jsonPropertyName] или [jsoninclude]. |
MAS0003 | IDE0058 | Подавить IDE0058 на известных типах |