Все параметры запроса инициализированы#1882
Draft
artbear wants to merge 9 commits into1c-syntax:developfrom
Draft
Все параметры запроса инициализированы#1882artbear wants to merge 9 commits into1c-syntax:developfrom
artbear wants to merge 9 commits into1c-syntax:developfrom
Conversation
Contributor
Author
|
@nixel2007 Предлагаю следующее:
почему так предлагаю:
устроит такой вариант? |
otymko
reviewed
Oct 24, 2021
|
|
||
| } | ||
|
|
||
| return super.visitFile(file); |
Member
There was a problem hiding this comment.
@artbear нет смысла спускаться ниже. Просто return file;
| @Override | ||
| public ParseTree visitFile(BSLParser.FileContext file) { | ||
|
|
||
| final var queriesWithParams = documentContext.getQueries().stream() |
Member
There was a problem hiding this comment.
@artbear если это вынести в отдельный класс, который будет описывать экземпляр Запрос, то диагностика сразу станет легче.
| .map(ParameterContext.class::cast) | ||
| // .map(ctx -> Pair.of(ctx, "\"" + ctx.name.getText() + "\"")) | ||
| // если есть несколько одинаковых параметров в запросе | ||
| .collect(Collectors.toMap(ctx -> "\"" + ctx.name.getText() + "\"", ctx -> ctx, |
| private Collection<CodeBlockContext> getCodeBlocks() { | ||
| final var ast = documentContext.getAst(); | ||
| var blocks = getSubBlocks(ast); | ||
| final var fileCodeBlock = Optional.ofNullable(ast.fileCodeBlock()).map(BSLParser.FileCodeBlockContext::codeBlock); |
Member
There was a problem hiding this comment.
@artbear зачем разделение на 2 операции? Почему сразу не написать:
Optional.ofNullable(ast.fileCodeBlock())
.map(BSLParser.FileCodeBlockContext::codeBlock)
.ifPresent(blocks::add);| var blocks = getSubBlocks(ast); | ||
| final var fileCodeBlock = Optional.ofNullable(ast.fileCodeBlock()).map(BSLParser.FileCodeBlockContext::codeBlock); | ||
| fileCodeBlock.ifPresent(blocks::add); | ||
| final var fileCodeBlockBeforeSub = |
| .map(BSLParser.AcceptorContext::accessProperty) | ||
| .map(BSLParser.AccessPropertyContext::IDENTIFIER) | ||
| .map(ParseTree::getText) | ||
| .filter(s -> QUERY_TEXT_PATTERN.matcher(s).matches()) |
| private static Optional<ParameterContext> findAppropriateParamFromSetParameter(BSLParser.CallStatementContext callStatementContext, | ||
| String queryVarName, | ||
| Map<String, ParameterContext> params) { | ||
| final var callCtx = Optional.of(callStatementContext); |
Member
There was a problem hiding this comment.
@artbear Ctx может не стоит использовать сокращение?
| } | ||
|
|
||
| ) | ||
| public class MissingQueryParameterDiagnostic extends AbstractVisitorDiagnostic { |
Member
There was a problem hiding this comment.
@artbear на текущий момент диагностика будет сильно фонить. Причины:
- Нет извлечения текста запроса из результата выполнения локальной функции
- Нет очистки (замены) значения экземпляра запроса при новом объявлении
- Не обработан метод
ЗаполнитьЗначенияСвойств(...) - Не обработан метод
СтрЗаменить(..) - Инициализация и установка параметрах могут быть в разных "ветках" кода
- Не обработано заполнение параметров в другой функции, хотя бы в локальной
|
|
||
| private static Optional<ParameterContext> findAppropriateParamFromSetParameterMethod(Optional<BSLParser.CallStatementContext> callCtx, | ||
| Map<String, ParameterContext> params) { | ||
| return callCtx.map(BSLParser.CallStatementContext::accessCall) |
Member
There was a problem hiding this comment.
@artbear длинный стрим затрудняет чтение и осознание алгоритма
...om/github/_1c_syntax/bsl/languageserver/diagnostics/MissingQueryParameterDiagnosticTest.java
Show resolved
Hide resolved
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Описание
Связанные задачи
Closes #536
Чеклист
Общие
gradlew precommit)Для диагностик
Дополнительно