修復(fù)xcode 11下OCLint分析失敗

homebrew當(dāng)前可用最高版本為0.13版本

  • $ oclint --version

    LLVM (http://llvm.org/):
      LLVM version 5.0.0svn-r313528
      Optimized build.
      Default target: x86_64-apple-darwin19.4.0
      Host CPU: skylake
    
      OCLint (http://oclint.org/):
      OCLint version 0.13.
      Built Sep 18 2017 (08:58:40).
    
  • 在這之后, 其實還有0.13.1、0.140.15版本, 之所以要升級OCLint版本:
    issue547 ,
    upgrade llvm 9.0 to resolve xcode11 build's issue
    0.140.15目前只能通過編譯安裝

編譯安裝過程簡介

一 通過homebrew安裝cmakeNinja兩個編譯工具

$ brew install cmake ninja

二 編譯安裝OCLint

  1. Clone OCLint SourceCode

  2. cdoclint-scripts路徑下

  3. 執(zhí)行./make, 成功之后會出現(xiàn)build文件夾, oclint-release就是編譯成功的oclint工具

  4. 設(shè)置oclint工具的環(huán)境變量:

    • 添加環(huán)境

      OCLint_PATH=換成你存放的實際路徑/oclint/build/oclint-release
      export PATH=$OCLint_PATH/bin:$PATH
      
    • 更新環(huán)境

      執(zhí)行source ~/.zshrc
      這里我用的是zsh如果你使用系統(tǒng)的終端則執(zhí)行 source .bash_profile

    • bin中的全部文件復(fù)制到/usr/local/bin//usr/local/lib

      cp 換成你存放的實際路徑/oclint-0.15/build/oclint-release/bin/oclint* /usr/local/bin/
      sudo cp -rp 換成你存放的實際路徑/oclint-0.15/build/oclint-release/lib/* /usr/local/lib/
      cp -rp 換成你存放的實際路徑/oclint-0.15/build/oclint-release/include/* /usr/local/include/
      
  5. 驗證OCLint安裝成功, 執(zhí)行$ oclint --version

    OCLint (http://oclint.org/):
    OCLint version 0.15.
    Built Sep  2 2020 (12:16:58).
    

OCLint提供的參考資料

失敗分析

在今年4月份時首次遇到這個問題, 當(dāng)時也嘗試過本地編譯0.15版本, 但當(dāng)時以失敗告終后暫時將問題擱置, 也在幻想著
Ryuichi Laboratories沒準(zhǔn)后面就直接發(fā)布新版本到homebrew

再次回過來處理這個問題發(fā)現(xiàn)情況依舊, 對我產(chǎn)生迷惑的一點(diǎn)是重寫的一個老項目是基于xcode 11新建的工程, 而原來的老項目是16年創(chuàng)建的, 在OCLint 0.13.0下, 一個沒有報錯, 一個沒成功過, 也讓我無法確認(rèn)是否是LLVM版本過低導(dǎo)致. 所以這一次仍然花了些時間在OCLint 0.13.0版本上進(jìn)行調(diào)試.

最終無奈, 再次考慮升級到0.15版本, 翻看了OCLintissues和提交記錄, 2019-10-22日更新下修復(fù)了xcode 11的問題

OCLint官方的介紹資料還是很詳細(xì)的, 因為時間有點(diǎn)久了, 自己并不是很確認(rèn)第一次升級0.15的時候是否嚴(yán)格按照官方資料來復(fù)制文件到對應(yīng)目錄的, 所以當(dāng)時沒有解決這個問題

第一次應(yīng)該是參考了這篇文章:參考鏈接, 這里的后兩步的cp我換成了ln, 其實我看了下OCLint 0.13通過homebrew安裝后, 也應(yīng)該是鏈接過去的, 我們的構(gòu)建機(jī)OCLintusr/local/lib/路徑下可以看到oclintclang文件夾, 通過右鍵顯示原身,會跳轉(zhuǎn)到實際路徑是/usr/local/Cellar/oclint/0.13, 所以很有可能是這三個步驟中的文件夾名稱, /*我某一步的時候缺少了或是錯了

0.15.0 資源文件分享

如果你本地沒有CMakeNinja兩個編譯環(huán)境, 并且安裝失敗或者是CMake編譯階段頻繁失敗, 可以使用我提供的編譯好的0.15.0版本

我已經(jīng)ForkOCLint倉庫, 倉庫地址 并新建了一個feature/0.15.0的分支, 默認(rèn)build被設(shè)置了忽略, 為了更明顯的辨認(rèn), 我將文件夾名稱改為oclint-0.15.0-build, 名稱可以任意修改, 關(guān)鍵是環(huán)境路徑一定要設(shè)置正確.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容