Skip to content

Commit

Permalink
Documentation for format command
Browse files Browse the repository at this point in the history
  • Loading branch information
FrediKats committed May 17, 2024
1 parent e8b8d36 commit b6f2712
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 59 deletions.
123 changes: 66 additions & 57 deletions Readme.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
# Configuin

Configuin - это утилита для работы с .editorconfig'ом.
Configuin is a tool for working with .NET .editorconfig.

## Возможности
## Available commands

- Генерация шаблона .editorconfig
- Генерация документации к editorconfig
- Предпросмотр изменений от editorconfig
- [in progress] Анализатор .editorconfig
- [in progress] Сравнение двух editorconfig'ов
- [in progress] Форматирование editorconfig
- Generate .NET .editorconfig template
- Generate documentation for .NET .editorconfig
- Preview changes after applying `dotnet format` with new .editorconfig
- Format .NET .editorconfig file
- [in progress] .editorconfig analyzer
- [in progress] Compare two .editorconfig

### Генерация шаблона .editorconfig
### Generate .NET .editorconfig template

Configuin парсит все описанные в документации правила и генерирует .editorconfig, где они все описаны, чтобы упростить процесс заполенения .editorconfig'а. Например, команда
Configuin parses all rules described in the documentation and generates a .editorconfig where they are all described to simplify the process of filling out the .editorconfig. For example, the command

```
Kysect.Configuin.Console.exe template ".editorconfig" -d "C:\Coding\dotnet-docs"
```

сгенерирует файл с таким содержанием:
will generate a file with the following content:

```ini
## Simplify name (IDE0001)
Expand All @@ -38,23 +38,24 @@ Kysect.Configuin.Console.exe template ".editorconfig" -d "C:\Coding\dotnet-docs"
# ...
```

Полный файл можно посмотреть [тут](Docs/.editorconfig).
The full file can be viewed [here](Docs/.editorconfig).

### Генерация документации к .editorconfig
### Generate documentation for .NET .editorconfig

Configuin парсит описание Roslyn, которые есть на сайте MS Learn, парсит .editorconfig файл предоставленный пользователем и генерирует документ с подробным описанием строк. Пример вызова:
Configuin parses the Roslyn description, which is available on the MS Learn website, parses the .editorconfig file provided by the user, and generates a document with a detailed description of the lines. Example of use:

```bash
Kysect.Configuin.Console.exe generate-styledoc "C:\Project\.editorconfig" -o "output.md" -d "C:\Coding\dotnet-docs"
```
Kysect.Configuin.Console.exe generate-codestyle-doc "C:\Project\.editorconfig" -o "output.md" -d "C:\Coding\dotnet-docs"
```

Например, .editorconfig файл может содержать:
For example, the .editorconfig file may contain:

```ini
dotnet_diagnostic.IDE0040.severity = warning
dotnet_style_require_accessibility_modifiers = always:warning
```

При генерации кодстайла, для этих строк будет находиться описание и генерироваться такой output:
When generating the code style, a description will be found for these lines and such an output will be generated:

```md
## Add accessibility modifiers (IDE0040)
Expand All @@ -81,43 +82,30 @@ class MyClass
\```
```

### Предпросмотр изменений от editorconfig
### Preview changes after applying `dotnet format` with new .editorconfig

