Intellij Idea 如何让IntelliJ标记toString()的任何实现?

b1zrtrql  于 2024-01-05  发布在  其他
关注(0)|答案(1)|浏览(152)

我们使用Lombok,我的架构师希望我们总是使用Lombok @ToString而不是自定义实现。
我希望IntelliJ将任何toString()实现标记为警告。
我该怎么做呢?
我使用的是IntelliJ Ultimate 2023.3

mw3dktmi

mw3dktmi1#

你可以create your own inspections
进入设置->编辑器->检查,然后点击“+”按钮:
x1c 0d1x的数据
选择“添加结构搜索检验”或“添加结构替换检验”,具体取决于您是否希望“快速修复”问题。
下面是一个例子,找到一个包含toString的类,用同一个类替换它,但删除了那个方法,并添加了一个@ToString注解。
寻找:

  1. class $ClassName$ {
  2. public String toString() {
  3. $Statements$;
  4. }
  5. $OtherMembers$
  6. }

字符串
注意,$Statements$上有一个count修饰符,允许0个或多个示例
(由于这是由Structural Search驱动的,public String toString()还匹配finaltoString方法等。
替换为:

  1. @lombok.ToString
  2. class $ClassName$ {
  3. $OtherMembers$
  4. }



请注意,这将突出显示整个类,因为整个类都需要替换。
或者,你可以只 findtoString的示例。你只需要找到:

  1. public String $toString$() {
  2. $Statements$;
  3. }


$toString$上有一个文本修饰符,确保它的文本始终是toString。这样做允许您将匹配的目标设置为$toString$,只突出显示toString部分。同样,$Statements$上有一个计数修饰符。确保“Language”选项设置为“Java - Class Member”。



最后,这里是从上面的检查导出的XML文件。您可以在检查设置页面中导入此文件。

  1. <component name="InspectionProjectProfileManager">
  2. <profile version="1.0">
  3. <option name="myName" value="Some Name" />
  4. <inspection_tool class="SSBasedInspection" enabled="true" level="WARNING" enabled_by_default="true">
  5. <searchConfiguration name="No toStrings" uuid="7d07a3df-3fe8-3f60-9714-6cd79f56ae5e" text="public String $toString$() {&#10; $Statements$;&#10;}" recursive="true" caseInsensitive="true" type="JAVA" pattern_context="member">
  6. <constraint name="__context__" within="" contains="" />
  7. <constraint name="Statements" minCount="0" maxCount="2147483647" within="" contains="" />
  8. <constraint name="toString" regexp="toString" target="true" within="" contains="" />
  9. </searchConfiguration>
  10. <replaceConfiguration name="No toStrings wtih replacement" uuid="6ad09c43-eac2-3f8f-b2c3-8061201ea2ad" text="class $ClassName$ {&#10; public String toString() {&#10; $Statements$;&#10; }&#10; $OtherMembers$&#10;}" recursive="false" caseInsensitive="true" type="JAVA" pattern_context="default" reformatAccordingToStyle="true" shortenFQN="true" replacement="@ToString&#10;class $ClassName$ {&#10; $OtherMembers$&#10;}">
  11. <constraint name="__context__" within="" contains="" />
  12. <constraint name="Statements" minCount="0" maxCount="2147483647" within="" contains="" />
  13. <constraint name="ClassName" within="" contains="" />
  14. <constraint name="OtherMembers" within="" contains="" />
  15. </replaceConfiguration>
  16. </inspection_tool>
  17. </profile>
  18. </component>

展开查看全部

相关问题