-
Notifications
You must be signed in to change notification settings - Fork 106
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
Все параметры запроса инициализированы #1882
base: develop
Are you sure you want to change the base?
Conversation
@nixel2007 Предлагаю следующее:
почему так предлагаю:
устроит такой вариант? |
|
||
} | ||
|
||
return super.visitFile(file); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@artbear нет смысла спускаться ниже. Просто return file;
@Override | ||
public ParseTree visitFile(BSLParser.FileContext file) { | ||
|
||
final var queriesWithParams = documentContext.getQueries().stream() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@artbear если это вынести в отдельный класс, который будет описывать экземпляр Запрос
, то диагностика сразу станет легче.
.map(ParameterContext.class::cast) | ||
// .map(ctx -> Pair.of(ctx, "\"" + ctx.name.getText() + "\"")) | ||
// если есть несколько одинаковых параметров в запросе | ||
.collect(Collectors.toMap(ctx -> "\"" + ctx.name.getText() + "\"", ctx -> ctx, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@artbear String.format
private Collection<CodeBlockContext> getCodeBlocks() { | ||
final var ast = documentContext.getAst(); | ||
var blocks = getSubBlocks(ast); | ||
final var fileCodeBlock = Optional.ofNullable(ast.fileCodeBlock()).map(BSLParser.FileCodeBlockContext::codeBlock); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@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 = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@artbear зачем разделение на 2 операции?
.map(BSLParser.AcceptorContext::accessProperty) | ||
.map(BSLParser.AccessPropertyContext::IDENTIFIER) | ||
.map(ParseTree::getText) | ||
.filter(s -> QUERY_TEXT_PATTERN.matcher(s).matches()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@artbear s
плохое имя для переменной
private static Optional<ParameterContext> findAppropriateParamFromSetParameter(BSLParser.CallStatementContext callStatementContext, | ||
String queryVarName, | ||
Map<String, ParameterContext> params) { | ||
final var callCtx = Optional.of(callStatementContext); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@artbear Ctx
может не стоит использовать сокращение?
} | ||
|
||
) | ||
public class MissingQueryParameterDiagnostic extends AbstractVisitorDiagnostic { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@artbear на текущий момент диагностика будет сильно фонить. Причины:
- Нет извлечения текста запроса из результата выполнения локальной функции
- Нет очистки (замены) значения экземпляра запроса при новом объявлении
- Не обработан метод
ЗаполнитьЗначенияСвойств(...)
- Не обработан метод
СтрЗаменить(..)
- Инициализация и установка параметрах могут быть в разных "ветках" кода
- Не обработано заполнение параметров в другой функции, хотя бы в локальной
|
||
private static Optional<ParameterContext> findAppropriateParamFromSetParameterMethod(Optional<BSLParser.CallStatementContext> callCtx, | ||
Map<String, ParameterContext> params) { | ||
return callCtx.map(BSLParser.CallStatementContext::accessCall) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@artbear длинный стрим затрудняет чтение и осознание алгоритма
Описание
Связанные задачи
Closes #536
Чеклист
Общие
gradlew precommit
)Для диагностик
Дополнительно