tom-englert/Nullable.Extended

tom-englert

Roslyn-анализатор и инструменты для C#: находят необоснованные null-forgiving операторы и требуют комментарий-обоснование.

Nullable.Extended — набор Roslyn-инструментов для C#-разработчиков, которые используют nullable reference types и хотят контролировать применение оператора подавления null. Анализатор предупреждает о каждом необоснованном использовании «!» и требует комментарий-обоснование.

Ключевые возможности

  • Roslyn-анализатор предупреждает о каждом необоснованном использовании null-forgiving оператора в IDE и при сборке.
  • Требует комментарий-обоснование вида «// ! текст» над оператором, чтобы объяснить необходимость подавления.
  • Visual Studio Extension показывает все использования оператора «!» в решении и находит те, что больше не нужны.
  • MCP-сервер Nullable.Extended.Mcp позволяет AI-ассистентам находить необоснованные операторы в больших решениях без сборки.
  • Скилл для AI-ассистентов учит сначала исправлять код, а комментарий-обоснование использовать как крайнюю меру.
  • Работает с любыми IDE и на CI, доступен как NuGet-пакет Nullable.Extended.Analyzer.

Для каких задач подходит

  • Контроль качества кода при использовании nullable reference types в C#-проектах.
  • Поиск и удаление устаревших null-forgiving операторов в существующем решении.
  • Автоматическая проверка обоснованности подавления null на этапе CI.
  • Помощь AI-ассистентам в анализе и исправлении необоснованных операторов «!» в крупных кодовых базах.
  • Обучение команды документированию причин использования оператора подавления null.

Подробнее

Nullable.Extended решает проблему, знакомую всем, кто работает с nullable reference types в C#: оператор «!» легко пропустить при чтении кода, а со временем забывается, зачем он был добавлен. Инструмент заставляет явно указывать причину подавления через комментарий-обоснование, что делает код понятнее и снижает риск случайного подавления важных предупреждений. Анализатор встраивается в процесс сборки и IDE, а расширение для Visual Studio помогает провести ревизию всех использований оператора в решении.

Отдельно стоит отметить MCP-сервер, который позволяет AI-ассистентам (например, GitHub Copilot или Claude) анализировать большие решения без полной сборки. Это удобно, когда нужно быстро найти необоснованные операторы в проекте, где сборка занимает много времени. Сервер работает как отдельный инструмент и требует .NET 10 или новее. Важно: анализатор не заменяет стандартные проверки nullable, а дополняет их, фокусируясь именно на осознанности использования оператора «!».

При внедрении стоит учесть, что комментарии-обоснования становятся частью кода, поэтому команде нужно договориться о формате и поддерживать их в актуальном состоянии. Инструмент распространяется под лицензией MIT и доступен как NuGet-пакет, что упрощает интеграцию в существующие проекты.

Частые вопросы

Как установить Nullable.Extended?

Основная команда установки из README:

dotnet tool install -g Nullable.Extended.Mcp

Какие задачи решает Nullable.Extended?

Инструмент помогает контролировать использование null-forgiving оператора в C#: находит необоснованные вхождения, требует комментарий-обоснование и позволяет AI-ассистентам анализировать большие решения. Он снижает риск забытых или ненужных подавлений null и повышает читаемость кода.

Какие версии .NET поддерживаются?

Для работы MCP-сервера требуется .NET 10 или более поздняя версия. Сам анализатор и расширение для Visual Studio ориентированы на проекты с nullable reference types (C# 8.0 и выше).

Можно ли использовать анализатор в коммерческих проектах?

Да, проект распространяется под лицензией MIT, которая разрешает коммерческое использование, модификацию и распространение при сохранении уведомления об авторских правах.

Чем этот инструмент отличается от встроенных проверок nullable в C#?

Встроенные проверки предупреждают о возможных null, но не контролируют осознанность применения оператора «!». Nullable.Extended фокусируется именно на null-forgiving операторе: требует обоснования и помогает найти устаревшие подавления.

О репозитории

Язык

Лицензия

Звёзды

60

Форки

3

Открытые issues

0

Контрибьюторы

0

Создан

27.12.2020

Обновлён

25.10.2026

Теги