Files
Deal/docs/spec/Код-стайл-аудит-2026-09-11.md
T
Rustam Khalimov 9e07568ddd Инициализировать репозиторий «Дейл»
Первый коммит: модульный монолит ядра (.NET 10) и gRPC-сервисы
ai/ml/telegram, фронтенд Vue 3/Vite/Tailwind, документация (ТЗ,
инструкция пользователя, техдокументация, код-стайл), бэклог,
скрипты развёртывания и архив прототипа LeadRadar.
2026-09-11 02:50:17 +03:00

4.4 KiB
Raw Blame History

Аудит кода на соответствие код-стайлу «Дейл» (2026-09-11)

Отчёт прохода по всему C#-коду (src/**/*.cs, 928 файлов, без bin/obj). Правила — docs/spec/Код-стайл-Дейл.md. Проверка: сборка 4 решений + все тесты.

1. Исправлено (применено и проверено)

Пункт Правило Было Стало Инструмент
Блочный <summary> §5 5286 однострочных/инлайн (833 файла) 0 scripts/fix_summary_blocks.py --apply
XML-док на private/internal §5 2028 блоков (359 файлов) 0 (понижены до //) scripts/fix_private_docs.py --apply
Квалификация this. §4 124 0 разовый Roslyn-инструмент (семантический)
Приватные instance-поля §1 camelCase (logger) _camelCase (_logger) разовый Roslyn-инструмент
Приватные static readonly/const §1 Pascal (DefaultTimeout) разовый Roslyn-инструмент

Дополнительно в .editorconfig включены машинные правила, теперь ломающие сборку при нарушении (TreatWarningsAsErrors=true, EnforceCodeStyleInBuild=true):

  • dotnet_style_qualification_for_{field,property,method,event} = false:warning — запрет this.;
  • правила именования IDE1006: приватные instance-поля _camelCase, const/static readonly — Pascal.

Также проверено и не требует правок: #region нет; trailing whitespace нет; все файлы заканчиваются переводом строки; кодировка UTF-8; настоящих public-полей нет (публичные члены — свойства); явные модификаторы доступа соблюдены.

Проверка после правок

  • dotnet buildDeal.sln, Deal.Telegram.sln, Deal.Ai.sln, Deal.Ml.sln: 0 ошибок / 0 предупреждений.
  • Тесты: core 1275/1275, telegram 125/125, ai 52/52, ml 38/38 — все пройдены.
  • Повторный прогон renamer: this. — 0, полей к переименованию — 0 (идемпотентно).

2. Осталось — требует решения владельца

  1. var — 1529 употреблений. Правило §4: не использовать для встроенных типов и при неочевидном типе. В .editorconfig csharp_style_var_* = false:silent. Замена требует семантики (вывод типа). Рекомендация: включить анализатор (:warning) + dotnet format с проверкой.

  2. Явная реализация интерфейсов (§11). Субъективное «где возможно» — массовая правка может сломать DI/прямые вызовы и тесты. Рекомендация: точечный ревью по 61 интерфейсу, без автоматизации.

  3. Дедупликация <summary> в реализациях через /// <inheritdoc/> (§11). Надёжно детектируется только по семантической модели (сопоставление интерфейс↔класс). В коде уже 674 <inheritdoc/>. Рекомендация: Roslyn-анализатор, если нужно добить остаток.

  4. Переводы строк. .editorconfig требует end_of_line = crlf, фактически: 231 файл CRLF / 697 LF (смешанно). Правка объёмная. Рекомендация: решить — нормализовать под CRLF или зафиксировать LF.

3. Примечание

Пункты 2.1, 2.3 можно закрыть анализаторами Roslyn в Directory.Build.props — это даст автоматическую проверку на новом коде. Пункт 2.4 — разовое решение по политике переводов строк.