Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Все параметры запроса инициализированы #536

Open
2 of 10 tasks
theshadowco opened this issue Oct 23, 2019 · 9 comments · May be fixed by #1882
Open
2 of 10 tasks

Все параметры запроса инициализированы #536

theshadowco opened this issue Oct 23, 2019 · 9 comments · May be fixed by #1882
Assignees
Labels
component/diagnostics Доработка / создание диагностики type/discuss

Comments

@theshadowco
Copy link
Member

Описание проблемы, ошибки, которую надо диагностировать

Например: Разработчики допускают ошибки, делая ....

Разработчики иногда забывают инициализировать параметры запроса, ошибка в итоге ловится уже в рантайме

Ссылка на источник, подтверждающее нарушение либо обоснование наличия проблемы

Например: В соответствии со статьей на ИТС ... надо делать ....

нет

Параметры диагностики

Тип (установите x у подходящего варианта)

  • Ошибка
  • Уязвимость
  • Качество кода
  • Другое

Важность (установите x у подходящего варианта)

  • Блокирующая / Blocker
  • Критическая / Critical
  • Важная / Major
  • Незначительная / Minor
  • Информационная / Info
  • Другое

Время на исправление (минут)

Например: 1 минута

5 минут

Дополнительная информация

Можно добавить любую информацию, которая может быть полезной при реализации

Хотелось бы учесть следующее

  • установка параметра запроса в условии, т.е. если условие не выполнится, то параметр не будет установлен
  • установка параметра запроса в цикле, т.е. часть параметров установили сразу, часть в цикле
@theshadowco theshadowco added type/discuss component/diagnostics Доработка / создание диагностики labels Oct 23, 2019
@otymko
Copy link
Member

otymko commented Oct 23, 2019

Парсера запросов не хватает

@akabrr
Copy link
Contributor

akabrr commented Mar 6, 2020

Параметры можно искать по символу &. Проблемы могут быть с текстом запроса собираемым кодом.

@artbear
Copy link
Contributor

artbear commented Jan 15, 2021

Сюда же можно добавить случай

  • в тексте запроса нет использования параметра, а кодом 1С он все равно устанавливается
    • 1С ошибку не выдает, конечно
    • но и такое использование неверно и может путать разработчиков

или сделать как отдельную диагностику?

artbear added a commit to artbear/bsl-language-server that referenced this issue Oct 16, 2021
@artbear
Copy link
Contributor

artbear commented Oct 16, 2021

@theshadowco назначай на меня, правило практически реализовано.

@nixel2007
Copy link
Member

nixel2007 commented Oct 16, 2021

@artbear 1) я не думаю, что эту диагностику стоит делать без cfg. текущая реализация страшноватая.
2) перестань, пожалуйста, использовать TestUtils.getDocumentContext(sample). Если ты хочешь срабатывания по тестам, то лучше уж клади запросы в разные файлы, чем вот так. Причем это уже два раза обсуждали.

@artbear
Copy link
Contributor

artbear commented Oct 16, 2021

@nixel2007 1 cfg здесь особо не поможет.
текущая реализация вполне себе адекватно ищет срабатывания и не является нагрузочной.

2 по TestUtils.getDocumentContext(sample) странная позиция.
почему в других диагностиках принимается\разрешается использовать? по той же cfg, например, использование сделано.

напомню, что TestUtils.getDocumentContext(sample) очень удобно юзать именно для разработки и отладки в качестве мелких и простых юнит-кейсов.
и я в общем тест-файле эти диагностики также помещаю, а не только в юнит-тестах их оставляю.

например, для лечения ФП\ФН очень полезно использовать именно этот вариант.

как мейнтейнер подумай о разработчиках правил, пожалуйста!
насколько проще разрабатывать\дорабатывать в рамках юнит-тестов вместо общей кучи всех тест-кейсов в одном тесте.

@artbear
Copy link
Contributor

artbear commented Oct 16, 2021

Причем я не против общего тест-файла, понимаю его плюсы и важность для дымового тестирования и тестирования других диагностик.
И я обязательно использую этот файл, помещая туда все тест-кейсы.

Но зачем мешать разработке, добиваясь исключения небольших простых юнит-кейсов, я не понимаю.
попробуй сделать сложные правила, например, как сделал Андрей, как делаю я,
и сам увидишь, что очень тяжело дорабатывать код правила, если появляются новые\пропущенные тест-кейсы в общем тест-файле.
отладка становится очень и очень грустной.

@nixel2007
Copy link
Member

почему в других диагностиках принимается\разрешается использовать? по той же cfg, например, использование сделано.

потому что пропустил.

напомню, что TestUtils.getDocumentContext(sample) очень удобно юзать именно для разработки и отладки в качестве мелких и простых юнит-кейсов.
и я в общем тест-файле эти диагностики также помещаю, а не только в юнит-тестах их оставляю.

я не прошу помещать тест-кейсы в общий файл (хотя и не понимаю, почему это вызывает проблемы). Тест-кейсы могут быть и в других файлах.

И я обязательно использую этот файл, помещая туда все тест-кейсы.

тем самым ты вносишь дублирование тест-кода. что уже не есть хорошо.

в целом - есть определенный дизайн при разработке тестов диагностик. обдуманный, зафиксированный в документации, по которому сделано большинство диагностик. я думаю о разработчиках тестов, именно по этому метод получения документ-контекста по строке был добавлен для использования вне тестов диагностик еще в 2019 году.

До перехода на jdk17 в тестах и появления текст-блоков это все еще и выглядит страшно.

причем это обсуждение возникает уже третий раз за год-полтора, и насколько я помню, от кого-либо из @1c-syntax/bsl-ls не было поддержки предложения по такому подходу к тестам. поправьте меня, если это не так.

@theshadowco
Copy link
Member Author

Я против фикстур в самом тесте - увеличение рзамера тестового класса (читай усложение ревью).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component/diagnostics Доработка / создание диагностики type/discuss
Projects
None yet
5 participants