zoukankan      html  css  js  c++  java
  • 静态代码检测工具Infer的部署

    背景:项目代码之前在静态检测这方面一般使用开发软件自带的Analyze功能。另外,依赖于大家的相互review机制保障代码的质量。开发软件自身的Analyze功能存在一定的局限性以及需要手动化,为了提升静态检测的自动化和更多的case点。调研了一下三方的检测工具,且考虑到iOS和android双平台,可维护性等,最后选择了facebook的Infer工具。

    以下说明部署的环境:

    • mac mini
    • jenkins
    • Xcode以及Command Line Tools环境
    • android sdk
    • git项目库
    • python

    遇到的坑以及解决方案:

    • brew install infer 方式安装的版本太老,运行会报错。
      解决方案:去github上下载最新的v1.0.0版本,解压,配置环境变量。

    • 执行检测命令出现一堆库授权问题,报错。
      解决方案:信任所有的库,当然其中libgmp 以及libsqlite那两个库可以移除不授权,不影响使用,其它都要授权。

    • 执行检测命令出现:“Uncaught Internal Error: (Unix.Unix_error "No such file or directory" connect "((addr (ADDR_UNIX sqlite_write_socket)))")”
      解决方案:因为我们项目是通过自己编写的shell脚本实现各个库的编译以及出包,指定的是Legacy Build System(使用New Build System会报错)。为了解决以上问题,单独建了一个InferBuild,指定使用New Build System,即解决问题。 说白了,Infer 必须使用New Build System(mac OS10.15.x)。

    • 出现报错“mac OS file system sandbox blocked open()”。
      解决方案:Infer环境问题,重新挪了一个文件夹路径解决。

    • Infer的二次编译
      解决方案:需要加上 -- reactive

    • android遇到的问题是mac上android sdk版本与项目使用的sdk版本不一致的问题,退回版本一致即可.

    • 关于jenkins的配置,以及自定义获取report.txt邮件等相关配置,以及规则不做多说。唯一注意的是,“ Project From ”需要填空,不然邮件会发失败。

    解决问题的能力很关键~(iOS开发交流群:219926126)
  • 相关阅读:
    第28月第23天 lineFragmentPadding
    第28月第22天 iOS动态库
    第28月第21天 记事本Unicode 游戏编程中的人工智能技术
    第28月第11天 vim -b
    第28月第10天 iOS动态库
    第28月第8天
    第28月第7天 本地摄像头方向
    第28月第5天 uibutton交换方法
    第28月第4天 __bridge_transfer
    python __getattr__ __setattr__
  • 原文地址:https://www.cnblogs.com/qiyer/p/14464462.html
Copyright © 2011-2022 走看看