Maven Checkstyle не разрешает импорт - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь понять, почему мое правило проверки <allow> не соблюдается Maven, и я получаю сообщение об ошибке: src\main\java\com\jon\ttf\adapter\persistence\BaseSqlPersistence.java:[4,1] (imports) ImportControl: Disallowed import - org.sql2o.Sql2o.Я удалил большую часть кода в import-control-error.xml, поскольку все они очень похожи.Может ли проблема быть где-то в checkstyle-check.xml, где определенная проверка завершается при запуске моего пакета org.sql2o.Sql2o?

Дайте мне знать, если вы хотите, чтобы я прикрепил дополнительный код

import-control-error.xml

<import-control pkg="com.jon.ttf">
    <disallow pkg=".*" regex="true"/>
    <allow pkg="org.sql2o.Sql2o"/>
    <allow pkg="spark"/>
</import-control>

checkstyle-check.xml

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
        "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
        "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">

<module name="Checker">

    <module name="SuppressWarningsFilter"/>

    <property name="charset" value="UTF-8"/>

    <property name="severity" value="warning"/>

    <property name="fileExtensions" value="java, properties, xml"/>

    <module name="TreeWalker">
        <module name="RegexpSinglelineJava">
            <property name="format" value="^\t* "/>
            <property name="message" value="Indent must use tab characters"/>
            <property name="ignoreComments" value="true"/>
        </module>

        <module name="SuppressWarningsHolder"/>
        <module name="UnusedImports">
            <property name="severity" value="error"/>
        </module>
        <module name="OuterTypeFilename"/>
        <module name="ImportControl">
            <property name="severity" value="error"/>
            <property name="file" value="import-control-error.xml"/>
        </module>
        <module name="IllegalTokenText">
            <property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
            <property name="format"
                      value="\\u00(08|09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
            <property name="message" value="Avoid using corresponding octal or Unicode escape."/>
        </module>
        <module name="AvoidEscapedUnicodeCharacters">
            <property name="allowEscapesForControlCharacters" value="true"/>
            <property name="allowByTailComment" value="true"/>
            <property name="allowNonPrintableEscapes" value="true"/>
        </module>
        <module name="LineLength">
            <property name="severity" value="error"/>
            <property name="max" value="300"/>
            <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
        </module>
        <module name="AvoidStarImport">
            <property name="severity" value="error"/>
            <property name="allowStaticMemberImports" value="true"/>
        </module>
        <module name="OneTopLevelClass"/>
        <module name="NoLineWrap"/>
        <module name="EmptyBlock">
            <property name="option" value="TEXT"/>
            <property name="tokens" value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
        </module>
        <module name="NeedBraces">
            <property name="severity" value="error"/>
        </module>
        <module name="LeftCurly"/>
        <module name="RightCurly">
            <property name="option" value="alone"/>
            <property name="tokens"
                      value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT"/>
        </module>
        <module name="EqualsHashCode">
            <property name="severity" value="error"/>
        </module>
        <module name="WhitespaceAround">
            <property name="severity" value="error"/>
            <property name="allowEmptyConstructors" value="true"/>
            <property name="allowEmptyMethods" value="true"/>
            <property name="allowEmptyTypes" value="true"/>
            <property name="allowEmptyLoops" value="true"/>
            <message key="ws.notFollowed"
                     value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)"/>
            <message key="ws.notPreceded"
                     value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
        </module>
        <module name="OneStatementPerLine">
            <property name="severity" value="error"/>
        </module>
        <module name="MultipleVariableDeclarations">
            <property name="severity" value="error"/>
        </module>
        <module name="ArrayTypeStyle">
            <property name="severity" value="error"/>
        </module>
        <module name="MissingSwitchDefault">
            <property name="severity" value="error"/>
        </module>
        <module name="FallThrough">
            <property name="severity" value="error"/>
        </module>
        <module name="UpperEll">
            <property name="severity" value="error"/>
        </module>
        <module name="EmptyLineSeparator">
            <property name="severity" value="error"/>
            <property name="allowNoEmptyLineBetweenFields" value="true"/>
        </module>
        <module name="SeparatorWrap">
            <property name="severity" value="error"/>
            <property name="tokens" value="DOT"/>
            <property name="option" value="nl"/>
        </module>
        <module name="SeparatorWrap">
            <property name="severity" value="error"/>
            <property name="tokens" value="COMMA"/>
            <property name="option" value="EOL"/>
        </module>
        <module name="PackageName">
            <property name="severity" value="error"/>
            <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
            <message key="name.invalidPattern"
                     value="Package name ''{0}'' must match pattern ''{1}''."/>
        </module>
        <module name="TypeName">
            <property name="severity" value="error"/>
            <message key="name.invalidPattern"
                     value="Type name ''{0}'' must match pattern ''{1}''."/>
        </module>
        <module name="MethodTypeParameterName">
            <property name="severity" value="error"/>
            <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
            <message key="name.invalidPattern"
                     value="Method type name ''{0}'' must match pattern ''{1}''."/>
        </module>
        <module name="InterfaceTypeParameterName">
            <property name="severity" value="error"/>
            <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
            <message key="name.invalidPattern"
                     value="Interface type name ''{0}'' must match pattern ''{1}''."/>
        </module>
        <module name="NoFinalizer">
            <property name="severity" value="error"/>
        </module>
        <module name="GenericWhitespace">
            <property name="severity" value="error"/>
            <message key="ws.followed"
                     value="GenericWhitespace ''{0}'' is followed by whitespace."/>
            <message key="ws.preceded"
                     value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
            <message key="ws.illegalFollow"
                     value="GenericWhitespace ''{0}'' should followed by whitespace."/>
            <message key="ws.notPreceded"
                     value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
        </module>
        <module name="Indentation">
            <property name="severity" value="error"/>
            <property name="basicOffset" value="8"/>
            <property name="braceAdjustment" value="0"/>
            <property name="caseIndent" value="8"/>
            <property name="throwsIndent" value="8"/>
            <property name="lineWrappingIndentation" value="8"/>
            <property name="arrayInitIndent" value="16"/>
        </module>
        <module name="MethodName">
            <property name="severity" value="error"/>
            <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
            <message key="name.invalidPattern" value="Method name ''{0}'' must match pattern ''{1}''."/>
        </module>
        <module name="EmptyCatchBlock">
            <property name="severity" value="error"/>
        </module>
    </module>

</module>

1 Ответ

0 голосов
/ 09 февраля 2019

получаю сообщение об ошибке: BaseSqlPersistence.java:[4,1] (импорт) ImportControl: запрещенный импорт - org.sql2o.Sql2o

import-control-error.xml

<disallow pkg=".*" regex="true"/>
<allow pkg="org.sql2o.Sql2o"/>

Порядок правил для ImportControl такой же, как определено в файле XML.Так как .* определяется первым, это означает, что весь импорт запрещен.Если вы удалите это или переместите его вниз, то он должен работать как положено.

Если вы пытаетесь запретить весь импорт, который не разрешен, то это поведение по умолчанию ImportControl и конкретное запрещениене требуется.

Более подробную информацию можно найти по адресу http://checkstyle.sourceforge.net/config_imports.html#ImportControl_Description

Порядок правил в том же подпакете / корне определяется порядком объявления в файле XML,который сверху вниз (первый), снизу (последний).

В качестве заключительной ноты

<allow pkg="org.sql2o.Sql2o"/>

Это класс, а не пакет,Если вы разрешаете пакет, вы должны определить его как org.sql2o.Если вы разрешаете класс, он должен быть определен как <allow class="org.sql2o.Sql2o"/>.

...