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