Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
| Свойство | Значение |
|---|---|
| Идентификатор правила | CA1506 |
| Заголовок | Избегайте чрезмерной взаимозависимости классов |
| Категория | Ремонтопригодность |
| Исправление является критическим или не критическим | Срочное |
| Пороговое значение по умолчанию | Типы: 95 других символов: 40 |
| Включен по умолчанию в .NET 10 | Нет |
| Применимые языки | C# и Visual Basic |
Причина
Тип, метод, поле, свойство или событие связаны с множеством других типов. Типы, созданные компилятором, исключаются из этой метрики.
Описание правила
Это правило измеряет связь классов, подсчитывая количество уникальных ссылок на тип, метод, поле, свойство или событие. Пороговая связь по умолчанию составляет 95 для типов и 40 для других типов символов, а пороговые значения можно настроить.
Типы, методы и другие символы с высокой степенью связывания классов могут быть трудно поддерживать. Рекомендуется иметь типы, методы и другие символы, которые демонстрируют низкую связь и высокую сплоченность.
Устранение нарушений
Чтобы устранить это нарушение, попытайтесь изменить тип или метод, чтобы уменьшить число типов, с которыми он взаимозависим.
Когда лучше отключить предупреждения
Это предупреждение можно отключить, если тип или метод считается обслуживаемым, несмотря на его большое количество зависимостей от других типов.
Примечание.
В этом правиле могут отображаться предупреждения о ложноположительных срабатываниях, если применяются все указанные ниже действия.
- Вы используете Visual Studio 2022 версии 17.5 или более поздней версии с более старой версией пакета SDK для .NET, то есть .NET 6 или более ранней версии.
- Вы используете анализаторы из пакета SDK для .NET 6 или более старой версии пакетов анализатора, например Microsoft.CodeAnalysis.FxCopAnalyzers.
Ложные срабатывания обусловлены критическим изменением компилятора C#. Рассмотрите возможность использования более нового анализатора, содержащего исправление для предупреждений о ложных срабатываниях. Обновление до Microsoft.CodeAnalysis.NetAnalyzers версии 7.0.0-preview1.22464.1 или более поздней версии или использование анализаторов из пакета SDK для .NET 7.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA1506
// The code that's violating the rule is on this line.
#pragma warning restore CA1506
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA1506.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.
Настройка порогового значения
Вы можете настроить пороговое значение, при достижении которого это правило срабатывает, а также указать типы символов для анализа. Допустимые типы символов:
AssemblyNamespaceTypeMethodFieldEventProperty
Создайте текстовый файл с именем CodeMetricsConfig.txt.
Добавьте требуемое пороговое значение в текстовый файл в следующем формате:
CA1506(Method): 60 CA1506(Type): 120В этом примере правило настроено для запуска, если метод имеет более 60 ссылок на уникальные типы или тип имеет более 120 ссылок на уникальные типы. В этом файле конфигурации правило будет продолжать отмечать поля, свойства и события, связанные с классом которых больше порогового значения по умолчанию (40).
В файле проекта пометьте действие сборки файла конфигурации как AdditionalFiles. Например:
<ItemGroup> <AdditionalFiles Include="CodeMetricsConfig.txt" /> </ItemGroup>