用FauxPas找到潜在Bug

Faux Pas是一个Xcode辅助工具,检查iOS或者Mac项目,找到潜在bug,以及可维护性和风格问题。提供了92条规则可供挑选,支持GUI和CLI。目前发布了beta版,提供30天试用。

Faux Pas Homepage Faux Pas Donwload

亲身试用后,发现了项目中的多处问题。一些需要手动查找的问题,在这里都得到了检查。同时也提供了代码风格的建议和一些细节的优化建议。

功能

  • 控制潜在bug
  • 查找资源文件错误
  • 查找本地化错误
  • 发现版本控制错误
  • 学习和实施最佳实践
  • 实施代码风格
  • 代码审查清单
  • 92条规则可供挑选
  • 提供GUI或者CLI
  • 在Xcode构建时运行
  • 连接外部工具,支持导出结果和自定义脚本
  • 按标签选取规则 保存在JSON配置文件中
  • 更改打开代码的编辑器

使用方法

GUI

  • 打开FauxPas
  • 选择或者排除一些规则
  • Start Checking

CLI

  • 打开FauxPas
  • 菜单栏Faux Pas > Install CLI Tools…
  • shell> fauxpas -t iCoupon check iCoupon.xcodeproj/
  • 可以输出不同格式、挑选检查规则等,参见帮助,例如查找重复资源
  •  fauxpas --onlyRules UnusedResource -o json check MyProject.xcodeproj

Xcode build时检查

  • 确保CLI安装
  • 在Xcode项目的target中新增"Run Script" build phase
  • 添加如下脚本,build时会执行FauxPas检查
  • [[ ${FAUXPAS_SKIP} == 1 ]] && exit 0
    
     FAUXPAS_PATH="/usr/local/bin/fauxpas"
     if [[ -f "${FAUXPAS_PATH}" ]]; then
       "${FAUXPAS_PATH}" check-xcode
     else
       echo "warning: Faux Pas was not found at '${FAUXPAS_PATH}'"
     fi

建议不使用这种方式,会额外增加build时间。

Xcode中手动执行

  • 确保CLI安装
  • 项目中创建Aggregate类型target
  • 在该target下新增"Run Script" build phase
  • 添加如下脚本,运行该target时会执行FauxPas检查
  •  /usr/local/bin/fauxpas -o xcode check "PROJECT_NAME.xcodeproj"

导出结果

  • GUI中点击Export Diagnostics,选择格式
  • CLI下-o参数,可选human、json、plist、xcode
  • 导出结果可以用其他工具处理

实战

使用GUI扫描了项目,发现了许多不少有价值的问题,值得我们学习。

  • 编译参数的有益建议,比如-DNDEBUG
  • 多处图片缺少和图片重复
  • 非retian与retina图尺寸不是2倍
  • 没有前缀或者前缀与SDK冲突,建议至少三字符长度
  • Retain Delegate
  • 重载或者调用一些限制的系统方法
  • 缺少获取授权的描述
  • Category方法冲突
  • 未使用的Error值,建议不关心Error时参数传入NULL
  • 设置delegate或者datasource为self时需要在dealloc中置为空
  • 对指针和0做比较
  • obj ? obj : other obj将会评估2次。而obj ?: other会评估一次
  • 界面字符串缺少本地化,我们的项目实际不需要
  • 修改传入参数的值
  • model类包含的对象的@property建议用copy,防止非setter的修改
  • pch中引用过的头文件再次引用多余
  • VCS建议,例如建议Xcode workspace data不忽略
  • 在init or dealloc不要使用setter。
  • 不和习惯的getter。使用something而非getSomething
  • 旧语法,例如+[NSNumber numberWithFloat:], -[NSDictionary objectForKey:]。建议转换为现代语法Edit → Refactor → Convert To Modern Objective-C Syntax
时间: 2024-09-12 07:29:50

用FauxPas找到潜在Bug的相关文章

你为什么没找到那个bug?

作为一名测试人员我知道我不可能找到每一个错误.但即便如此,当一个问题从你眼前溜过,跑向生产这一本垒时,我经常会问自己,我怎么就漏过了这个问题呢?有什么是我可以做得更好的?我能做些什么来防止未来这种情况的再次发生? 这些都是很好的问题,但更实际的来说,我们需要认识到一点,错误往往会偷偷溜过而未被我们发现.有一些方法可以帮助我们减少这些未被发现的bug数量,但我明白没有任何办法能够保证产品完全无缺陷. 当我刚开始做测试时我总是对别人在我测试过的产品的部分发现bug非常敏感.我常听到办公室回响着可怕的

