如何防止使用静态分析工具在代码中使用指定的class/method?
How to prevent to use specified class/method in code with static analysis tools?
我们有很多团队有很多 java 代码。
为了避免性能问题,我们要防止在许多代码存储库上使用某些指定的 classes/methods。
如何防止使用静态分析工具(如 CheckStyle、Sonarqube)在代码中使用指定的 class/method?
你可以看看ArchUnit。我怀疑您可以使用它来编写一些单元测试来查找您想要禁止的 classes/packages 并在遇到它们时抛出错误。
你也可以这样写custom checks for Checkstyle
您也可以尝试 JArchitect,您可以使用 cqlinq 创建自定义规则来检测特定 classes/methods.
的所有使用
这听起来很适合 Checkstyle 的
IllegalType and IllegalImport checks. Also, for finer granularity, you can use ImportControl.
此外,在您的配置中,您可以使用 MatchXPath:
禁止某些方法,如下所示
<?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">
<property name="charset" value="UTF-8"/>
<module name="TreeWalker">
<module name="MatchXpath">
<property name="query" value="//METHOD_CALL//DOT[.//IDENT[@text = 'yourForbiddenMethod']]"/>
<message key="matchxpath.match"
value="Avoid using deprecated method 'yourForbiddenMethod()'."/>
</module>
</module>
</module>
代码示例:
public class Test {
static int method(Object args) {
return AllowedClass.yourForbiddenMethod(args);
}
}
结果:
➜ src java -jar checkstyle-8.42-all.jar -c config.xml Test.java
Starting audit...
[ERROR] /src/Test.java:3:29: Avoid using deprecated method yourForbiddenMethod(). [MatchXpath]
Audit done.
Checkstyle ends with 1 errors.
我们有很多团队有很多 java 代码。 为了避免性能问题,我们要防止在许多代码存储库上使用某些指定的 classes/methods。
如何防止使用静态分析工具(如 CheckStyle、Sonarqube)在代码中使用指定的 class/method?
你可以看看ArchUnit。我怀疑您可以使用它来编写一些单元测试来查找您想要禁止的 classes/packages 并在遇到它们时抛出错误。
你也可以这样写custom checks for Checkstyle
您也可以尝试 JArchitect,您可以使用 cqlinq 创建自定义规则来检测特定 classes/methods.
的所有使用这听起来很适合 Checkstyle 的 IllegalType and IllegalImport checks. Also, for finer granularity, you can use ImportControl.
此外,在您的配置中,您可以使用 MatchXPath:
禁止某些方法,如下所示
<?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">
<property name="charset" value="UTF-8"/>
<module name="TreeWalker">
<module name="MatchXpath">
<property name="query" value="//METHOD_CALL//DOT[.//IDENT[@text = 'yourForbiddenMethod']]"/>
<message key="matchxpath.match"
value="Avoid using deprecated method 'yourForbiddenMethod()'."/>
</module>
</module>
</module>
代码示例:
public class Test {
static int method(Object args) {
return AllowedClass.yourForbiddenMethod(args);
}
}
结果:
➜ src java -jar checkstyle-8.42-all.jar -c config.xml Test.java
Starting audit...
[ERROR] /src/Test.java:3:29: Avoid using deprecated method yourForbiddenMethod(). [MatchXpath]
Audit done.
Checkstyle ends with 1 errors.