簡體   English   中英

如何通過regexp從pmd規則中排除類

[英]how to exclude classes from pmd rule by regexp

有沒有辦法按類名模式從PMD規則中排除類?

我在尋找......

<rule ref="rulesets/java/coupling.xml/ExcessiveImports">
    <exclude-pattern>.*Test\.class</exclude-pattern>
</rule>

我知道vioSuppressXPath方法,但我發現它太丑陋/復雜。

謝謝!

我擔心沒有。 您當前可以使用<exclude-pattern>完全忽略分析中的文件,但不能忽略特定規則。

這背后的基本原理是,在代碼庫上強制執行規則集時,應盡量保持一致。 在這樣做時,幾乎沒有例外:

  • 具有用於測試/主代碼的單獨規則集
  • 允許壓制個別情況,其中規則可能不適用於非常具體但有效的原因

您的示例似乎指向了第一個場景的方向。 如果您想為測試類提供更輕松的規則集,則應創建單獨的配置並讓PMD運行兩個單獨的分析。

然而,這不屬於PMD本身的范圍,而是關於如何運行它。 在Gradle / Ant / CLI上,這非常簡單。 不幸的是,在Maven上它目前不受支持(可以找到一個功能請求並在這里投票)

如果您認為有其他方案(前兩個方案未涵蓋),應考慮到這一點,請在https://github.com/pmd/pmd/issues上發布功能請求

如果類名以DTO結尾,則該規則將忽略特定規則:

  <rule ref="category/java/bestpractices.xml/UnusedPrivateField">
    <properties>
      <!--Ignore UnusedPrivateField on classes where the class name ends with DTO-->
      <property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration['.*DTO']"/>
    </properties>
  </rule>

參考https://github.com/pmd/pmd/issues/1142

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM