当前位置: 首页 > 知识库问答 >
问题:

PMD或Checkstyle检查以禁止某些类的使用

裴令秋
2023-03-14

是否有任何可用的PMD或Checkstyle规则可以帮助我禁止在Java代码中使用某些特定的类?

就我而言,我想在所有可能的情况下禁止以下所有行为:

  • org.apache.commons.lang3.字符编码
  • org.apache.commons.lang.CharEncode
  • org.apache.commons.codec.CharEncode

我发现了非法导入检查,但它是关于包的,而不是特定的类。


共有2个答案

元胡媚
2023-03-14

您可以尝试使用这些pmd扩展将类和方法列入黑名单:https://github.com/LiveRamp/pmd_extensions

汲雅珺
2023-03-14

对于PMD,您可以编写如下规则:

<rule name="Prohibited classes"
      language="java"
      message="Avoid using these classes."
      class="net.sourceforge.pmd.lang.rule.XPathRule" >
    <description>
        Avoid using these classes, there are better alternatives.
    </description>
    <priority>3</priority>
    <properties>
        <property name="xpath">
            <value>
                <![CDATA[
//Name[pmd-java:typeIs('org.apache.commons.lang3.CharEncoding')] |
//Name[pmd-java:typeIs('org.apache.commons.lang.CharEncoding')] |
//Name[pmd-java:typeIs('org.apache.commons.codec.CharEncoding')]
]]>
            </value>
        </property>
    </properties>
</rule>

//Name[以(@Image,'com.sun.')开头]禁止导入包。

 类似资料:
  • 在我们的组织中,我们有几个微服务和许多库。 有些库定义的“public”类不用于公共用途-仅在多个包中的库内部(因此不能是包私有的) 我想添加一些类似于Kotlin的“内部”修饰符的东西——一个检查风格规则/注释处理器/测试组件,用于验证消费者应用程序没有导入这些类。 例如,我将它们标记为@ForInternalUsageOnly或放入包com中。奥罗格。迈里布。内部使用 什么是非复制粘贴的(例如

  • 我正在finchley使用spring cloud。rc2和spring boot版本2以及sleuth和zipkin。 我有一个使用反应器项目的外观层。Facade调用服务并行,每个服务在Rabbit mq中存储一些跟踪信息。 问题是我在拉链金中看到一些跨度,如 我怎么能阻止这样的痕迹被捕获

  • 我正在开发一个Java的应用程序,我试图遵循我公司建议的所有编码指南。为此,我安装了一些工具,如Checkstyle、PMD和findBugs,但我不是这些代码质量分析器的专家,我不知道如何配置所有的规则。特别是我不知道有没有一个规则来检查这个要求(我的公司给出的):“继承等级必须在6级或以下。长的继承树使得代码很难阅读、理解、维护和重构。大多数继承案例可以通过实现接口和使用更容易维护的组合来覆盖

  • 问题内容: 我们正在将静态分析工具引入Java产品的构建系统中。我们正在使用Maven2,因此Checkstyle和PMD集成是免费提供的。但是,就执行基本样式规则而言,这两个工具之间似乎在功能上有很大的重叠。 同时使用这两者有好处吗?如果一个工具可以工作,我不想维护两个工具。如果选择一种,应该使用哪一种,为什么? 我们还计划使用FindBugs。还有其他静态分析工具值得我们关注吗? 更新: 共识

  • 不同的业务应用场景,会有完全不同的非法终端控制策略,常见的限制策略有终端 IP 、访问域名端口,这些可以通过防火墙等很多成熟手段完成。可也有一些特定限制策略,例如特定 cookie、url、location,甚至请求 body 包含有特殊内容,这种情况下普通防火墙就比较难限制。 Nginx 是 HTTP 7 层协议的实现者,相对普通防火墙从通讯协议有自己的弱势,同等的配置下的性能表现绝对远不如防火

  • 我开始使用静态代码分析工具,比如Checkstyle、PMD和FindBugs。PMD允许通过在行尾添加注释将代码标记为已审核: 我真的不喜欢尾随注释,CheckStyle也不喜欢(“不要使用尾随注释”)。有没有一种方法可以告诉PMD,在不使用后续注释的情况下对特定代码进行了审阅?