Created
October 27, 2013 16:04
-
-
Save fly2never/7184269 to your computer and use it in GitHub Desktop.
一些OC的代码风格检查
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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