Back to Sa Token

冗余 import 检测规则

.agents/skills/remove-redundancy-import/reference.md

1.45.01.8 KB
Original Source

冗余 import 检测规则

解析步骤

1. 提取 package

匹配 package\s+([\w.]+)\s*;,得到当前文件所在包。

2. 提取 import

匹配以下模式(每行一条):

  • import\s+([\w.]+)\s*; — 普通 import
  • import\s+static\s+([\w.]+)\s*; — static 导入类
  • import\s+static\s+([\w.]+)\.(\w+)\s*; — static 导入成员(方法/字段)
  • import\s+[\w.]+\s*\.\s*\*\s*; — 通配符,跳过不处理

3. 确定简单名(Simple Name)

import 类型示例简单名
普通类import java.util.List;List
内部类import pkg.Outer.Inner;Inner
static 类import static pkg.Utils;Utils
static 成员import static pkg.Utils.foo;foo

4. 同包冗余

import x.y.Z 的包 x.y 与当前文件 package x.y 相同,则该 import 冗余(同包无需导入)。

5. 使用检测

类体package 和所有 import 之后)中搜索:

  • 使用正则 \bSimpleName\b 匹配整词,避免误匹配子串
  • 排除:注释、字符串字面量中的出现
  • 若未找到匹配,则该 import 视为未使用

边界情况

情况处理方式
import pkg.*;跳过,不自动移除
注解中的类型 @FooFoo 为 import 的简单名,视为已使用
泛型 List<String>List 会匹配,视为已使用
同名类(如 java.util.Datejava.sql.Date两 import 都保留;若仅一个被使用,只移除未使用的
Javadoc @param 中的类型保守:若不确定则保留

正则参考

// package
package\s+([\w.]+)\s*;

// 普通 import(非通配符)
import\s+(?!static)([\w.]+)\s*;

// static import 成员
import\s+static\s+[\w.]+\.(\w+)\s*;

// static import 类
import\s+static\s+([\w.]+)\s*;