搜索并替换没有大括号的if语句以包括大括号

我最近一直在使用声纳进行代码分析。 当我彻底违反钻取时,我发现许多带有if语句的java文件没有大括号(数千个地方)。 是否有一种简单的方法可以替换或添加if语句的大括号,或者我可以执行哪些步骤来完成此任务,而无需在每个文件中手动执行。

我目前正在使用intelliJ。

是否有一种简单的方法可以替换或添加if语句的大括号,或者我可以执行哪些步骤来完成此任务,而无需在每个文件中手动执行。

我不知道是否有自动执行此操作的工具。 (可能有…)但是假设存在这样的工具,我不相信这是正确的方法。

退一步,考虑为什么代码分析报告这是一个问题。 很多人(比如@pst和我)认为括号总是应该在那里,即使各种风格指南都不坚持这一点。 这有一个很好的理由……除了“它看起来很难看”。 请考虑以下示例代码段:

 if (i == 1) i++; doSomething(); while (i < 1) i++; doSomething(); 

如果你不仔细阅读,你的眼睛会欺骗你认为doSomething(); 有条件地称为...由于不正确的缩进。 它发生了。

(旁白:因为误读代码没有帮助而将某人标记为“无能为力”。如果你拼命想要解决一个停止错误并且你已经连续工作了14个小时,那么你很可能会错过这种事情并不是因为你是无能为力的。一旦你遇到过这种情况,这一课就会陷入......)

好的,现在假设你运行一个自动工具来添加大括号。 你会得到的是:

  if (i == 1) { i++; } doSomething(); while (i < 1) { i++; } doSomething(); 

它意味着与原始代码完全相同。 但是 ......如果原始代码实际上是一个错误怎么办? 如果程序员希望 doSomething()调用是有条件的,该怎么办?

简而言之,通过自动添加括号,我们模糊了原始程序员的意图,并使这些错误更难以追踪。


底线 - 我认为手动审查每一个事件是谨慎的 ......而不是仅仅自动“修复”它们。 实际上,我认为如果你没有时间或耐心手动审查它们,最好不要单独留下代码。 最好关掉警告...... IMO。

我可以重新格式化代码以使intelliJ为我做的事情,但我需要浏览所有文件并重新格式化。 是的,我可能会关闭支票,但想知道是否有一个很好的工具来完成任务。 我有一套很好的测试来检查它是否在这个过程中引入了bug。

如果您确定有一些方法可以测试不会引入错误,那么请使用IntelliJ 重新格式代码function。

只需确保您在IntelliJ中的代码样式符合您公司的政策。 否则你也会把你的风格强加给别人。

要强制括号,只需在IntelliJ的“代码样式设置”对话框中将它们标记为“ 环绕和括号”标记。

在项目视图中标记源文件夹,然后按Ctrl-Alt-L 。 弹出一个对话框,您可以在其中选择All files in directory <...>

然后按Run并查看会发生什么。 如果您不满意,请从您的VCS恢复。