V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
Elfe
V2EX  ›  iDev

通常大家都怎么对待编译 warning 和 Analyze 报告的错误?

  •  
  •   Elfe · 2012-06-03 23:16:39 +08:00 · 4327 次点击
    这是一个创建于 4548 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我刚开始参与的这个项目,有100个编译warning和97个Analyze错误。目前我收到一个很没头绪的任务:来,把这些不能稳定重现的闪退问题都来研究一下吧。
    晕。我一没有repro steps,二不熟产品代码,三就连iPhone开发也是新手,给我这种任务,也太瞧得起人了吧。
    按以前的习惯,肯定是要把所有的编译和Analyze错误都给清空再说。不过,不想贸贸然对别人的代码进行很多改动,所以想先打听一下:在iOS开发中,大家都把这些警告、错误当回事么?
    另外就是:估摸着这些闪退就是某些对象被提前释放了。在iOS开发中,除了打开Zombie Objects外,还有什么有效的手段或工具么?
    12 条回复    1970-01-01 08:00:00 +08:00
    Livid
        1
    Livid  
    MOD
       2012-06-03 23:22:30 +08:00
    起步时间越早,规模越大的 codebase,在最新版本的 Xcode 中的各种 warning 就会越多⋯⋯

    如果不会造成 crash 的话,还是可以安全忽略的。
    Elfe
        2
    Elfe  
    OP
       2012-06-03 23:27:46 +08:00
    @Livid 那对于 Analyze 报告的问题呢?
    目测,大量 warning 还是无关紧要的,Analyze 上的可能有些确实是 crash 的元凶。
    另:有没有 suppress 某一特定 warning 的方法?这样就可以把那些安全的确实有理的 warning 给压制了让它们别在警告栏中出现。
    Livid
        3
    Livid  
    MOD
       2012-06-04 00:20:10 +08:00   ❤️ 1
    @Elfe Analyze 报告的 potential leak 确实需要看看,有的时候确实是 bug。
    sharkli
        4
    sharkli  
       2012-06-04 08:17:30 +08:00   ❤️ 1
    崩溃的原因大多是收到内存warnning没有处理。你使用模拟器的模拟内存警告,把每个界面测试一下。收到内存警告如何处理,查下文档。个人经验仅供参考。
    adow
        5
    adow  
       2012-06-04 10:30:06 +08:00   ❤️ 1
    如果清楚的知道warning 的原因有些是可以忽略,analyze里很多都是potential leak确实需要仔细分析,在内存警告的时候很有可能就爆发出来了。
    shinyzhu
        6
    shinyzhu  
       2012-06-04 11:07:51 +08:00
    我有强迫症

    写好一个代码块/功能之后会主动跑一下Analyze,有提示就解决掉。

    到后来基本上没有Analyze的警告了。
    leafduo
        7
    leafduo  
       2012-06-04 14:00:13 +08:00
    我是废死力也要干掉全部警告的那种。

    最近一个 LaTeX 警告总搞不定让我很抑郁 = =
    xuming
        8
    xuming  
       2012-06-04 14:04:36 +08:00   ❤️ 1
    自己写的代码里的warning和error肯定要清除的,第三方的代码,就看情况了,一般warning问题不大的。
    Elfe
        9
    Elfe  
    OP
       2012-06-04 22:53:39 +08:00
    @adow iOS 代码里如何忽略某一具体警告?我是指忽略某一特定规则针对某一行/段特定代码的警告。同样这条规则在其它代码中的不要 suppress,同一段代码中其它规则检查的警告也不要 suppress。
    adow
        10
    adow  
       2012-06-05 11:21:53 +08:00
    @Elfe 我不知道是否有特定规则,比如在我的一个不大的项目里,有两处warning,有一处是因为我调用了UITextView的一个非公开的styleString方法,编译的时候提示'UITextView' may not respond to 'styleString',我想是因为styleString非公开的所以才提示这个,但是运行的时候他起作用了,也通过了app store审核。还有一处是我在实现单实例模式时候时在release方法中写成了:
    -(void)release{
    return;
    }
    他希望我先调用一下[super release],所以给我warning.
    我的意思是,我知道这两处warning的原因,也知道会产生的后果,所以我可以忽略。
    我的项目中还有两处analyze的警告,都是Potential leak of an object allocated,他们在我使用的第三方的MTStatusBarOverlay.m里,我不想去改他,我在instruments里运行了一段时间也没看到那个泄露,所以我也忽略了他。
    Elfe
        11
    Elfe  
    OP
       2012-06-05 13:34:26 +08:00   ❤️ 1
    @adow 我的意思是让可以安全忽略的警告不要在左边窗口中显示出来。
    在C#中是这样的:对于可以忽略的警告,可以在方法/属性/类/全局的范围添加一句
    [SuppressMessage rule="[the rule ID e.g. CA001]" justification="[the reason why choose to ignore the error here]"]
    这样在编译的时候我就不会再看到这条错误。
    这么做有两个好处:
    1,我可以强制 treat warning as error,从而从流程提升整个团队代码的质量
    2,对于那些可以安全忽视的警告,我只需要思考一次就够。不至于在今后每次编译的时候我都要检查一下是不是多了几个警告,还得仔细找出多了哪几个
    adow
        12
    adow  
       2012-06-05 14:29:05 +08:00
    原来还可以这样,我从来没想到过
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1085 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:16 · PVG 03:16 · LAX 11:16 · JFK 14:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.