Class CompareWithBooleanDiagnostic
java.lang.Object
com.github._1c_syntax.bsl.languageserver.utils.expressiontree.ExpressionTreeVisitor
com.github._1c_syntax.bsl.languageserver.diagnostics.AbstractExpressionTreeDiagnostic
com.github._1c_syntax.bsl.languageserver.diagnostics.CompareWithBooleanDiagnostic
- All Implemented Interfaces:
BSLDiagnostic
@DiagnosticMetadata(type=CODE_SMELL,
severity=MINOR,
minutesToFix=1,
tags={CLUMSY,SUSPICIOUS})
public class CompareWithBooleanDiagnostic
extends AbstractExpressionTreeDiagnostic
Диагностика, выявляющая избыточное сравнение выражений с булевой константой
Истина/Ложь через операторы = и <>
(например Если Значение = Истина Тогда).
Срабатывает только если тип второго операнда выведен и он однозначно
Булево (не объединение типов), иначе сравнение может быть обоснованным.
-
Nested Class Summary
Nested classes/interfaces inherited from class AbstractExpressionTreeDiagnostic
AbstractExpressionTreeDiagnostic.ExpressionVisitorDecision -
Field Summary
Fields inherited from class AbstractExpressionTreeDiagnostic
diagnosticStorage, documentContext, info -
Constructor Summary
ConstructorsConstructorDescriptionCompareWithBooleanDiagnostic(ExpressionTypeInferencer expressionTypeInferencer, TypeRegistry typeRegistry) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidПроверяет бинарную операцию на избыточное сравнение с булевой константой.Methods inherited from class AbstractExpressionTreeDiagnostic
getDiagnostics, getInfo, onExpressionEnter, setInfoMethods inherited from class ExpressionTreeVisitor
visitAbstractCall, visitTernaryOperator, visitTopLevelExpression, visitUnaryOperationMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface BSLDiagnostic
configure
-
Constructor Details
-
CompareWithBooleanDiagnostic
@ConstructorProperties({"expressionTypeInferencer","typeRegistry"}) public CompareWithBooleanDiagnostic(ExpressionTypeInferencer expressionTypeInferencer, TypeRegistry typeRegistry)
-
-
Method Details
-
visitBinaryOperation
Проверяет бинарную операцию на избыточное сравнение с булевой константой. Диагностика срабатывает, если операция является сравнением (=или<>), один из её операндов — булева константа (Истина/Ложь), а тип второго операнда однозначноБулево.- Overrides:
visitBinaryOperationin classExpressionTreeVisitor- Parameters:
node- узел бинарной операции дерева выражений
-