Skip to content

Instantly share code, notes, and snippets.

@fly2never
Created October 27, 2013 16:04
Show Gist options
  • Save fly2never/7184269 to your computer and use it in GitHub Desktop.
Save fly2never/7184269 to your computer and use it in GitHub Desktop.
一些OC的代码风格检查
1. \{[\n]{2,} 或 [\n]{2,}} 大括号周围空行限制 正则检查 正则替换 替换成\{\n \n\}
2. [\n]{4,} 过多空白行 正则检查 正则替换 \n\n\n
3. 行尾空格检查 [\t]+$
4. (=@|=[a-zA-Z0-9]|[a-zA-Z0-9]=) 等号旁边必须带空格 脚本检查 可跳过
5. 左大括号难以用一个正则表达式来判断 \S+ *\{\n
6. 右大括号难以用一个正则表达式来判断 \S+ *\}\n
7. 代码行长度计算 ^(?=.{121})(.*[^0-9a-zA-Z].*)$ 脚本检查 不可跳过
8. (if|while|for|switch|@property)\( 脚本检查 可跳过
9. ^\s*.*\}[ ]+else.* else位置判断 脚本检查,不可跳过
10. \s+\) \(\s+ 圆括号两边不能有空格
11. 避免使用\t, 用" "替代
12. \][a-zA-Z0-9] 方法链式调用必须带空格
13. ^( ){24,}(if |for ) 深层的if,for嵌套 直接判断else
14. \S+(\|\||&&|<<|>>|\-=|\+=|\*=|/=|!=|==|<=|>=) 操作符左边必须带空格
15. (\|\||&&|<<|>>|\-=|\+=|\*=|/=|!=|==|<=|>=)\S+ 操作符右边必须带空格
16. 非注释的中文字符 ^(?!.*//).*[\u4e00-\u9fa5].*$
17. //后面加空格 搜索^(//)([^ \n\t/-]) 替换$1 $2
18. 检查if for 后面有没有{ 检查
(if|for)\([^()]+\)\s*\n\s*[^{\s/]
19. 查找if else后面没有{
20. if (xxx == YES) 查找
[^\]] == YES\)
21. 换行的if判断
if \([^)]+\)(\s|&|\|)*\n\s*[^{/\s]
22. 含中文的字符串 @".*[^\x00-\xff].*"
23. 方法行数统计 此处为统计100行 ^(-|\+).*\n\{\n(\n|[^}\n][^\n]*\n){100,}\}\n$
24. 判断过多参数 (-|\+) \([^)]*\)[^{;]*(\n[^{;]*){3,};\n$ 仅统计h文件.仅统计多行定义.
25. 判断过多参数 (-|\+) \([^)]*\)[^{;]*(\n[^{;]*){3,}\n\{$ 仅统计m文件.仅统计多行定义.
26. 搜索方法之间是否缺少空行 (\})\n((-|\+) \() 或者 (\})\n(#) 替换带$1\n\n$2
27. 检查是否有大写变量 self\.[A-Z]+ 或 \s+_[A-Z]+ 或 \*[A-Z]+ or \[_[A-Z]+
28. 检查属性名是否过长 ^@property \([^)]*\) \b[a-zA-Z0-9]+\b \*?\b[a-zA-Z0-9]{20,}\b;$
29. 检查是否有大写方法名 ^(-|\+) \([^)]+\)[A-Z]
30. 不带类型的enum检查 typedef enum\s+\n\{\n
31. magic number :[1-9]\d* 或 (<|>|=)= [1-9]\d*
32. 类型转换检查 = \([a-zA-Z]+\b \*\) 或 = \([a-zA-Z]+\b\)
33. 检测m文件中的私有属性是不是以m打头的并且第二个字母大写
1. ^@property\s\(.*\)\s[a-zA-Z_<>]+\s\*?[^m\*].*$
2. ^@property\s\(.*\)\s[a-zA-Z_<>]+\s\*?m[a-z]+.*$
34. LLVM4新语法检测
1. @synthesize
2. ^(-|\+) \([^)]*\).*;\n in m file. 检测m文件中有没有多余的方法声明
3. typedef enum
4. 下标
1. [NSNumber
2. [NSString stringWithUTF8String
3. [NSArray alloc] initWithObjects
4. [NSDictionary dictionaryWithObjects
5. objectAtIndex:
6. replaceObjectAtIndex:
7. objectForKey:
8. setObject:newObj forKey:k2
idea中正则表达式占位符
(xxxx)
$1 匹配括号内的内容
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment