在macos上配置本地静态代码审计环境需搭建sonarqube服务并完成objective-c项目分析闭环:先安装openjdk 11并配置java_home,再下载启动sonarqube(支持h2嵌入式数据库或postgresql),接着配置build-wrapper、sonarscanner及objective-c插件,最后通过xcodebuild+sonar-scanner执行扫描并在localhost:9000查看报告。
在 macos 上配置支持本地代码审计的静态扫描环境,核心是搭建 sonarqube 服务并完成 objective-c(或其他目标语言)项目的分析闭环。整个过程不依赖远程 saas 平台,所有组件运行在本地,适合小团队或个人开发者做持续质量管控。
安装 Java 11 和基础工具链
SonarQube Server 要求 Java 11(Oracle JRE 或 OpenJDK 11),Scanner 兼容 Java 8/11,推荐统一用 OpenJDK 11。使用 Homebrew 安装最稳妥:
- 运行
brew install openjdk@11,安装后执行sudo ln -sfn /opt/homebrew/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk(M 芯片路径)或对应 Intel 路径 - 验证:运行
java -version确保输出含11.x;再执行export JAVA_HOME=$(/usr/libexec/java_home -v 11)并写入 shell 配置文件(如~/.zshrc) - 同时确保已安装 Xcode Command Line Tools:
xcode-select --install,这是 build-wrapper 编译捕获的前提
部署 SonarQube Server(含数据库)
官方推荐使用自带的嵌入式数据库(H2)快速启动,但长期使用建议配 PostgreSQL。本地开发可优先选 H2 简化流程:
- 下载最新 LTS 版 SonarQube(如 10.5+),解压后进入
sonarqube/bin/macosx-universal-64/ - 直接运行
./sonar.sh start启动服务(首次启动会自动初始化 H2 数据库) - 浏览器访问
http://localhost:9000,默认账号密码为admin/admin,登录后立即修改密码 - 如需更稳定环境,可用 Homebrew 安装 PostgreSQL:
brew install postgresql,再按 SonarQube 文档配置conf/sonar.properties中的 JDBC 连接参数
配置 Objective-C 扫描专用组件
Objective-C 支持依赖 build-wrapper + SonarQube Scanner + Objective-C 插件,三者必须版本兼容(推荐匹配 SonarQube 10.x 的插件):
- 从 SonarSource 官网下载对应版本的 build-wrapper-macosx-x86(M 芯片用户注意是否提供 arm64 构建;若无,可尝试 Rosetta 运行或编译源码)
- 下载 SonarScanner CLI,解压后添加 bin 目录到
$PATH - Objective-C 插件需 license(开源版功能受限),可申请 14 天试用授权,在 Web 界面「Administration → License」中粘贴激活
- 对含 CocoaPods 的项目,需提前清理 Pods 权限干扰:运行
chmod -R 755 Pods/,避免 build-wrapper 因读取失败中断
执行本地扫描与结果查看
以 Xcode 工程为例,关键在于用 build-wrapper 包裹 clean + build 过程,生成编译数据库供分析:
- 进入项目根目录,执行:
../path/to/build-wrapper-macosx-x86 --out-dir bw-output xcodebuild -workspace YourApp.xcworkspace -scheme YourApp -sdk iphonesimulator -configuration Debug clean build - 成功后,运行 sonar-scanner:
sonar-scanner -Dsonar.projectKey=your-app-name -Dsonar.sources=. -Dsonar.cfamily.buildWrapperOutput=bw-output -Dsonar.host.url=http://localhost:9000 -Dsonar.login=your_admin_token - Token 在 Web 界面「My Account → Security」中生成;扫描完成后,刷新
http://localhost:9000即可查看代码缺陷、重复率、覆盖率等报告











