diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/PackageObjectFactory.java b/src/main/java/com/puppycrawl/tools/checkstyle/PackageObjectFactory.java index 1d861a28e..b74131156 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/PackageObjectFactory.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/PackageObjectFactory.java @@ -129,7 +129,7 @@ class PackageObjectFactory implements ModuleFactory { declaredConstructor.setAccessible(true); return declaredConstructor.newInstance(); } - catch (final ReflectiveOperationException exception) { + catch (final ReflectiveOperationException | NoClassDefFoundError exception) { throw new CheckstyleException("Unable to find class for " + className, exception); } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/VariableDeclarationUsageDistanceCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/VariableDeclarationUsageDistanceCheck.java index 32dffcdf1..1a2ef8ec6 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/VariableDeclarationUsageDistanceCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/VariableDeclarationUsageDistanceCheck.java @@ -155,10 +155,10 @@ import com.puppycrawl.tools.checkstyle.utils.CommonUtils; *

*
  * <module name="VariableDeclarationUsageDistance">
- *     <property name="allowedDistance" value="4">
- *     <property name="ignoreVariablePattern" value="^temp.*">
- *     <property name="validateBetweenScopes" value="true">
- *     <property name="ignoreFinal" value="false">
+ *     <property name="allowedDistance" value="4"/>
+ *     <property name="ignoreVariablePattern" value="^temp.*"/>
+ *     <property name="validateBetweenScopes" value="true"/>
+ *     <property name="ignoreFinal" value="false"/>
  * </module>
  * 
* diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/indentation/CommentsIndentationCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/indentation/CommentsIndentationCheck.java index 70be63819..6d1857bd4 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/indentation/CommentsIndentationCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/indentation/CommentsIndentationCheck.java @@ -42,7 +42,7 @@ import com.puppycrawl.tools.checkstyle.utils.CommonUtils; * *
  * {@code
- * <module name="CommentsIndentation"/module>
+ * <module name="CommentsIndentation"/>
  * }
  * {@code
  * /*
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/NonEmptyAtclauseDescriptionCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/NonEmptyAtclauseDescriptionCheck.java
index 736727141..bde57fb80 100644
--- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/NonEmptyAtclauseDescriptionCheck.java
+++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/NonEmptyAtclauseDescriptionCheck.java
@@ -31,16 +31,6 @@ import com.puppycrawl.tools.checkstyle.utils.JavadocUtils;
  * 
  * <module name="NonEmptyAtclauseDescription"/>
  * 
- *

- * To check non-empty at-clause description for tags {@code @throws}, - * {@code @deprecated}, use following configuration: - *

- *
- * <module name="NonEmptyAtclauseDescription">
- *     <property name="target" value="JAVADOC_TAG_THROWS_LITERAL,
- *     JAVADOC_TAG_DEPRECATED_LITERAL"/>
- * </module>
- * 
* * @author maxvetrenko * diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/NoLineWrapCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/NoLineWrapCheck.java index 71b7af1f5..9d1b60bd9 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/NoLineWrapCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/NoLineWrapCheck.java @@ -53,7 +53,7 @@ import com.puppycrawl.tools.checkstyle.api.TokenTypes; *

*
  * <module name="NoLineWrap">
- *     <property name="tokens" value="IMPORT">
+ *     <property name="tokens" value="IMPORT"/>
  * </module>
  * 
* diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/AllChecksPresentOnAvailableChecksPageTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/AllChecksPresentOnAvailableChecksPageTest.java deleted file mode 100644 index 9b2d3affc..000000000 --- a/src/test/java/com/puppycrawl/tools/checkstyle/AllChecksPresentOnAvailableChecksPageTest.java +++ /dev/null @@ -1,83 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// checkstyle: Checks Java source code for adherence to a set of rules. -// Copyright (C) 2001-2015 the original author or authors. -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -//////////////////////////////////////////////////////////////////////////////// - -package com.puppycrawl.tools.checkstyle; - -import static java.nio.charset.StandardCharsets.UTF_8; - -import java.io.File; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; -import java.util.Locale; - -import org.junit.Assert; -import org.junit.Test; - -import com.google.common.io.Files; - -public class AllChecksPresentOnAvailableChecksPageTest { - private static final File JAVA_SOURCES_DIRECTORY = new File("src/main/java"); - private static final String AVAILABLE_CHECKS_PATH = "src/xdocs/checks.xml"; - private static final File AVAILABLE_CHECKS_FILE = new File(AVAILABLE_CHECKS_PATH); - private static final String CHECK_FILE_NAME = ".+Check.java$"; - private static final String CHECK_SUFFIX = "Check.java"; - private static final String LINK_TEMPLATE = - "(?s).*%1$s.*"; - - private static final List IGNORE_LIST = Arrays.asList( - "AbstractAccessControlNameCheck.java", - "AbstractClassCouplingCheck.java", - "AbstractComplexityCheck.java", - "AbstractFileSetCheck.java", - "AbstractFormatCheck.java", - "AbstractHeaderCheck.java", - "AbstractIllegalCheck.java", - "AbstractIllegalMethodCheck.java", - "AbstractJavadocCheck.java", - "AbstractNameCheck.java", - "AbstractNestedDepthCheck.java", - "AbstractOptionCheck.java", - "AbstractParenPadCheck.java", - "AbstractSuperCheck.java", - "AbstractTypeAwareCheck.java", - "AbstractTypeParameterNameCheck.java", - "FileSetCheck.java" - ); - - @Test - public void testAllChecksPresentOnAvailableChecksPage() throws IOException { - final String availableChecks = Files.toString(AVAILABLE_CHECKS_FILE, UTF_8); - for (File file : Files.fileTreeTraverser().preOrderTraversal(JAVA_SOURCES_DIRECTORY)) { - final String fileName = file.getName(); - if (fileName.matches(CHECK_FILE_NAME) && !IGNORE_LIST.contains(fileName)) { - final String checkName = fileName.replace(CHECK_SUFFIX, ""); - if (!isPresent(availableChecks, checkName)) { - Assert.fail(checkName + " is not correctly listed on Available Checks page" - + " - add it to " + AVAILABLE_CHECKS_PATH); - } - } - } - } - - private static boolean isPresent(String availableChecks, String checkName) { - final String linkPattern = String.format(Locale.ROOT, LINK_TEMPLATE, checkName); - return availableChecks.matches(linkPattern); - } -} diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/XDocsPagesTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/XDocsPagesTest.java new file mode 100644 index 000000000..efab736cd --- /dev/null +++ b/src/test/java/com/puppycrawl/tools/checkstyle/XDocsPagesTest.java @@ -0,0 +1,248 @@ +//////////////////////////////////////////////////////////////////////////////// +// checkstyle: Checks Java source code for adherence to a set of rules. +// Copyright (C) 2001-2015 the original author or authors. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +//////////////////////////////////////////////////////////////////////////////// + +package com.puppycrawl.tools.checkstyle; + +import static java.nio.charset.StandardCharsets.UTF_8; + +import java.io.File; +import java.io.IOException; +import java.io.StringReader; +import java.util.Arrays; +import java.util.List; +import java.util.Locale; +import java.util.Properties; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import org.junit.Assert; +import org.junit.Test; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + +import com.google.common.io.Files; +import com.puppycrawl.tools.checkstyle.api.CheckstyleException; +import com.puppycrawl.tools.checkstyle.api.Configuration; + +public class XDocsPagesTest { + private static final File JAVA_SOURCES_DIRECTORY = new File("src/main/java"); + private static final File XDOCS_DIRECTORY = new File("src/xdocs"); + private static final String AVAILABLE_CHECKS_PATH = "src/xdocs/checks.xml"; + private static final File AVAILABLE_CHECKS_FILE = new File(AVAILABLE_CHECKS_PATH); + private static final String CHECK_FILE_NAME = ".+Check.java$"; + private static final String CHECK_SUFFIX = "Check.java"; + private static final String LINK_TEMPLATE = + "(?s).*%1$s.*"; + + private static final List CHECKS_ON_PAGE_IGNORE_LIST = Arrays.asList( + "AbstractAccessControlNameCheck.java", + "AbstractClassCouplingCheck.java", + "AbstractComplexityCheck.java", + "AbstractFileSetCheck.java", + "AbstractFormatCheck.java", + "AbstractHeaderCheck.java", + "AbstractIllegalCheck.java", + "AbstractIllegalMethodCheck.java", + "AbstractJavadocCheck.java", + "AbstractNameCheck.java", + "AbstractNestedDepthCheck.java", + "AbstractOptionCheck.java", + "AbstractParenPadCheck.java", + "AbstractSuperCheck.java", + "AbstractTypeAwareCheck.java", + "AbstractTypeParameterNameCheck.java", + "FileSetCheck.java" + ); + + private static final List XML_FILESET_LIST = Arrays.asList( + "TreeWalker", + "name=\"Checker\"", + "name=\"Header\"", + "name=\"Translation\"", + "name=\"SeverityMatchFilter\"", + "name=\"SuppressionFilter\"", + "name=\"SuppressionCommentFilter\"", + "name=\"SuppressWithNearbyCommentFilter\"", + "name=\"SuppressWarningsFilter\"", + "name=\"RegexpHeader\"", + "name=\"RegexpMultiline\"", + "name=\"JavadocPackage\"", + "name=\"NewlineAtEndOfFile\"", + "name=\"UniqueProperties\"", + "name=\"FileLength\"", + "name=\"FileTabCharacter\"" + ); + + @Test + public void testAllChecksPresentOnAvailableChecksPage() throws IOException { + final String availableChecks = Files.toString(AVAILABLE_CHECKS_FILE, UTF_8); + for (File file : Files.fileTreeTraverser().preOrderTraversal(JAVA_SOURCES_DIRECTORY)) { + final String fileName = file.getName(); + if (fileName.matches(CHECK_FILE_NAME) && !CHECKS_ON_PAGE_IGNORE_LIST.contains(fileName)) { + final String checkName = fileName.replace(CHECK_SUFFIX, ""); + if (!isPresent(availableChecks, checkName)) { + Assert.fail(checkName + " is not correctly listed on Available Checks page" + + " - add it to " + AVAILABLE_CHECKS_PATH); + } + } + } + } + + private static boolean isPresent(String availableChecks, String checkName) { + final String linkPattern = String.format(Locale.ROOT, LINK_TEMPLATE, checkName); + return availableChecks.matches(linkPattern); + } + + @Test + public void testAllXmlExamples() throws Exception { + for (File file : Files.fileTreeTraverser().preOrderTraversal(XDOCS_DIRECTORY)) { + if (file.isDirectory()) { + continue; + } + + final String source = Files.toString(file, UTF_8); + int position = -1; + + while (true) { + position = source.indexOf("", position + 1); + + if (position == -1) { + break; + } + + final int nextPosition = source.indexOf("", position); + final String unserializedSource = source.substring(position + 8, nextPosition) + .trim().replace("<", "<").replace(">", ">").replace(""", "\"") + .replace("&", "&").replace("...", ""); + + position = nextPosition; + + if (unserializedSource.charAt(0) != '<' + || unserializedSource.charAt(unserializedSource.length() - 1) != '>') { + continue; + } + + // no dtd testing yet + if (unserializedSource.contains("\n" + code + "\n"; + } + if (!code.contains("name=\"Checker\"")) { + code = "\n" + code + "\n"; + } + if (!code.startsWith("\n\n" + + code; + } + + testRawXml(fileName, code, unserializedSource); + + // can't test ant structure, or old and outdated checks + if (!fileName.startsWith("anttask") && !fileName.startsWith("releasenotes")) { + testCheckstyleXml(fileName, code, unserializedSource); + } + } + + private static boolean hasFileSetClass(String xml) { + boolean found = false; + + for (String find : XML_FILESET_LIST) { + if (xml.contains(find)) { + found = true; + break; + } + } + + return found; + } + + private static void testRawXml(String fileName, String code, String unserializedSource) + throws ParserConfigurationException { + try { + final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setValidating(false); + factory.setNamespaceAware(true); + + final DocumentBuilder builder = factory.newDocumentBuilder(); + + builder.parse(new InputSource(new StringReader(code))); + } + catch (IOException | SAXException e) { + Assert.fail(fileName + " has invalid xml (" + e.getMessage() + "): " + + unserializedSource); + } + } + + private static void testCheckstyleXml(String fileName, String code, String unserializedSource) + throws IOException { + // can't process non-existent examples, or out of context snippets + if (code.contains("com.mycompany") || code.contains("checkstyle-packages") + || code.contains("MethodLimit") || code.contains(" -<module name="com.puppycrawl.tools.checkstyle.TreeWalker"> +<module name="com.puppycrawl.tools.checkstyle.TreeWalker"/> This is useful for plugging third-party modules into a configuration. @@ -218,7 +218,9 @@

-<property name="headerFile" value="${checkstyle.header.file}"/> +<module name="Header"> + <property name="headerFile" value="${checkstyle.header.file}"/> +</module>

@@ -236,7 +238,7 @@

-<module name="JavaDocMethod"> +<module name="JavadocMethod"> <property name="severity" value="${checkstyle.javadoc.severity}" default="error"/> @@ -375,9 +377,9 @@ <property name="fileExtensions" value="null"/> ... </module> - -OR - + +

OR

+ <module name="Checker"> <property name="fileExtensions" value=""/> ... @@ -479,9 +481,9 @@ OR <property name="fileExtensions" value="null"/> ... </module> - -OR - + +

OR

+ <module name="TreeWalker"> <property name="fileExtensions" value=""/> ... @@ -550,7 +552,7 @@ OR <module name="MethodLength"> <property name="tokens" value="METHOD_DEF"/> </module> - <module name="MethodLength"> +<module name="MethodLength"> <property name="tokens" value="CTOR_DEF"/> <property name="max" value="60"/> </module> diff --git a/src/xdocs/config_coding.xml b/src/xdocs/config_coding.xml index b3b8d0c40..ee7129661 100644 --- a/src/xdocs/config_coding.xml +++ b/src/xdocs/config_coding.xml @@ -430,7 +430,7 @@ String nullString = null;

<module name="FinalLocalVariable"> - <property name="token" value="VARIABLE_DEF"/> + <property name="tokens" value="VARIABLE_DEF"/> <property name="validateEnhancedForLoopVariable" value="true"/> </module> @@ -2774,7 +2774,7 @@ case 5: <module name="FallThrough"> <property name="reliefPattern" value="continue in next case"/> -<module name="FallThrough"/> +</module> @@ -3344,10 +3344,10 @@ cal.set(Calendar.MINUTE, minutes);

<module name="VariableDeclarationUsageDistance"> - <property name="allowedDistance" value="4"> - <property name="ignoreVariablePattern" value="^temp.*"> - <property name="validateBetweenScopes" value="true"> - <property name="mIgnoreFinal" value="false"> + <property name="allowedDistance" value="4"/> + <property name="ignoreVariablePattern" value="^temp.*"/> + <property name="validateBetweenScopes" value="true"/> + <property name="ignoreFinal" value="false"/> </module> diff --git a/src/xdocs/config_filters.xml b/src/xdocs/config_filters.xml index 096dcb887..4a2f593fb 100644 --- a/src/xdocs/config_filters.xml +++ b/src/xdocs/config_filters.xml @@ -123,11 +123,11 @@ For example, the following configuration fragment directs the Checker to use a SuppressionFilter with suppressions - file docs/suppressions.xml: + file config/suppressions.xml:

<module name="SuppressionFilter"> - <property name="file" value="docs/suppressions.xml"/> + <property name="file" value="config/suppressions.xml"/> </module>

diff --git a/src/xdocs/config_header.xml b/src/xdocs/config_header.xml index d54b192b8..36ef8470e 100644 --- a/src/xdocs/config_header.xml +++ b/src/xdocs/config_header.xml @@ -108,12 +108,12 @@ line 5: ////////////////////////////////////////////////////////////////////

- To configure the check to use header file "java.header" and ignore lines 2, 3, and 4 and only process Java files: + To configure the check to use header file "config/java.header" and ignore lines 2, 3, and 4 and only process Java files:

<module name="Header"> - <property name="headerFile" value="java.header"/> + <property name="headerFile" value="config/java.header"/> <property name="ignoreLines" value="2, 3, 4"/> <property name="fileExtensions" value="java"/> </module> @@ -289,11 +289,11 @@ line 6: ^\W*$

- To configure the check to use header file "java.header" and 10 and 13 muli-lines: + To configure the check to use header file "config/java.header" and 10 and 13 muli-lines:

<module name="RegexpHeader"> - <property name="headerFile" value="java.header"/> + <property name="headerFile" value="config/java.header"/> <property name="multiLines" value="10, 13"/> </module> diff --git a/src/xdocs/config_imports.xml b/src/xdocs/config_imports.xml index c3d0991fb..9d184d935 100644 --- a/src/xdocs/config_imports.xml +++ b/src/xdocs/config_imports.xml @@ -710,12 +710,12 @@ public class SomeClass { ... }

To configure the check using a import control file called - "import-control.xml", then have the following: + "config/import-control.xml", then have the following:

<module name="ImportControl"> - <property name="file" value="import-control.xml"/> + <property name="file" value="config/import-control.xml"/> </module> diff --git a/src/xdocs/config_javadoc.xml b/src/xdocs/config_javadoc.xml index bd1ff41ce..b3dcd39c5 100644 --- a/src/xdocs/config_javadoc.xml +++ b/src/xdocs/config_javadoc.xml @@ -221,7 +221,7 @@ <module name="JavadocType"> <property name="scope" value="private"/> - <property name="excludescope" value="package"/> + <property name="excludeScope" value="package"/> </module>
@@ -970,14 +970,6 @@ public boolean isSomething() <module name="NonEmptyAtclauseDescription"/> -

- To check non-empty at-clause description for tags @throws, @deprecated, use following config: -

- -<module name="NonEmptyAtclauseDescription"> - <property name="target" value="JAVADOC_TAG_THROWS_LITERAL, JAVADOC_TAG_DEPRECATED_LITERAL"/> -</module> - @@ -1036,7 +1028,7 @@ public boolean isSomething()

<module name="JavadocTagContinuationIndentation"> - <property name="tagContinuationIndentation" value="4"/> + <property name="offset" value="4"/> </module>
diff --git a/src/xdocs/config_misc.xml b/src/xdocs/config_misc.xml index 59cdf1235..60e206068 100755 --- a/src/xdocs/config_misc.xml +++ b/src/xdocs/config_misc.xml @@ -236,7 +236,7 @@ To configure the Check:

-<module name="CommentsIndentation"/module> +<module name="CommentsIndentation"/> /* diff --git a/src/xdocs/config_naming.xml b/src/xdocs/config_naming.xml index 414b1f40c..510ee040f 100644 --- a/src/xdocs/config_naming.xml +++ b/src/xdocs/config_naming.xml @@ -130,7 +130,7 @@ <property name="tokens" value="VARIABLE_DEF,CLASS_DEF"/> <property name="ignoreStatic" value="false"/> <property name="allowedAbbreviationLength" value="1"/> - <property name="allowedAbbreviation" value="XML,URL"/> + <property name="allowedAbbreviations" value="XML,URL"/> </module> diff --git a/src/xdocs/config_regexp.xml b/src/xdocs/config_regexp.xml index 3f57601d9..1152bc34e 100644 --- a/src/xdocs/config_regexp.xml +++ b/src/xdocs/config_regexp.xml @@ -385,26 +385,26 @@ value="\A/\*\n \* (\w*)\.java\n \*\n \* Copyright \(c\) \d\d\d\d ACME\n \* 123 Some St\.\n \* Somewhere\.\n \*\n \* This software is the confidential and proprietary information - of ACME\.\n \* \("Confidential Information"\)\. You + of ACME\.\n \* \(&quot;Confidential Information&quot;\)\. You shall not disclose such\n \* Confidential Information and shall use it only in accordance with\n \* the terms of the license agreement you entered into with ACME\.\n \*\n - \* \$Log: config_misc.xml,v $ - \* \Revision 1.7 2007/01/16 12:16:35 oburn - \* \Removing all reference to mailing lists + \* \$Log: config_misc\.xml,v $ + \* Revision 1\.7 2007/01/16 12:16:35 oburn + \* Removing all reference to mailing lists \* \ - \* \Revision 1.6 2005/12/25 16:13:10 o_sukhodolsky - \* \Fix for rfe 1248106 (TYPECAST is now accepted by NoWhitespaceAfter) + \* Revision 1.6 2005/12/25 16:13:10 o_sukhodolsky + \* Fix for rfe 1248106 \(TYPECAST is now accepted by NoWhitespaceAfter\) \* \ - \* \Fix for rfe 953266 (thanks to Paul Guyot (pguyot) for submitting patch) - \* \IllegalType can be configured to accept some abstract classes which - \* \matches to regexp of illegal type names (property legalAbstractClassNames) - \* \ - \* \TrailingComment now can be configured to accept some trailing comments - \* \(such as NOI18N) (property legalComment, rfe 1385344). - \* \ - \* \Revision 1.5 2005/11/06 11:54:12 oburn - \* \Incorporate excellent patch [ 1344344 ] Consolidation of regexp checks. + \* Fix for rfe 953266 \(thanks to Paul Guyot \(pguyot\) for submitting patch\) + \* IllegalType can be configured to accept some abstract classes which + \* matches to regexp of illegal type names \(property legalAbstractClassNames\) + \* + \* TrailingComment now can be configured to accept some trailing comments + \* \(such as NOI18N\) \(property legalComment, rfe 1385344\). + \* + \* Revision 1.5 2005/11/06 11:54:12 oburn + \* Incorporate excellent patch \[ 1344344 \] Consolidation of regexp checks. \* \\n(.*\n)*([\w|\s]*( class | interface )\1)"/> <property name="message" value="Correct header not found"/> </module> diff --git a/src/xdocs/config_whitespace.xml b/src/xdocs/config_whitespace.xml index 7f89854b0..88d7e2a7e 100644 --- a/src/xdocs/config_whitespace.xml +++ b/src/xdocs/config_whitespace.xml @@ -1516,7 +1516,7 @@ import com.puppycrawl.tools.

<module name="NoLineWrap"> - <property name="tokens" value="IMPORT"> + <property name="tokens" value="IMPORT"/> </module>