使用 Infer 进行代码扫描

作者: 每天多一点 | 来源:发表于2016-05-20 10:08 被阅读1235次

    概要

    Infer 是Facebook的一个开源代码扫描工具. 目前在移动端, Infer 是比较好用的一个检查空对象引用的静态扫描工具.

    安装

    如果使用 Mac 的话, 可以忽略 github 上的说明. 直接使用 brew安装

    brew install infer 
    

    使用

    • Android工程
    infer -- gradle build
    
    • iOS 工程
      前提是确保命令行可以编译通过
    xcodebuild -target <Target Name> \
    -configuration <Build Configuration> \
    -scheme <Schema Name>
    

    TargetName, Build Configuration, SchemaName都可以通过

    xcodebuild -list 
    

    查找到
    另外,

    xcodebuild -showsdks
    

    可以查到支持的sdk

    如果命令行可以编译通过, 只需要前面加上 infer -- 就可以了

    infer -- xcodebuild -target <Target Name> -configuration <Build Configuration> -scheme <Schema Name>
    

    查看报告

    结果会打印在终端的输出, 也可以通过 infer-out 路径下的文件来查看

    常见的问题

    • 工程的绝对路径中, 请不要含有中文字符, 否则会有类似报错
    ...
    File "/usr/local/Cellar/infer/0.8.1/libexec/infer/lib/python/inferlib/analyze.py", line 222, in run_command
        raise e
    
    • Infer needs a working compilation command to run
      infer运行后会发现类似如下的输出, 最后发现不了问题
    *** ERROR: Failed to execute compilation command. Output:
    clang: error: cannot specify -o when generating multiple output files
    *** Infer needs a working compilation command to run.
    

    在github上可以发现很多人遇到了同样的问题, 主要原因是因为
    issue的详情

    相关文章

      网友评论

      • e2cd15586a06:楼主,不知道使用infer扫描ios代码时能不能设置忽略一些文件或者忽略一些类型的infer扫描错误(比如:扫描时忽略空指针问题)?
        每天多一点:infer支持很多命令行的参数. 可以通过 infer --help 进行查看. 文件过滤和忽略类型都是有的.

      本文标题:使用 Infer 进行代码扫描

      本文链接:https://www.haomeiwen.com/subject/yedgrttx.html