我们使用Lombok,我的架构师希望我们始终使用Lombok @ToString
,而不是定制实现.
我希望IntelliJ将任何toString()
个实现标记为警告.
我该怎么做?
我使用IntelliJ旗舰版2023.3
我们使用Lombok,我的架构师希望我们始终使用Lombok @ToString
,而不是定制实现.
我希望IntelliJ将任何toString()
个实现标记为警告.
我该怎么做?
我使用IntelliJ旗舰版2023.3
你可以拿create your own inspections美元.
转到设置->;编辑器->;判断,然后点击"+"按钮:
根据您是否想要快速解决问题, Select "添加 struct 搜索判断"或"添加 struct 替换判断".
下面是一个查找其中包含toString
的类的示例,并用相同的类替换它,但删除了该方法,并添加了@ToString
注释.
查找:
class $ClassName$ {
public String toString() {
$Statements$;
}
$OtherMembers$
}
请注意,$Statements$
上有一个计数修饰符,允许0个或更多个实例
(由于这是由Structural Search提供支持的,因此public String toString()
还匹配final
、toString
等方法.)
替换为:
@lombok.ToString
class $ClassName$ {
$OtherMembers$
}
请注意,这将突出显示整个类,因为整个类都需要替换.
或者,您可以只创建find个toString
个实例.您只需找到:
public String $toString$() {
$Statements$;
}
$toString$
上有一个文本修饰符,确保其文本始终为toString
.通过这种方式,您可以将匹配目标设置为$toString$
,只突出显示toString
部分.同样,$Statements$
上有一个计数修饰符.确保将"Language"选项设置为"Java-Class Members".
最后,下面是从上述判断中导出的XML文件.您可以在判断设置页面中导入此选项.
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Some Name" />
<inspection_tool class="SSBasedInspection" enabled="true" level="WARNING" enabled_by_default="true">
<searchConfiguration name="No toStrings" uuid="7d07a3df-3fe8-3f60-9714-6cd79f56ae5e" text="public String $toString$() { $Statements$; }" recursive="true" caseInsensitive="true" type="JAVA" pattern_context="member">
<constraint name="__context__" within="" contains="" />
<constraint name="Statements" minCount="0" maxCount="2147483647" within="" contains="" />
<constraint name="toString" regexp="toString" target="true" within="" contains="" />
</searchConfiguration>
<replaceConfiguration name="No toStrings wtih replacement" uuid="6ad09c43-eac2-3f8f-b2c3-8061201ea2ad" text="class $ClassName$ { public String toString() { $Statements$; } $OtherMembers$ }" recursive="false" caseInsensitive="true" type="JAVA" pattern_context="default" reformatAccordingToStyle="true" shortenFQN="true" replacement="@ToString class $ClassName$ { $OtherMembers$ }">
<constraint name="__context__" within="" contains="" />
<constraint name="Statements" minCount="0" maxCount="2147483647" within="" contains="" />
<constraint name="ClassName" within="" contains="" />
<constraint name="OtherMembers" within="" contains="" />
</replaceConfiguration>
</inspection_tool>
</profile>
</component>