3

我想做这样的事情:

@测试

私人无效方法ThatGivesWarningIfUserTriesToUseThis(){

}

@TestingJava 中的自定义注解/装饰器在哪里。我希望这个@Testing注释的行为几乎完全像@Deprecated注释一样 - 如果我或其他人不小心尝试在代码的其他部分使用它,IDE会发出警告(并且方法名称也有一个罢工 -通过整个字体)。所以对于前

我该怎么做呢?

**注意:我不想使用@Deprecated,因为该方法未被弃用,我只想将其用于测试目的

**这个标记也应该在编译时检查,而不是在运行时检查。

4

3 回答 3

2

您可能会考虑编写自定义 Lint 规则来解决此问题。当检测到您的@Testing注释时,IDE 将显示一个 Lint 警告(例如,在 Eclipse+ADT 的情况下,一个黄色下划线)。

有关使用 Lint 扫描 Java 源文件以查找特定问题的详细指南,可以在此处的 Android 工具文档中找到。

于 2013-09-23T23:31:19.837 回答
2

问题是注解,顾名思义,仅用于注解 :) 创建这样的注解非常简单,您需要执行以下操作:

public @interface Testing

为了让您的 IDE 在编译时使用它,您必须编写一个插件。

这是我在另一个 SO question 中找到的一个很好的开始,用于从插件开发开始。

于 2013-09-23T21:58:45.640 回答
2

听起来您在描述类似的东西@VisibleForTesting,它是Guava 库(以前称为“Google Collections”)的一部分。如果您确实创建了自己的一个,您可能希望它是@Documentedand@Retention(SOURCE) .

我不知道有任何钩子或功能会导致非@Deprecated成员触发警告或 IDE 标志,就好像它们是@Deprecated. 因为 Mirror API 和 Reflection API 不跟踪单个表达式和语句(如本 SO answer 中所述),如果没有完整的 Java 解析器,您自己可能无法检测到它。

于 2013-09-23T22:08:37.330 回答