静态代码检测工具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 ”需要填空,不然邮件会发失败。

posted @ 2021-03-01 16:34  七夜i  阅读(535)  评论(0编辑  收藏  举报