IntelliJ抑制API方法未使用的警告

32

最近我从Eclipse切换到IntelliJ IDEA,我非常喜欢它的检查器,并发现它们为我标记潜在错误和警告非常有用。但我遇到了一个问题,我无法解决:

我有一些Java项目被用作其他项目中的API,因此它包含未使用的方法,这些方法被标记为未使用: 未使用警告

如何禁止针对API方法的此类警告呢?是否有@SuppressWarnings("unused")以外的替代方法?因为该注释还会抑制方法内部未使用警告的警告,而且不能清楚地告诉读者该方法是为API使用而设计的,而不仅仅是在当前项目中未被使用。

4个回答

32
@Sebastian的建议是让你的类实现一个接口,这可能是从良好设计的角度解决此问题的最佳方法。但当这种方法不切实际时,有一种替代方案...
“未使用的声明”检查允许您配置要忽略的“入口点”(即公共外部API)。作为其中的一部分,您可以配置“注释”。任何带有配置注释的内容都被视为入口点。

Unused declaration Inspection Settings

只需配置检查以使用一个注释来注释您的公共API方法,可以使用库中的注释,例如@API Guardian(由一些开源项目如JUnit 5使用),或者您自己创建的注释。使用库当然会使事情更容易,并且在项目之间保持一致。在下面的示例中,我使用了我创建的@PublicApi注释。请注意,该方法被标记为未使用。但是foo字符串仍然被标记为未使用,这正是您想要的:

Code sample screenshot with annotation

作为打开设置对话框的替代方式,并且为了减少对编程流程的影响,您也可以使用“快速修复意图”将所需的注释添加到“未使用声明”设置中。在使用所需的注释进行注释之后,将光标放置在突出显示的未使用方法(或类)名称上,并通过Alt+Enter(或通过单击灯泡图标Quick Fix Icon)调用“意图操作和快速修复”弹出窗口,然后选择“对'{annotation}'进行注释的方法进行抑制:”

Quick Fix Screenshot


12

编写一个接口给你的类。实现接口方法的方法不会被标记为未使用,而是接口中未使用的方法会被标记为未使用。但是在这里,你可以安全地使用 @SuppressWarnings("unused"),因为你没有一个方法体。你甚至可以在整个接口上方编写 @SuppressWarnings("unused")


3
简而言之,不需要,这与IntelliJ没有什么关系,Java编译器Javac只有在被要求时才会产生它们。如果您的方法需要此注释,则整个方法都需要添加。但是,如果您只希望字段有注释,那也是可能的:
@SuppressWarnings("unused")
int iii = 0;

总之,方法注释将覆盖整个方法,将其放置在字段或指令中将仅覆盖该单行。


1
虽然这个答案是正确的,但它并不满足 OP 的问题方面,即关于 @SuppressWarnings("unused") 使用替代方案的问题。 - Stimpson Cat

2

Intellij可以为您完成此操作。只需在出现警告的地方按下Alt+Enter即可。会弹出一些建议,其中之一是删除字段。建议末尾会有一个箭头字段。使用箭头键导航到选项并使用右箭头打开另一个菜单。其中一个选项将是“抑制此方法”和“抑制此语句”等。 选择“抑制此语句”将导致以下结果:

//noinspection unused
int iii = 0;

但是我必须敦促你注意Intellij提供的警告,不要盲目地抑制它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接