作者 kyson老师 2018.04.04 15:01:00 iOS质量保障工具集 评论:2 每个App自开发到上线需要经历多个阶段,每个阶段都要把握质量。作为iOS开发者除了从代码规范入手,我们也要从其他多方面提升质量。本文就介绍几款可以提升iOS质量开发的工具。 ### git-flow 由于git管理代码版本的灵活性有时会导致版本冲突、代码混乱等问题。为了更好的管理代码,大部分公司都推崇git flow的工作流程,[git-flow](https://github.com/petervanderdoes/gitflow-avh)就是为了实现这套流程的一系列git扩展命令。  `git-flow` 并不是要替代`git`,也没有为`git`扩展任何新功能,它仅仅是非常聪明有效地把标准的`git`命令用脚本组合了起来。我曾经在github上开源过一些库以及源码,发现在编写新功能代码时,创建feature分支是非常明智且有高回报的一种操作,一旦你习惯于区分master、develop、feature等分支后,会让你的生产力大大提高。另外,`Source tree`等可视化版本管理工具对`git flow`也支持得很好。 ### MLeaksFinder Xcode自带的Instrument 的 Leaks / Allocations 存在各种问题和不便,主要体现在: - 对App的内存泄露监控不完全。由苹果开发者文档我们知道,App的内存分三类:Leaked memory、Abandoned memory、Cached memory。其中 Leaked memory 和 Abandoned memory 都属于应该释放而没释放的内存,都是内存泄露,而 Leaks 工具只负责检测 Leaked memory,而不管 Abandoned memory。在 MRC 时代 Leaked memory 很常见,因为很容易忘了调用 release,但在 ARC 时代更常见的内存泄露是循环引用导致的 Abandoned memory,Leaks 工具查不出这类内存泄露,应用有限。 - 监测内存便携性不高。首先,你得打开 Leaks/Allocations;其次,你得一个个场景去重复的操作。 - 监测实时性不强。 腾讯推出的[MLeaksFinder](https://github.com/Tencent/MLeaksFinder)很好的解决了上述问题。对于内存没有释放的情况,`MLeaksFinder`会及时的弹框加以提醒。  笔者:如果大家在项目中使用ReactiveCocoa,那这款工具肯定是必不可少的。 ### FLEX 以前Xcode不能查看App的UI层级结构,大家都是用Reveal工具进行查看,但现在Xcode对这个功能的支持也并不是特别完善,偶尔会引起Xcode的崩溃。  [FLEX](https://github.com/Flipboard/FLEX)是由Flipboard团队开发的一款应用内Debug工具,可以很方便的查看和调整UI的层级关系。另外其集成的`HTTPStub`还可以监控App的网络请求,是一款非常强大的工具。 ### Faux Pas  Faux Pas是一个Xcode辅助工具,检查iOS或者Mac项目,找到潜在bug,以及可维护性和风格问题。提供了92条规则可供挑选,支持GUI和CLI。笔者觉得比较好用的功能有 - 查找资源文件错误 项目大了以后Nib文件经常会添加删除图片,并且很难追踪文件是否在代码或Nib文件中引用。`Faux Pas`能帮我们找到任何一个资源文件引用问题。 - 代码风格的管理 团队来新人后对代码风格的管理会变得有一定难度,使用`Faux Pas`会给出苹果文档给出的编码风格。 `Faux Pas`的强大之处在于它在列举的潜在Bug还附带了正确编写建议,点击问题可以迅速定位到出现问题的代码的文件以及行数,非常适合作为App将要提交审核前的最后一次代码检查。 ### OCLint OCLint是一款静态代码分析器,可用于分析C, C++ 和 Objective-C代码中隐含的问题: - 可能出现的 bug:if/else/try/catch 等条件语句空的声明 - 未使用的代码: 未使用的局部变量以及参数 - 复杂的代码逻辑:高循环复杂度、NP 复杂度、 高 NCSS - 冗余代码:冗余的条件表达式以及无效的括号 - 代码嗅觉:方法代码行过长或者参数过多 - 不好的代码习惯:颠倒的逻辑和参数的错误分配 … 静态代码分析工具是侦测编译器不可见的潜在缺陷的关键技术。OCLint 具有以下先进的代码检验特性: 依靠源码的抽象语法树来提高分析的精确度以及效率,误报率低 - 动态规则 - 灵活可扩展的配置,确保用户可以自定义分析行为 - 命令行式的调用使持续集成成为可能 由于OCLint会以报告(HTML等形式)的形式展示出来,因此很适合团队中每月一次的质量报告,由于OCLint主题相对来说比较庞大,我专门写了篇文章来讲解,[点击这里获取](http://kyson.cn/index.php/archives/114/)。 ### 总结 本文介绍了一些提升App质量的工具,贯穿于编码前中后期等阶段,希望对iOS开发人员有一定帮助。 ### 参考 [git-flow 备忘清单](http://danielkummer.github.io/git-flow-cheatsheet/index.zh_CN.html) [MLeaksFinder 新特性](https://wereadteam.github.io/2016/07/20/MLeaksFinder2/) [用FauxPas找到潜在Bug](https://yq.aliyun.com/articles/27034) >本文地址:http://kyson.cn/index.php/archives/110/ 转载请保留出处 赏 标签:none
Faux Pas,之前用过,但是现在项目采用了组件化,很多模块都是用pods来管理,发现这样之后在主工程里面扫描,基本都扫描不出问题来
不知道作者您这边有没有什么方案建议,谢谢
这个问题没有什么特别的解决方案,如果你的每个pod都是一个项目,那就对每个pod进行Faux Pas好了,貌似是没有什么特别的解决方案的