Giter VIP home page Giter VIP logo

Comments (5)

cushon avatar cushon commented on August 26, 2024

Original comment posted by [email protected] on 2012-11-02 at 12:39 AM


Something like this should work as a starting point:

/* Match string literals that are not valid syntax for regular expressions. */
Matcher<ExpressionTree> BAD_REGEX_LITERAL = new Matcher<ExpressionTree>() {
  public boolean matches(ExpressionTree tree, VisitorState state) {
    Object value = ((JCExpression) tree).type.constValue();
    return value instanceof String && !isValidSyntax((String) value);
  }

  private boolean isValidSyntax(String regex) {
    try {
      Pattern.compile(regex);
      return true;
    } catch (PatternSyntaxException e) {
      return false;
    }
  }
};

/* Match invocations to String.split() and Pattern.compile() with bad string literals. */
Matcher<MethodInvocationTree> BAD_REGEX_USAGE =
  allOf(
    anyOf(
      methodSelect(isDescendantOfMethod("java.lang.String", "split(java.lang.String)")),
      methodSelect(isDescendantOfMethod("java.lang.String", "split(java.lang.String,int)")),
      methodSelect(staticMethod("java.util.regex.Pattern", "compile"))),
    argument(0, BAD_REGEX_LITERAL));

Untested, but based on similar matchers I'm using for checking valid HTML syntax. I can polish and get it working if this is desirable for error-prone.

from error-prone.

cushon avatar cushon commented on August 26, 2024

Original comment posted by [email protected] on 2012-11-02 at 02:31 AM


Okay, I've put together http://code.google.com/r/mdempsky-error-prone/source/detail?r=8ab6a57c1df477eb9b9ee582d1790f2629ae18aa&name=regexMatcher to add this as a matcher.

git pull https://code.google.com/r/mdempsky-error-prone regexMatcher

Status:
Labels: -Type-NewCheck, -Priority-Medium

from error-prone.

cushon avatar cushon commented on August 26, 2024

Original comment posted by [email protected] on 2012-11-02 at 02:38 AM


Oops, didn't mean to change the labels.

Also, amended the commit to fix a nit: http://code.google.com/r/mdempsky-error-prone/source/detail?r=dedc3aed523a78852f6226096750e40c37100055

I suppose I should commit these to branches in the error-prone repo instead though?


Status: Started
Owner: [email protected]
Labels: Type-NewCheck, Priority-Medium

from error-prone.

cushon avatar cushon commented on August 26, 2024

Original comment posted by [email protected] on 2012-11-02 at 10:45 PM


Now that I have error-prone commit access, I've pushed my change to the mdempsky/regexMatcher branch in error-prone: 2ecef62

PTAL


CC: [email protected]

from error-prone.

cushon avatar cushon commented on August 26, 2024

Original comment posted by [email protected] on 2012-11-07 at 11:23 PM


I've merged my InvalidPatternSyntax matcher into master.


Status: Fixed

from error-prone.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.