Class AbstractMagicValueDiagnostic

All Implemented Interfaces:
BSLDiagnostic, BSLParserVisitor<ParseTree>, ParseTreeVisitor<ParseTree>
Direct Known Subclasses:
MagicDateDiagnostic, MagicNumberDiagnostic

public abstract class AbstractMagicValueDiagnostic extends AbstractVisitorDiagnostic
Абстрактный базовый класс для диагностик магических значений (чисел и дат). Содержит общую логику проверки использования значений в структурах и соответствиях.
  • Constructor Details

    • AbstractMagicValueDiagnostic

      public AbstractMagicValueDiagnostic()
  • Method Details

    • getExpression

      protected static Optional<BSLParser.ExpressionContext> getExpression(ParserRuleContext ctx)
      Получить ExpressionContext из узла AST. Работает для разных типов узлов (NumericContext, ConstValueContext и т.д.).
      Parameters:
      ctx - узел AST
      Returns:
      Optional с ExpressionContext, если найден
    • getExpression

      protected static Optional<BSLParser.ExpressionContext> getExpression(BSLParser.ConstValueContext constValue)
      Получить ExpressionContext из Optional узла. Используется для ConstValueContext.
      Parameters:
      constValue - ConstValueContext
      Returns:
      Optional с ExpressionContext, если найден
    • insideStructureOrCorrespondence

      protected boolean insideStructureOrCorrespondence(BSLParser.ExpressionContext expression)
      Проверяет, находится ли выражение внутри структуры или соответствия. Это включает проверку: - Второго параметра метода Вставить структуры или соответствия - Параметров конструктора структуры (после первого строкового параметра) - Прямого присваивания свойству структуры - Второго параметра метода Вставить соответствия - Первого параметра метода Вставить соответствия (ключ соответствия)
      Parameters:
      expression - выражение для проверки
      Returns:
      true, если выражение находится внутри структуры или соответствия
    • insideSimpleAssignment

      protected static boolean insideSimpleAssignment(BSLParser.ExpressionContext expression)
      Проверяет, находится ли выражение в простом присваивании.
      Parameters:
      expression - выражение для проверки
      Returns:
      true, если выражение находится в простом присваивании
    • insideReturnStatement

      protected static boolean insideReturnStatement(BSLParser.ExpressionContext expression)
      Проверяет, находится ли выражение в return statement.
      Parameters:
      expression - выражение для проверки
      Returns:
      true, если выражение находится в return statement
    • insideContext

      protected static boolean insideContext(BSLParser.ExpressionContext expression, Class<? extends ParserRuleContext> contextClass)
      Универсальный метод для проверки контекста.
      Parameters:
      expression - выражение для проверки
      contextClass - класс контекста для проверки
      Returns:
      true, если выражение находится в указанном контексте