diff --git a/Readme.md b/Readme.md index 6b3aa26..17a6432 100644 --- a/Readme.md +++ b/Readme.md @@ -1,45 +1,70 @@ -# EditorConfig - -## Какие проблемы / use cases - -- Генерация документации к editorconfig (под документации из ms learn) -- Сравнение двух editorconfig -- Получение списка изменений, которые editorconfig привнесёт в солюшен -- Анализатор конфига - поиск отсутствующих, поиск не существующих значений/не валидные ключи или значения - -## Задачи - -- Автоматизировать генерацию документации к код-стайлу по editorconfig - - Реализовать парсер editorconfig - - Реализовать парсер документации из ms learn - - Реализовать генератор файла документации -- Автоматизировать сравнение двух editorconfig файлов - - Реализовать парсер editorconfig - - Реализовать сравнение результата парсинга - - Реализовать output в читаемом формате о diff'е между конфигурациями -- Реализовать возможность получить preview изменений от применений editorconfig'а - - Найти способ с использованием Roslyn API получать превью изменений от применений правил - - Интегрировать получение превью с Solution и editorconfig - - Реализовать user friendly способ отображения собранных изменений -- Реализовать анализатор editorconfig файла - - Найти способ получать список всех доступных правил, их значений - - Реализовать алгоритм обхода editorconfig файла и проверки значений в нём - -### Сценарии использования - -- Работа с editorconfig файлом, который лежит: - - Локально - - На репозитории удалённо -- Работа с солюшеном, который лежит: - - Локально - - На репозитории удалённо -- Поддерживаемые форматы вывода данных: - - Markdown - -### Мысли на будущее - -- Реализовать типизацию для правил на случай, если нужно будет реализовать модификацию editorconfig в коде - -## Вопросы - -- Как поставлять решение? Поставленные задачи не являются частью активной разработки и смысла делать расширения для IDE нет. Из вариантов: консольное приложение или минимальный десктоп UI. \ No newline at end of file +# Configuin + +Configuin - это утилита для работы с .editorconfig'ом. + +## Возможности + +- Генерация документации к editorconfig (по документации из MS learn) +- [in progress] Сравнение двух editorconfig +- [in progress] Анализатор .editorconfig'а +- [in progress] Форматирование editorconfig'а +- [in progress] Предпросмотр изменений от editorconfig'а + +### Генерация документации к editorconfig + +Configuin парсит описание Roslyn, которые есть на сайте MS Learn, парсит .editorconfig файл предоставленный пользователем и генерирует документ с подробным описанием строк. Например, .editorconfig файл может содержать: +```ini +dotnet_diagnostic.IDE0040.severity = warning +dotnet_style_require_accessibility_modifiers = always:warning +``` + +При генерации кодстайла, для этих строк будет находиться описание и генерироваться такой output: + +```md +## Add accessibility modifiers (IDE0040) + +Severity: Warning + +This style rule concerns requiring accessibility modifiers in declarations. + +### dotnet_style_require_accessibility_modifiers = always + +\```csharp +// dotnet_style_require_accessibility_modifiers = always +// dotnet_style_require_accessibility_modifiers = for_non_interface_members +class MyClass +{ + private const string thisFieldIsConst = "constant"; +} + +// dotnet_style_require_accessibility_modifiers = never +class MyClass +{ + const string thisFieldIsConst = "constant"; +} +\``` +``` + +### [in progress] Сравнение двух editorconfig + +Configuin сравнивает два .editorconfig файла и генерирует diff между ними. + +### [in progress] Анализатор .editorconfig'а + +Configuin анализирует editorconfig файл и: +- Находит несуществующие правила +- Находит не корректные значения +- Генерирует список существующих правил, которые не указаны в .editorconfig + +### [in progress] Форматирование editorconfig'а + +### [in progress] Предпросмотр изменений от editorconfig'а + +Configuin генерирует список изменений, который будут получены, если к проекту применить .editorconfig. + +Алгоритм: +- Запускается `dotnet format` для проекта и сохраняется список сообщений +- Подменяется .editorconfig на то, который указал пользователь +- Запускается `dotnet format` и сохраняется второй результат +- Генерируется diff между результатами +- Откатывается изменение .editorconfig'а