检查 remote.entities 外部远程包的非法导入
checking for illegal imports of remote.entities outside remote package
当应用程序需要查询远程系统时,我们通常会创建一个“远程”包,其中包含一个包含 类 的“实体”子包,这样可以更轻松地处理我们检索到的信息。这些 类 不应该从远程包中泄漏出来。
是否有任何规则可用(或正在研究)来检查在 x.y.remote 包之外导入 x.y.remote.entities?
S3688 was added in SonarJava 4.4 to forbid entirely the use of certain classes. On the face of it, that won't work because you do want to allow the use of those classes in some packages. That's where Issue Exclusions进来
您将设置规则以禁止使用 x.y.remote.entities
(普遍),然后设置排除项以忽略该规则在 x.y.remote
.[=13= 中提出的任何问题]
从您的问题标签中,我发现基于 Checkstyle 的解决方案也会对您有所帮助。 ImportControl check should be just what you need. Checkstyle also features a SonarQube plugin 如果你需要的话。
PMD 的主要优势之一是它允许通过编写简单的 XPath 表达式轻松编写非常特定于给定项目/团队的自定义规则,就像这个一样。
在规则集 XML 文件中,只需按如下方式添加您的自定义规则:
<rule name="Remote entities used outside remote package"
message="The remote entities should not be imported outside the remote package"
class="net.sourceforge.pmd.lang.rule.XPathRule"
language="java">
<description>
Remote entities should not be imported outside the remote package
</description>
<priority>3</priority>
<properties>
<property name="xpath">
<value>
//ImportDeclaration/Name[contains(@Image, '.entities') and //PackageDeclaration/Name[not(contains(@Image, '.remote'))]]
</value>
</property>
</properties>
</rule>
注意规则允许从任何远程包中导入所有实体,但是using the designer您可能会迭代此规则以根据需要缩小范围。
当应用程序需要查询远程系统时,我们通常会创建一个“远程”包,其中包含一个包含 类 的“实体”子包,这样可以更轻松地处理我们检索到的信息。这些 类 不应该从远程包中泄漏出来。
是否有任何规则可用(或正在研究)来检查在 x.y.remote 包之外导入 x.y.remote.entities?
S3688 was added in SonarJava 4.4 to forbid entirely the use of certain classes. On the face of it, that won't work because you do want to allow the use of those classes in some packages. That's where Issue Exclusions进来
您将设置规则以禁止使用 x.y.remote.entities
(普遍),然后设置排除项以忽略该规则在 x.y.remote
.[=13= 中提出的任何问题]
从您的问题标签中,我发现基于 Checkstyle 的解决方案也会对您有所帮助。 ImportControl check should be just what you need. Checkstyle also features a SonarQube plugin 如果你需要的话。
PMD 的主要优势之一是它允许通过编写简单的 XPath 表达式轻松编写非常特定于给定项目/团队的自定义规则,就像这个一样。
在规则集 XML 文件中,只需按如下方式添加您的自定义规则:
<rule name="Remote entities used outside remote package"
message="The remote entities should not be imported outside the remote package"
class="net.sourceforge.pmd.lang.rule.XPathRule"
language="java">
<description>
Remote entities should not be imported outside the remote package
</description>
<priority>3</priority>
<properties>
<property name="xpath">
<value>
//ImportDeclaration/Name[contains(@Image, '.entities') and //PackageDeclaration/Name[not(contains(@Image, '.remote'))]]
</value>
</property>
</properties>
</rule>
注意规则允许从任何远程包中导入所有实体,但是using the designer您可能会迭代此规则以根据需要缩小范围。