iOS开发-OCLint的安装和使⽤(命令⾏)
关于OCLint
OCLint是⼀个静态代码分析⼯具,提⾼质量和减少缺陷通过检查C 、C++ 和Objective-C 代码和寻潜在的问题
可能的缺陷 - 空的if / else / try / catch / finally语句
未使⽤的代码 - 未使⽤的局部变量和参数
复杂的代码 - 很⾼的圈复杂度,NPath复杂性和太⾼的NCSS
代码异味 - 长⽅法和参数列表
长⽅法和参数列表不好的实践——倒逻辑和参数重新分配
静态代码分析是⼀个来检测对于编译不可见的缺陷的关键技术。
安装步骤
1、如果没有安装homebrew,就去官⽹按照教程安装⼀下
2、使⽤homebrew安装OCLint和xcpretty
使⽤第三⽅的软件会⽐使⽤xcodebuild⽅便些
最新xctool的build⽅法已经弃⽤,不能配合OCLint使⽤,推荐使⽤xcpretty
// 安装OCLint
brew tap oclint/formulae
brew install oclint
// 安装xcpretty
gem install xcpretty
// 以后可能需要更新
brew update
brew upgrade oclint
3、使⽤
在终端进⼊项⽬⽬录,然后替换workspace的名字和scheme的名字,将修改好的命令粘贴到终端执⾏,等待命令执⾏完毕
workspace # 替换workspace的名字
myscheme=haha # 替换scheme的名字
xcodebuild -workspace $myworkspace -scheme $myscheme clean&&
xcodebuild -workspace $myworkspace -scheme $myscheme \
-configuration Debug \
| xcpretty -r json-compilation-database -o compile_commands.json&&
oclint-json-compilation-database -e Pods -- \
-report-type html -o oclint_result.html \
-rc LONG_LINE=200 \
-max-priority-1=100000 \
-max-priority-2=100000 \
-max-priority-3=100000; \
rm compile_commands.json;
if [ -f ./oclint_result.html ]; then echo '-----分析完毕-----'
else echo "-----分析失败-----"; fi
中间可能会在Build Succeeded后⾯等待⼀段时间,这是因为OCLint在分析⽂件
等待命令执⾏完成,终端会打印出—–分析完毕—–字样,
打开项⽬⽬录,会看到⽬录下会多出⼀个oclint_result.html的⽂件
如果没有使⽤cocoapods,则去掉workspace、-workspace myworkspace,然
后再在终端执⾏ 另外可以⾃⼰建⼀个xx.sh的⽂件,将上⾯代码粘贴进去,每次在命令⾏进⼊xx.sh所在⽬录执⾏bash xx.sh就可以了
有时候会遇到问题:
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools 解决⽅法:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
try catch的使用方法有时候编译不通过报错:
解决⽅案
解决了,Podfile添加hook:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['COMPILER_INDEX_STORE_ENABLE'] = "NO"
end
end
end
同时,pod的主⼯程也需要设置COMPILER_INDEX_STORE_ENABLE这个值为NO
4、查看oclint_result.html⽂件
OCLint的分析结果:
优先级的级别是从Priority 1, Priority 2, Priority 3 依次降低的
Total Files 总⽂件数
Files with Violations 违规⽂件数
Compiler Warnings 表⽰项⽬中的警告⚠
Compiler Errors 表⽰编译错误
Location 表⽰警告的位置
报告中的描述其实⾮常清晰,⼀般到代码位置,结合代码理解下,⾃⼰基本都能明⽩了
5、⾃定义规则
⼀些常⽤规则的注释
# --命名
# 变量名字最长字节
#-rc=LONG_VARIABLE_NAME=20 \
# 变量名字最短字节
#-disable-rule ShortVariableName \
# --size
# 圈复杂度
#-re=CYCLOMATIC_COMPLEXITY=10 \ # 每个类最⾏数
#-rc=LONG_CLASS=700 \
# 每⾏字节数量
#-rc=LONG_LINE=200 \
# 每个⽅法⾏数
#-rc=LONG_METHOD=80 \
# 忽略注释后括号后的有效代码⾏数
#-rc=NCSS_METHOD=40 \
# 嵌套深度
#-rc=NESTED_BLOCK_DEPTH=5 \
# 字段数量
#-rc=TOO_MANY_FIELDS=20 \
# ⽅法数量
#-rc=TOO_MANY_METHODS=30 \
# ⽅法参数
#-rc=TOO_MANY_PARAMETERS=6

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。