public static LanguageVersion findLanguageVersionByTerseName(String terseNameAndVersion) { String version; String terseName; if (terseNameAndVersion.contains(" ")) { version = StringUtils.trimToNull(terseNameAndVersion.substring(terseNameAndVersion.lastIndexOf(' ') + 1)); terseName = terseNameAndVersion.substring(0, terseNameAndVersion.lastIndexOf(' ')); } else { version = null; terseName = terseNameAndVersion; } Language language = findLanguageByTerseName(terseName); if (language != null) { if (version == null) { return language.getDefaultVersion(); } else { return language.getVersion(version); } } return null; }
private LanguageVersion getLanguageVersion() { String javaName = "Java"; if (jdk14MenuItem.isSelected()) { return LanguageRegistry.getLanguage(javaName).getVersion("1.4"); } else if (jdk13MenuItem.isSelected()) { return LanguageRegistry.getLanguage(javaName).getVersion("1.3"); } else if (jdk15MenuItem.isSelected()) { return LanguageRegistry.getLanguage(javaName).getVersion("1.5"); } else if (jdk16MenuItem.isSelected()) { return LanguageRegistry.getLanguage(javaName).getVersion("1.6"); } else if (jdk17MenuItem.isSelected()) { return LanguageRegistry.getLanguage(javaName).getVersion("1.7"); } else if (plsqlMenuItem.isSelected()) { return LanguageRegistry.getLanguage("PLSQL").getDefaultVersion(); } return LanguageRegistry.getLanguage(javaName).getVersion("1.5"); }
private JavaTokenFilter createTokenFilter(final SourceCode sourceCode) { final StringBuilder stringBuilder = sourceCode.getCodeBuffer(); // Note that Java version is irrelevant for tokenizing final LanguageVersionHandler languageVersionHandler = LanguageRegistry.getLanguage(JavaLanguageModule.NAME) .getVersion("1.4").getLanguageVersionHandler(); final TokenManager tokenMgr = languageVersionHandler.getParser(languageVersionHandler.getDefaultParserOptions()) .getTokenManager(sourceCode.getFileName(), new StringReader(stringBuilder.toString())); return new JavaTokenFilter(tokenMgr, ignoreAnnotations); }
private void loadLanguageMinMaxVersions(Rule rule) { if (minimumVersion != null) { LanguageVersion minimumLanguageVersion = rule.getLanguage().getVersion(minimumVersion); if (minimumLanguageVersion == null) { throwUnknownLanguageVersionException("minimum", minimumVersion); } else { rule.setMinimumLanguageVersion(minimumLanguageVersion); } } if (maximumVersion != null) { LanguageVersion maximumLanguageVersion = rule.getLanguage().getVersion(maximumVersion); if (maximumLanguageVersion == null) { throwUnknownLanguageVersionException("maximum", maximumVersion); } else { rule.setMaximumLanguageVersion(maximumLanguageVersion); } } checkLanguageVersionsAreOrdered(rule); }
@Override public Object visit(ASTPrimaryPrefix node, Object data) { if (node.jjtGetNumChildren() == 0 || !(node.jjtGetChild(0) instanceof ASTName)) { return super.visit(node, data); } String image = ((ASTName) node.jjtGetChild(0)).getImage(); if (image.startsWith("java.lang.")) { image = image.substring(10); } boolean checkBoolean = ((RuleContext) data).getLanguageVersion() .compareTo(LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("1.5")) >= 0; if (PREFIX_SET.contains(image) || checkBoolean && "Boolean.valueOf".equals(image)) { ASTPrimaryExpression parent = (ASTPrimaryExpression) node.jjtGetParent(); if (parent.jjtGetNumChildren() >= 3) { Node n = parent.jjtGetChild(2); if (n instanceof ASTPrimarySuffix) { ASTPrimarySuffix suffix = (ASTPrimarySuffix) n; image = suffix.getImage(); if (SUFFIX_SET.contains(image) || checkBoolean && "booleanValue".equals(image)) { super.addViolation(data, node); return data; } } } } return super.visit(node, data); }
/** * Checks that the expected {@link LanguageVersion} can be found via * {@link #name} and {@link #version}. */ @Test public void testFindVersionsForLanguageNameAndVersion() { SourceLanguage sourceLanguage = new SourceLanguage(); sourceLanguage.setName(name); sourceLanguage.setVersion(version); Language language = LanguageRegistry.getLanguage(sourceLanguage.getName()); LanguageVersion languageVersion = null; if (language != null) { languageVersion = language.getVersion(sourceLanguage.getVersion()); } assertEquals(expected, languageVersion); }
@Override public Object visit(ASTAllocationExpression node, Object data) { Node type = node.jjtGetChild(0); if (!(type instanceof ASTClassOrInterfaceType)) { return super.visit(node, data); } boolean jdk15 = ((RuleContext) data).getLanguageVersion() .compareTo(LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("1.5")) >= 0; if ((TypeHelper.isA((ASTClassOrInterfaceType) type, BigInteger.class) || jdk15 && TypeHelper.isA((ASTClassOrInterfaceType) type, BigDecimal.class)) && !node.hasDescendantOfType(ASTArrayDimsAndInits.class)) { ASTArguments args = node.getFirstChildOfType(ASTArguments.class); if (args.getArgumentCount() == 1) { ASTLiteral literal = node.getFirstDescendantOfType(ASTLiteral.class); if (literal == null || literal.jjtGetParent().jjtGetParent().jjtGetParent().jjtGetParent().jjtGetParent() != args) { return super.visit(node, data); } String img = literal.getImage(); if (literal.isStringLiteral()) { img = img.substring(1, img.length() - 1); } if ("0".equals(img) || "1".equals(img) || jdk15 && "10".equals(img)) { addViolation(data, node); return data; } } } return super.visit(node, data); }
LanguageVersion languageVersion = language.getVersion(targetjdk); if (languageVersion == null) { languageVersion = language.getDefaultVersion();
public static LanguageVersion findLanguageVersionByTerseName(String terseNameAndVersion) { String version; String terseName; if (terseNameAndVersion.contains(" ")) { version = StringUtils.trimToNull(terseNameAndVersion.substring(terseNameAndVersion.lastIndexOf(' ') + 1)); terseName = terseNameAndVersion.substring(0, terseNameAndVersion.lastIndexOf(' ')); } else { version = null; terseName = terseNameAndVersion; } Language language = findLanguageByTerseName(terseName); if (language != null) { if (version == null) { return language.getDefaultVersion(); } else { return language.getVersion(version); } } return null; }
private LanguageVersion getLanguageVersion() { String javaName = "Java"; if (jdk14MenuItem.isSelected()) { return LanguageRegistry.getLanguage(javaName).getVersion("1.4"); } else if (jdk13MenuItem.isSelected()) { return LanguageRegistry.getLanguage(javaName).getVersion("1.3"); } else if (jdk15MenuItem.isSelected()) { return LanguageRegistry.getLanguage(javaName).getVersion("1.5"); } else if (jdk16MenuItem.isSelected()) { return LanguageRegistry.getLanguage(javaName).getVersion("1.6"); } else if (jdk17MenuItem.isSelected()) { return LanguageRegistry.getLanguage(javaName).getVersion("1.7"); } else if (plsqlMenuItem.isSelected()) { return LanguageRegistry.getLanguage("PLSQL").getDefaultVersion(); } return LanguageRegistry.getLanguage(javaName).getVersion("1.5"); }
private void loadLanguageMinMaxVersions(Rule rule) { if (minimumVersion != null) { LanguageVersion minimumLanguageVersion = rule.getLanguage().getVersion(minimumVersion); if (minimumLanguageVersion == null) { throwUnknownLanguageVersionException("minimum", minimumVersion); } else { rule.setMinimumLanguageVersion(minimumLanguageVersion); } } if (maximumVersion != null) { LanguageVersion maximumLanguageVersion = rule.getLanguage().getVersion(maximumVersion); if (maximumLanguageVersion == null) { throwUnknownLanguageVersionException("maximum", maximumVersion); } else { rule.setMaximumLanguageVersion(maximumLanguageVersion); } } checkLanguageVersionsAreOrdered(rule); }
private JavaTokenFilter createTokenFilter(final SourceCode sourceCode) { final StringBuilder stringBuilder = sourceCode.getCodeBuffer(); // Note that Java version is irrelevant for tokenizing final LanguageVersionHandler languageVersionHandler = LanguageRegistry.getLanguage(JavaLanguageModule.NAME) .getVersion("1.4").getLanguageVersionHandler(); final TokenManager tokenMgr = languageVersionHandler.getParser(languageVersionHandler.getDefaultParserOptions()) .getTokenManager(sourceCode.getFileName(), new StringReader(stringBuilder.toString())); return new JavaTokenFilter(tokenMgr, ignoreAnnotations); }
@Override public Object visit(ASTPrimaryPrefix node, Object data) { if (node.jjtGetNumChildren() == 0 || !(node.jjtGetChild(0) instanceof ASTName)) { return super.visit(node, data); } String image = ((ASTName) node.jjtGetChild(0)).getImage(); if (image.startsWith("java.lang.")) { image = image.substring(10); } boolean checkBoolean = ((RuleContext) data).getLanguageVersion() .compareTo(LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("1.5")) >= 0; if (PREFIX_SET.contains(image) || checkBoolean && "Boolean.valueOf".equals(image)) { ASTPrimaryExpression parent = (ASTPrimaryExpression) node.jjtGetParent(); if (parent.jjtGetNumChildren() >= 3) { Node n = parent.jjtGetChild(2); if (n instanceof ASTPrimarySuffix) { ASTPrimarySuffix suffix = (ASTPrimarySuffix) n; image = suffix.getImage(); if (SUFFIX_SET.contains(image) || checkBoolean && "booleanValue".equals(image)) { super.addViolation(data, node); return data; } } } } return super.visit(node, data); }
/** * Checks that the expected {@link LanguageVersion} can be found via * {@link #name} and {@link #version}. */ @Test public void testFindVersionsForLanguageNameAndVersion() { SourceLanguage sourceLanguage = new SourceLanguage(); sourceLanguage.setName(name); sourceLanguage.setVersion(version); Language language = LanguageRegistry.getLanguage(sourceLanguage.getName()); LanguageVersion languageVersion = null; if (language != null) { languageVersion = language.getVersion(sourceLanguage.getVersion()); } assertEquals(expected, languageVersion); }
LanguageVersion languageVersion = language.getVersion(targetjdk); if (languageVersion == null) { languageVersion = language.getDefaultVersion();
@Override public Object visit(ASTAllocationExpression node, Object data) { Node type = node.jjtGetChild(0); if (!(type instanceof ASTClassOrInterfaceType)) { return super.visit(node, data); } boolean jdk15 = ((RuleContext) data).getLanguageVersion() .compareTo(LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("1.5")) >= 0; if ((TypeHelper.isA((ASTClassOrInterfaceType) type, BigInteger.class) || jdk15 && TypeHelper.isA((ASTClassOrInterfaceType) type, BigDecimal.class)) && !node.hasDescendantOfType(ASTArrayDimsAndInits.class)) { ASTArguments args = node.getFirstChildOfType(ASTArguments.class); if (args.getArgumentCount() == 1) { ASTLiteral literal = node.getFirstDescendantOfType(ASTLiteral.class); if (literal == null || literal.jjtGetParent().jjtGetParent().jjtGetParent().jjtGetParent().jjtGetParent() != args) { return super.visit(node, data); } String img = literal.getImage(); if (literal.isStringLiteral()) { img = img.substring(1, img.length() - 1); } if ("0".equals(img) || "1".equals(img) || jdk15 && "10".equals(img)) { addViolation(data, node); return data; } } } return super.visit(node, data); }