小脑袋竞价推广助手教你怎么找到潜在用户

不管你从事推销业务有多长时刻,都会记住开始几周极具挑战性.你会发现你的商品和效能比你能够幻想到的更 复杂.或许你还不知怎样推销,但现已知道只要能广泛地与对该商品有爱好的人进行扳话,迟早会拿回一份订单或把其间的一个商品从你的车上.皮箱和仓库里推销出去,而你会因而取得报酬. &http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 但是,找到 合适的客户并不老是很简单,因而,咱们要把握寻觅潜在客户的艺术.   寻觅潜在客户是为

FauxPas试用时间破解

以下内容仅用于学习逆向工程.用到的工具有Hopper,lldb. FauxPas是一款非常不错的项目检查工具.之前写过用FauxPas找到潜在Bug,介绍了FauxPas的功能.在使用过期后,尝试hack一下. 绕过证书窗口 使用的是1.4版本的FauxPas,先拖入Hopper,找到方法-[XAAppDelegate applicationDidFinishLaunching:].读汇编代码到00000001000043cc时,可以看到一个条件跳转,后面的方法有 @selector(enter

bug检查工具——FindBugs

         Findbugs是一个静态分析工具,它检查类或者JAR文件,将字节码与一组缺陷模式进行对比以发现可能的问题.Findbugs自带检测器,其中有60余种Bad practice,80余种Correctness,1种Internationalization,12种Malicious code vulnerability,27种Multithreadedcorrectness,23种Performance,43种Dodgy.   安装地址:    1.      在线安装 安装地址:

你《提问的智慧+如何有效地报告Bug》了吗?

http://iamin.blogdriver.com/iamin/1204404.html  你<提问的智慧+如何有效地报告Bug>了吗?- -                                          http://www.linuxforum.net/doc/smartq-grand.html 提问的智慧 - How To Ask Questions The Smart Way 译者 D.H.Grand[本站会员] How To Ask Questions The

Apple Music出现bug怎么办?

  和iOS不同,桌面版的Apple Music被整合在iTunes当中.在iTunes中发现了一个导致Apple Music播放出现问题的 bug,该问题可能和音轨的时长短于 60 秒有关.Apple Music出现bug?Apple Music出现bug怎么办?下面一起和小编来看看吧! 具体来说,当 Apple Music 音轨时长短于 60 秒并处于完整的播放状态(没有跳过播放),专辑或播放列表的下一曲便会播放失败,并一直处于无限缓冲的状态.通过后端的文件转换检查工具 fswatch 找到

程序员快速处理代码bug的5大技巧

不管是项目团队出现了bug,还是前辈留下的代码出现bug,这个锅反正程序员是背定了. 不少的程序员被代码虐杀的痛苦万分.但从积极的方面来看,代码bug也是绝佳的学习机会. 处理bug能力重要性不言而喻,通常也是面试的考察范围. 下面w3cschool给小伙伴们分享5个处理bug技巧: 0.二分法定位 二分法定位是比较常用的bug处理技巧. 通过二分法,即把程序逻辑一点点注释掉,不断地进行排错,完全能把问题可能出现的范围缩小. 二分调试大法每次遇到棘手的bug,基本上都能解决,堪称是程序行走代码江

通过SketchRNN、PCA和t-SNE从Google QuickDraw数据集中显示矢量图的潜在空间|附源码

首发地址:https://yq.aliyun.com/articles/98593 更多深度文章,请关注:https://yq.aliyun.com/cloud 本文是作者最近发布的Google QuickDraw数据集一系列笔记中的第三部分,使用的最近发布的SketchRNN模型.下面介绍QuickDraw数据集及SketchRNN模型.        QuickDraw数据集是由世界各地1500多万人参与的"快速绘画" AI实验后收集数百万幅图画建成,要求参与者在20秒内绘制出属于

vc++如何查找和解决bug

问题描述 vc++如何查找和解决bug 工程有若干个dll,一般错误能复现或能单步调试的问题还能解决,但现在总有异常退出的问题,系统日志里看不出什么,生成dump调试,代码总在反汇编代码,看不懂,调用堆栈也往往是在不熟悉的模块里,没法查看,请问有没有什么规范的流程或工具,能快速定位不好找到的bug,或者有什么书可以推荐一下. 解决方案 你的dump调试的时候,有添加自己编译模块的pdb没,这样才能比较好定位到对应的代码 windbg本身是一个需要经验的工作,所以只能多积累.才容易找到问题 还有一