Skip to content

Commit

Permalink
Update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
FrediKats committed Sep 2, 2023
1 parent 7527f7a commit eab3206
Showing 1 changed file with 70 additions and 45 deletions.
115 changes: 70 additions & 45 deletions Readme.md
Original file line number Diff line number Diff line change
@@ -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.
# 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'а

0 comments on commit eab3206

Please sign in to comment.