新的 intellij 升级 (10.5) 现在显示警告,指出为类定义的某些方法未使用。这些方法是公开的,我计划不使用所有方法,因为我创建它们是为了支持预期的 API。我想禁用此警告(不用于类中的公共方法)。有没有办法做到这一点?
10 回答
您可以为这样的单个方法禁用它
@SuppressWarnings("unused")
public void myMethod(){...}
创意 2016.3
在即将发布的IDEA 2016.3版本(已经有预览版)中,现在可以调整检查范围:
< 想法 14.0
如果要突出显示未使用的公共方法,请启用“设置|检查|声明冗余|未使用的声明”全局检查。
如果要突出显示未使用的私有方法,请启用“设置|检查|声明冗余|未使用符号”本地检查。
因此,如果要突出显示未使用的私有成员,但不突出显示未使用的公共成员,请关闭“未使用声明”并打开“未使用符号”。
我刚刚使用 IDEA 13.1.4 对其进行了测试,它的工作方式与描述的完全一样。
想法 14.x
在 IntelliJ IDEA 14.0.x 中,设置如下:
Settings | Editor | Inspections | Declaration redundancy | Unused symbol/declaration
在 IntelliJ IDEA 14.1 中,该选项似乎消失了。
禁用Settings
| Inspections
| Declaration redundancy
| 未使用的声明代码检查。作为一个选项,您可以为您的 API 类创建自定义范围,并仅针对每个 API 范围禁用此检查,以便它在项目的其余部分仍然有效。
我认为避免突出显示未使用的公共方法的最佳方法是在您的 API 中为这些方法编写几个测试。
在最新版本中,此选项在Settings>Inspections>Java>Declaration redundancy>Unused declaration>Methods
取消选中不需要的选项下。
这是一个旧线程,但我最终到达这里的速度比我找到解决方案的速度要快,所以我将继续分享我的发现。首先,我不确定我们是否使用相同的语言(此处为 JS),但使用基于 GUI 的工具,这就是我最终的结果。以下代码给了我臭名昭著的“未使用”警告:
/**
* @class sample class
*/
var MyClass = function () {
return this;
};
/**
* Some public method
* @api public
*/
MyClass.prototype.myMethod = function () {
return null;
};
出现“未使用的定义 myMethod” 检查员最终建议通过添加忽略此特定问题
//noinspection JSUnusedGlobalSymbols
就在此特定方法之上,以便以下代码不再导致此警告:
//noinspection JSUnusedGlobalSymbols
/**
* Some public method
* @api public
*/
MyClass.prototype.myMethod = function () {
return null;
};
其他警告(打字错误等)似乎仍然出现,包括未使用的局部变量和参数,因此它似乎隔离了这个特定问题。缺点是如果你有很多代码,它往往会污染你的代码......
我刚刚点击了“禁止声明”,webstorm 在前面加上了这个:
//noinspection JSUnusedGlobalSymbols
也许该entry points
功能可以工作,您可以在其中指定可以禁用警告的代码模式
Settings | Inspections | Declaration redundancy | Unused Declaration | entry point
最近在扩展库时,我也收到了“未使用”的检查警告。
想想为什么 IntelliJ 发出信号
通常在重构时,所有未使用的方法/参数都应该可以安全地删除(通过 Intellij 的安全删除操作)。
这样,IntelliJ(如 Checkstyle 等)的意图是支持我们的简洁设计。由于未使用的方法既没有在内部使用(in src/java/main
)也没有在外部测试(in src/java/test
),它们似乎已经过时了。那么为什么不遵循“当有疑问时,扔掉它”的说法。
在重构时,这主要是一个真正的建议。但是,如果我们正在开发一个旨在供其他代码库(来自外部的模块/依赖项)使用的库/API,那么我们宁愿回答“不使用时会感到困惑”。
我们对 IntelliJ 的警告感到惊讶。这些方法不应该被删除,因为它们实际上是打算在其他地方使用的。它们是入口点。
然后选择合适的解决方案
以下所有解决方案都有一个共同点:
- 通过您的代码进行交流,以便每个 IDE 和开发人员都能理解(例如,添加一个测试以便使用它)
- 告诉你的意图(例如通过重新配置代码检查给 IntelliJ )
配置检查或禁用
如各种早期答案中所述。带有 IntelliJ代码检查设置的屏幕截图和导航提示
添加测试
如果您为未使用的(方法、类等)添加测试,您将通过 3 种方式受益:
- 正确性:(以前)未使用的被测对象(SUT)经过测试
- 沟通:您清楚地与每个读者沟通,以及应该如何使用您未使用的(方法、类等)
- 清关:现在没用的终于用上了。所以 IntelliJ 的检查不会再发现和警告了。
添加或标记为入口点
我多次看到这个建议:
- 作为IntelliJ检查设置中的可选对话框选项卡
- 作为排名靠前的答案下方的评论:
IMO 更好的方法是将类标记为“入口点”。– Tanya Jivvca 8 月 18 日 8:46
- 在 IntelliJ 的论坛中:代码检查:未使用的元素 - 什么是入口点?(我在下面的引文中强调):
添加元素作为入口点。默认情况下,全局范围内的所有代码以及测试都被视为可访问的。如果您知道执行了某个方法或函数,则可以将其添加为入口点。入口点内的代码现在也已执行并可访问。添加入口点时,源代码文件不受影响,并且元素的记录与项目一起存储在
.idea\misc.xml
.