```
```bash
Kysect.Configuin.Console.exe preview -s "C:\Project\" -t "C:\Project\.editorconfig" -e "C:\.editorconfig"
```
Configuin генерирует список изменений, который будут получены, если к проекту применить .editorconfig.
Configuin generates a list of changes that will be received if the .editorconfig is applied to the project.
Algorithm:
- `dotnet format` is launched for the project and the list of messages is saved
- .editorconfig is replaced with the one specified by the user
- `dotnet format` is launched and the second result is saved
- A diff is generated between the results
- .editorconfig change is rolled back
Алгоритм:
- Запускается `dotnet format` для проекта и сохраняется список сообщений
- Подменяется .editorconfig на то, который указал пользователь
- Запускается `dotnet format` и сохраняется второй результат
- Генерируется diff между результатами
- Откатывается изменение .editorconfig'а
Example of use:
Пример использования:
1. Take a project with .editorconfig
2. Copy .editorconfig and modify it, for example, include CA1032
3. Run Configuin, specify the path to the solution and the modified .editorconfig
1. Берётся проект с .editorconfig'ом
2. Копируется .editorconfig и модифицируется, например, включается CA1032
3. Запускается Configuin, указывается путь к солюшену и изменённому .editorconfig
4. Генерируется результат:
Generated result:
```log
[18:24:58 INF] Generate dotnet format warnings for C:\Coding\Kysect.CommonLib\Sources\Kysect.CommonLib.sln will save to output-8b107f73-6763-4c1f-b643-4e8eabac9d91.json
[18:24:58 INF] Generate warnings for C:\Coding\Kysect.CommonLib\Sources\Kysect.CommonLib.sln and write result to output-8b107f73-6763-4c1f-b643-4e8eabac9d91.json
[18:24:58 VRB] Execute cmd command cmd.exe /C dotnet format "C:\Coding\Kysect.CommonLib\Sources\Kysect.CommonLib.sln" --verify-no-changes --report "output-8b107f73-6763-4c1f-b643-4e8eabac9d91.json"
[18:25:08 INF] Remove temp file output-8b107f73-6763-4c1f-b643-4e8eabac9d91.json
[18:25:08 INF] Move C:\Users\fredi\Desktop\.editorconfig to C:\Coding\Kysect.CommonLib\Sources\.editorconfig
[18:25:08 INF] Target path already exists. Save target file to temp path C:\Coding\Kysect.CommonLib\Sources\.congifuing\.editorconfig
[18:25:08 INF] Move C:\Coding\Kysect.CommonLib\Sources\.editorconfig to C:\Coding\Kysect.CommonLib\Sources\.congifuing\.editorconfig
[18:25:08 INF] Copy C:\Users\fredi\Desktop\.editorconfig to C:\Coding\Kysect.CommonLib\Sources\.editorconfig
[18:25:08 INF] Generate dotnet format warnings for C:\Coding\Kysect.CommonLib\Sources\Kysect.CommonLib.sln will save to output-4d210962-92ec-44c8-b367-35840f6403d9.json
[18:25:08 INF] Generate warnings for C:\Coding\Kysect.CommonLib\Sources\Kysect.CommonLib.sln and write result to output-4d210962-92ec-44c8-b367-35840f6403d9.json
[18:25:08 VRB] Execute cmd command cmd.exe /C dotnet format "C:\Coding\Kysect.CommonLib\Sources\Kysect.CommonLib.sln" --verify-no-changes --report "output-4d210962-92ec-44c8-b367-35840f6403d9.json"
[18:25:16 ERR] Cmd execution finished with exit code 2.
[18:25:16 INF] Remove temp file output-4d210962-92ec-44c8-b367-35840f6403d9.json
[18:25:16 INF] Undo file move. Move backup file from C:\Coding\Kysect.CommonLib\Sources\.congifuing\.editorconfig to C:\Coding\Kysect.CommonLib\Sources\.editorconfig
[18:25:16 INF] Comparing dotnet format report
[18:25:16 INF] Same: 0, added: 2, removed: 0
[18:25:16 INF] New warnings count: 2
Expand All @@ -127,19 +115,40 @@ Configuin генерирует список изменений, который
[18:25:16 INF] error CA1032: Add the following constructor to ReflectionException: public ReflectionException(string message)
```
### [in progress] Анализатор .editorconfig
### Format .NET .editorconfig file
```bash
Kysect.Configuin.Console.exe format ".editorconfig" -d "C:\Coding\dotnet-docs"
```
Kysect.Configuin.Console.exe analyze "C:\Project\.editorconfig" -d "C:\Coding\dotnet-docs"
```

Configuin анализирует editorconfig файл и:
- Находит несуществующие правила
- Находит не корректные значения
- Генерирует список существующих правил, которые не указаны в .editorconfig
### [in progress] Сравнение двух editorconfig
Configuin formats the .editorconfig file according to the rules described in the documentation. Generated result will be same as [template](Docs/.editorconfig):
Configuin сравнивает два .editorconfig файла и генерирует diff между ними.
```ini
# Autogenerated values
[*.cs]
### IDE ###
dotnet_diagnostic.IDE0001.severity = warning
dotnet_diagnostic.IDE0002.severity = warning
# IDE0003 and IDE0009
dotnet_diagnostic.IDE0003.severity = warning
dotnet_diagnostic.IDE0009.severity = warning
dotnet_style_qualification_for_field = false:warning
dotnet_style_qualification_for_property = false:warning
dotnet_style_qualification_for_method = false:warning
dotnet_style_qualification_for_event = false:warning
...
### CA ###
dotnet_diagnostic.CA1000.severity = none
dotnet_diagnostic.CA1001.severity = warning
dotnet_diagnostic.CA1002.severity = warning
```
### [in progress] Форматирование editorconfig'а
Some features:
- Same rules are grouped
- Options saved near the rule
- Not parsed rules don't change
- Comments are saved and moved with the rule
3 changes: 1 addition & 2 deletions Sources/Kysect.Configuin.Console/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@ public static void Main(string[] args)

app.Configure(config =>
{
// TODO: rename to styledoc
config.AddCommand<GenerateCodeStyleDocCommand>("generate-codestyle-doc");
config.AddCommand<GenerateCodeStyleDocCommand>("generate-styledoc");
config.AddCommand<EditorConfigApplyPreviewCommand>("preview");
config.AddCommand<AnalyzeEditorConfigCommand>("analyze");
config.AddCommand<GenerateEditorConfigTemplateTemplate>("template");
Expand Down

0 comments on commit b6f2712

Please sign in to comment.