Не удалось исключить некоторые правила из PMD - PullRequest
0 голосов
/ 09 декабря 2018

Я просто пытаюсь добавить PMD в свой проект Spring Boot, но сталкиваюсь с некоторыми проблемами, пытаясь исключить некоторые правила из category/java/errorprone.xml набора правил.

Я использую плагин gradle следующим образом:

pmd {
    ruleSetConfig = resources.text.fromFile("config/pmd/ruleset.xml")
}

и это содержимое моего файла пользовательских правил:

<?xml version="1.0"?>
<ruleset>
    <rule ref="category/java/bestpractices.xml"></rule>
    <rule ref="category/java/codestyle.xml">
        <exclude name="MethodArgumentCouldBeFinal"/>
        <exclude name="LocalVariableCouldBeFinal"/>
        <exclude name="ControlStatementBraces"/>
        <exclude name="OnlyOneReturn"/>
        <exclude name="ConfusingTernary"/>
        <exclude name="AtLeastOneConstructor"/>
        <exclude name="AvoidFinalLocalVariable"/>
        <exclude name="ShortVariable"/>
        <exclude name="LongVariable"/>
        <exclude name="CommentDefaultAccessModifier"/>
        <exclude name="DefaultPackage"/>
        <exclude name="PrematureDeclaration"/>
    </rule>
    <rule ref="category/java/design.xml">
        <exclude name="LawOfDemeter"/>
        <exclude name="NcssCount"/>
        <exclude name="CyclomaticComplexity"/>
        <exclude name="UseUtilityClass"/>
        <exclude name="AvoidCatchingGenericException"/>
        <exclude name="NPathComplexity"/>
        <exclude name="AvoidRethrowingException"/>
        <exclude name="DataClass"/>
        <exclude name="AvoidThrowingRawExceptionTypes"/>
    </rule>
    <rule ref="category/java/documentation.xml">
        <exclude name="CommentRequired"/>
        <exclude name="UncommentedEmptyConstructor"/>
        <exclude name="CommentSize"/>
    </rule>
    <rule ref="category/java/errorprone.xml">
        <exclude name="BeanMembersShouldSerialize"/>
        <exclude name="DataflowAnomalyAnalysis"/>
        <exclude name="AssignmentInOperand"/>
    </rule>
    <rule ref="category/java/multithreading.xml">
    </rule>
    <rule ref="category/java/performance.xml">
        <exclude name="AvoidInstantiatingObjectsInLoops"/>
    </rule>
    <rule ref="category/java/security.xml">
    </rule>
</ruleset>

Как вы можете видеть, я исключаю BeanMembersShouldSerialize и DataflowAnomalyAnalysis, но я 'Я все еще получаю эти ошибки в отчете PMD:

Found non-transient, non-static member. Please mark as transient or provide accessors.

`Обнаружена 'DU' -аномалия для переменной 'userEntity' (строки '28' - '38').` `

Я использую PMD версии 6.10.0 (9 декабря 2018 года).

Любая помощь будет очень признательна.

С уважением

1 Ответ

0 голосов
/ 10 декабря 2018

Gradle по умолчанию использует наборы правил basic и braces до Gradle 5. Gradle 5 по умолчанию использует категорию errorprone.

Вам необходимо очистить эти значения по умолчанию, если вы этого не сделаетехотите их, выполнив:

pmd {
    ruleSets = [] 
}

https://docs.gradle.org/current/dsl/org.gradle.api.plugins.quality.Pmd.html#org.gradle.api.plugins.quality.Pmd:ruleSets

...