我可以在团队代码中找到所有无卷曲的if语句吗?

时间:2015-07-09 11:27:19

标签: if-statement phpstorm curly-braces

在我的公司,我们有编码样式,包括总是使用带有if语句的花括号,所以:

// instead of this...
if (condition)
  doThis();

// we want this
if (condition) {
  doThis();
}

现在不是每个人都从一开始就这样做了,我们想要清理并使代码更加一致。是否有办法(最好使用PHPStorm)找到所有无括号的if语句?

3 个答案:

答案 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 ...设置强制括号,而不是总是'。在重新格式化代码时,将自动添加大括号。

然而,这种方法显然具有副作用"同时应用所有其他格式规则。这可能不是你想要的。