Package org.sonar.java.checks.regex
Class AbstractRegexCheckTrackingMatchType
java.lang.Object
org.sonar.java.ast.visitors.SubscriptionVisitor
org.sonar.plugins.java.api.IssuableSubscriptionVisitor
org.sonar.java.checks.regex.AbstractRegexCheck
org.sonar.java.checks.regex.AbstractRegexCheckTrackingMatchers
org.sonar.java.checks.regex.AbstractRegexCheckTrackingMatchType
- All Implemented Interfaces:
RegexCheck,JavaCheck,JavaFileScanner
- Direct Known Subclasses:
RedosCheck,RegexLookaheadCheck,ReluctantQuantifierWithEmptyContinuationCheck
public abstract class AbstractRegexCheckTrackingMatchType
extends AbstractRegexCheckTrackingMatchers
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classNested classes/interfaces inherited from interface org.sonar.java.regex.RegexCheck
RegexCheck.RegexIssueLocation -
Field Summary
Fields inherited from class org.sonar.java.checks.regex.AbstractRegexCheck
JAVA_LANG_STRING, LANG3_REGEX_UTILS, METHODS_IMPLYING_DOT_ALL_FLAG, REGEX_METHODS, REGEX_ON_THE_SECOND_ARGUMENT_METHODSFields inherited from class org.sonar.java.ast.visitors.SubscriptionVisitor
context -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcheckRegex(org.sonarsource.analyzer.commons.regex.RegexParseResult regexForLiterals, ExpressionTree methodInvocationOrAnnotation, List<MethodInvocationTree> trackedMethodsCalled, boolean didEscape)protected abstract voidcheckRegex(org.sonarsource.analyzer.commons.regex.RegexParseResult regex, ExpressionTree methodInvocationOrAnnotation, AbstractRegexCheckTrackingMatchType.MatchType matchType)protected MethodMatchersThe methods for which we want to know whether they're invoked on the given regex.Methods inherited from class org.sonar.java.checks.regex.AbstractRegexCheckTrackingMatchers
checkRegex, leaveNode, nodesToVisit, onMethodInvocationFound, visitNodeMethods inherited from class org.sonar.java.checks.regex.AbstractRegexCheck
filterAnnotation, getFinalVariableInitializer, getFlagsTree, getLiterals, getMethodInvocationMatchers, getRegexLiteralExpression, methodOrAnnotationName, onAnnotationFound, regexForLiterals, reportIssue, reportIssue, setContextMethods inherited from class org.sonar.plugins.java.api.IssuableSubscriptionVisitor
addIssue, addIssueOnFile, reportIssue, reportIssue, reportIssue, scanTreeMethods inherited from class org.sonar.java.ast.visitors.SubscriptionVisitor
leaveFile, scanFile, visitToken, visitTrivia
-
Constructor Details
-
AbstractRegexCheckTrackingMatchType
public AbstractRegexCheckTrackingMatchType()
-
-
Method Details
-
checkRegex
protected abstract void checkRegex(org.sonarsource.analyzer.commons.regex.RegexParseResult regex, ExpressionTree methodInvocationOrAnnotation, AbstractRegexCheckTrackingMatchType.MatchType matchType) -
trackedMethodMatchers
Description copied from class:AbstractRegexCheckTrackingMatchersThe methods for which we want to know whether they're invoked on the given regex. These should either be methods of the Pattern or Matcher class or part of REGEX_METHODS.- Specified by:
trackedMethodMatchersin classAbstractRegexCheckTrackingMatchers
-
checkRegex
protected void checkRegex(org.sonarsource.analyzer.commons.regex.RegexParseResult regexForLiterals, ExpressionTree methodInvocationOrAnnotation, List<MethodInvocationTree> trackedMethodsCalled, boolean didEscape)- Specified by:
checkRegexin classAbstractRegexCheckTrackingMatchers- Parameters:
regexForLiterals- The regex to be checkedmethodInvocationOrAnnotation- The method invocation or annotation that the regex string is passed totrackedMethodsCalled- The list of method invocations performed on the Pattern or Matcher object associated with the regex (only taking into account methods returned by trackedMethodMatchers)didEscape- Whether or not the regex escaped the method in which it was created (via return, being assigned to a non-local variable or being passed to a different method). If true, trackedMethodsCalled may not be exhaustive.
-