[alibaba/p3c]P3C规则ThreadPoolCreationRule通过导包校验,但是导包可以文件夹下*绕过

2024-01-16 926 views
7

import java.util.concurrent.Executors; 改为 import java.util.concurrent.; 可绕过规则,现在IDEA多个类基本都是自动优化为

回答

6

Info info = new Info(); List importDeclarations = node.findChildrenOfType(ASTImportDeclaration.class); for (ASTImportDeclaration importDeclaration : importDeclarations) { ASTName name = importDeclaration.getFirstChildOfType(ASTName.class); info.executorsUsed = info.executorsUsed || (name.getType() == Executors.class || Executors.class.getName().equals(name.getImage())); if (name.getImage().startsWith(Executors.class.getName() + DOT)) { info.importedExecutorsMethods.add(name.getImage()); } }

4

规约检测主要针对正常的开发场景,我们会尽量覆盖大部分的使用场景,但不保证100%的情况都能检测。 我们不提倡import *的这种导入方式,还依赖开发人员自觉来保证代码没有问题。 @SeanCai 帮忙看下能否覆盖这种情况?

9

是的,代码质量还是靠自觉,这个问题只是在IDEA开发时发现引入过个该包下的类,发现IDEA会自动优化导包为*

6

image 目前只有在zhe这里配置一下

8

eclipse设置可以不自动导包为*,但是我是用这个规则在强制扫描库里代码校验,所以这个规则是可以被绕过的,后续能支持优化下这个规则么