有没有办法应用IDEA"格式错误的格式字符串"打算定制方法?

时间:2017-10-30 03:56:36

标签: intellij-idea intellij-idea2017

编写表格代码时:

String.format("blah %s %s", value1);

IntelliJ将警告格式模式的数量与实际参数之间存在不匹配:too few arguments for format string (found:1, expected: 2)

有没有办法将此逻辑应用于自定义方法? 例如:

/** @see String#format(String, Object...) */
public String myMethod(String msg, Object... args){
  return String.format("blah " + msg, args);
}
...

myMethod("%s %s", value1);

关键是我想让IDEA告诉我,我搞砸了。

如示例所示,我已经记录了委托给String.format()的这些方法。

理想情况下,我更愿意避免重复该文档 - 尽管我愿意将其转换为自定义格式,或者可能是注释(最好不是IDEA注释)。

2 个答案:

答案 0 :(得分:3)

斯蒂芬·弗里德里希(Stephen Friedrich)的答案指向正确的方向,但是截图不足以了解如何使用该功能。这是如何使其更详细地工作:

  1. 在“其他格式化程序类”框中,输入创建的包含自定义format()方法的所有自定义类。因此,在OP的情况下,如果他们的myMethod()方法属于某个com.acme.MyClass类,那么他们将在此处输入com.acme.MyClass

如果OP的自定义格式设置方法称为format(),那将是OP所要做的全部工作。但是,他们的自定义格式设置方法的名称不同,因此还需要执行第二步。

  1. 在“其他格式化程序方法”框中,输入已创建的任何自定义方法的名称,它们的工作方式类似于format()。因此,在OP的情况下,将在此处添加字符串myMethod。请注意,您不应只包含方法的名称,也不能包含类限定符,括号或参数。

从外观上看,在“其他格式化程序方法”框中输入的每个方法名称适用于在“其他格式化程序类”框中输入的所有类,即使实际上只有一个类包含此类方法也是如此。此外,即使没有一个类包含此类方法,或者存在具有此类名称的方法,但它们没有必要的void (String format, Object... arguments)签名,也不会出现错误。

因此,似乎已经以一种非常骇人听闻的方式实现了此功能,这是我们从JetBrains所见不到的那种方式。同样有趣的是,由于功能实施过程中存在漏洞,使得用户更难弄清楚如何使用功能。

我认为,最好在格式化方法上附加注释来实现此功能。 (但是我们不要在这里争论,这是一个问答网站。)

答案 1 :(得分:2)

您可以在检查设置中配置其他“格式化程序方法”:

enter image description here

如果您将检查配置文件配置为“Project Default”,并检入相关文件(在.idea文件夹中),那么签出项目并使用IDEA的每个人都将从中受益。