在我的公司,我们有编码样式,包括总是使用带有if语句的花括号,所以:
// instead of this...
if (condition)
doThis();
// we want this
if (condition) {
doThis();
}
现在不是每个人都从一开始就这样做了,我们想要清理并使代码更加一致。是否有办法(最好使用PHPStorm)找到所有无括号的if语句?
答案 0 :(得分:1)
您可以尝试使用正则表达式搜索,如下所示:
编辑>查找>在路径中查找
搜索字符串if\s*\(.+\)[^{\S]*\n
,并确保正则表达式复选框处于活动状态。
这种技术并不完美,因为它会对跨越多条线的条件产生误报(这样它们的开口支撑在第2,3行等等)。但它可以准确地区分简单的单行条件,就像你在问题中提供的那样。
答案 1 :(得分:1)
如果你安装了python,你可以运行以下程序,我为你写的,在你的代码中找到所有这些行:(在python27上测试)
以:
python bracketless.py yourfile
运行
import sys,re
fname = sys.argv[1]
with open(fname) as f:
if_block = False
lnum = 0
for i,line in enumerate(f):
if (re.search(r'\bif\b', line)) and not '{' in line:
if_block = True
lnum = i+1
if ';' in line:
print 'Found bracketless if in line {}'.format(lnum)
if_block = False
elif if_block:
if '{' in line:
if_block = False
elif ';' in line:
print 'Found bracketless if in line {}'.format(lnum)
if_block = False
答案 2 :(得分:1)
您也可以使用PhpStorm内置的代码样式工具。如果你去File - >设置然后转到编辑器 - >代码风格 - > PHP - > Wrapping和Braces你可以为if / for / foreach / while / do ...设置强制括号,而不是总是'。在重新格式化代码时,将自动添加大括号。
然而,这种方法显然具有副作用"同时应用所有其他格式规则。这可能不是你想要的。