feat: Расширена валидация входных параметров бенчмарка#24
Conversation
WalkthroughUpdates centralize and strengthen benchmark parameter validation in the descriptor and launcher, relax count checks in the annotation extractor, and expand tests. Error messages now include actual/expected counts and method names. New tests cover mismatched counts, zero-parameter cases, and single-parameter vs multi-parameter scenarios. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant E as ИзвлекательАннотаций
participant D as ДескрипторБенчмарка
participant R as ЗапускательБенчмарков
participant M as МетодБенчмарка
Note over E,D: Чтение аннотаций параметров (ослаблена проверка количества)
E->>D: ДобавитьПараметры(из аннотаций)
D-->>E: OK (без проверки паритета количества)
R->>D: ДобавитьПараметры(входные параметры)
alt Нет объявленных параметров у метода
D-->>R: Исключение: метод не имеет параметров
else Неверное количество
D-->>R: Исключение: передано N, ожидается K, метод <имя>
else Одиночное значение при нескольких параметрах
D-->>R: Исключение: одиночный параметр при множественных
else Валидные параметры
D-->>R: OK
R->>M: Вызов с параметрами
M-->>R: Результат
end
Note over R: Сообщения об ошибках содержат N, K, имя метода
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
|
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (5)
src/BenchmarkOneScript/core/Классы/ДескрипторБенчмарка.os (1)
51-57: НаборыПараметров: вернуть глубже-иммутабельное представлениеСейчас возвращается неглубокая копия — внутренние массивы можно изменить снаружи. Предлагаю обернуть и вложенные массивы во ФиксированныйМассив.
Пример правки:
Функция НаборыПараметров() Экспорт - Возврат Новый Массив(Новый ФиксированныйМассив(_НаборыПараметров)); + ЛокальныеНаборы = Новый Массив(); + Для Каждого Набор Из _НаборыПараметров Цикл + ЛокальныеНаборы.Добавить(Новый Массив(Новый ФиксированныйМассив(Набор))); + КонецЦикла; + Возврат Новый Массив(Новый ФиксированныйМассив(ЛокальныеНаборы)); КонецФункцииtests/ТестыБенчмарков.os (4)
216-241: Переизбыток параметров — проверка корректна; уменьшить хрупкость проверок текстаСейчас матчится полный текст исключения — это хрупко к мелким правкам сообщений. Рассмотрите проверку по подстрокам (например, содержит имя метода и оба числа).
244-268: Недостаток параметров — аналогичное замечаниеПроверять ключевые части сообщения вместо полного текста.
270-291: Передача параметров для метода без параметров — ок; та же рекомендация по сообщениюЛогика верна, лучше матчить существенные фрагменты.
293-314: Одиночное значение при множественных параметрах — ок; снизить хрупкость проверки текстаСм. рекомендации выше.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (4)
src/BenchmarkOneScript/core/Классы/ДескрипторБенчмарка.os(1 hunks)src/BenchmarkOneScript/core/Классы/ЗапускательБенчмарков.os(1 hunks)src/BenchmarkOneScript/core/Модули/ИзвлекательДескрипторовБенчмарков.os(0 hunks)tests/ТестыБенчмарков.os(6 hunks)
💤 Files with no reviewable changes (1)
- src/BenchmarkOneScript/core/Модули/ИзвлекательДескрипторовБенчмарков.os
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (11)
- GitHub Check: test (dev) / build (macos-latest, dev)
- GitHub Check: test (dev) / build (ubuntu-latest, dev)
- GitHub Check: test (stable) / build (windows-latest, stable)
- GitHub Check: test (dev) / build (windows-latest, dev)
- GitHub Check: sonar / test
- GitHub Check: test (stable) / build (ubuntu-latest, stable)
- GitHub Check: test (stable) / build (macos-latest, stable)
- GitHub Check: test (stable) / build (windows-latest, stable)
- GitHub Check: test (stable) / build (ubuntu-latest, stable)
- GitHub Check: test (stable) / build (macos-latest, stable)
- GitHub Check: sonar / test
🔇 Additional comments (11)
src/BenchmarkOneScript/core/Классы/ЗапускательБенчмарков.os (1)
723-731: Чёткая валидация числа параметров — 👍Перенос сравнения на локальную переменную и расширенное сообщение об ошибке выглядят корректно и согласованы с Дескриптором.
src/BenchmarkOneScript/core/Классы/ДескрипторБенчмарка.os (4)
59-65: Докстринг стал яснееФормулировки по форматам входа и ограничениям читаются лучше.
71-79: Запрет параметров для методов без объявленных параметров — корректноРанний фейл с информативным сообщением уместен.
82-90: Проверка точного совпадения количества — уместноСообщение включает фактическое и ожидаемое значения, а также имя метода.
98-105: Одиночное значение при множественных параметрах — корректная ошибкаЛогика и текст сообщения соответствуют ожиданиям.
tests/ТестыБенчмарков.os (6)
142-146: Группировка тестов в область “Параметры” — удачноНавигацию по набору сценариев заметно упрощает.
145-158: Аннотации параметров: проверка отчёта и дескриптора — окПокрытие ключевых значений и флага ЭтоПараметрМетода достаточное.
161-185: Комбинация параметров метода и поля — окМатрица параметров и ожидания согласованы.
187-213: Установка параметров через Дескриптор — окОба набора параметров корректно отображаются в отчёте.
660-666: Переименование теста на сериализуемость — окИменование унифицировано со стилем “Проверяет…”.
1215-1216: Актуализирован ожидаемый текст ошибки из источника параметров — окТест отражает новое сообщение валидатора количества.

0 New Issues
0 Fixed Issues
0 Accepted Issues
Summary by CodeRabbit
Bug Fixes
Tests