IOS OClint 的安裝使用與代碼分析

前言

oclint 是對(duì)C、C++屯蹦、Objective-C進(jìn)行靜態(tài)代碼檢查的工具 ,使用 oclint 對(duì)代碼進(jìn)行靜態(tài)分析可以檢查和提高項(xiàng)目代碼質(zhì)量、尋找潛在的問(wèn)題........

OCLint 官網(wǎng)簡(jiǎn)介

oclint 的安裝

1.通過(guò) homebrew 安裝非常方便、快速?

homebrew 安裝方法

2.使用 xcode 代碼分析需要安裝 oclint和xcpretty兜挨,都可以在終端進(jìn)行安裝

打開(kāi)終端 命令行 依次輸入以下命令安裝 oclint

brew tap oclint/formulae ?

brew install oclint


用gem安裝xcpretty

sudo?gem?install?xcpretty


確認(rèn)下是否成功安裝 oclint

終端輸入 oclint ?如給出以下提示职抡,代表成功安裝 oclint

3.使用 oclint

oclint 詳細(xì)使用方法

使用 oclint 對(duì) xcode 項(xiàng)目進(jìn)行靜態(tài)代碼分析首先需要項(xiàng)目配置葬燎,即添加 target

1.file-new-target


添加target

?next

添加腳本


2.在xcode項(xiàng)目目錄下創(chuàng)建分析的Shell腳本文件analysis.sh


創(chuàng)建.sh

3.在.sh 文件中寫(xiě)入以下示例內(nèi)容(compile_commands.json是生成的日志文件名)

# 移除原有的生成文件

xcodebuild clean | xcpretty

rm -r build

rm -r compile_commands.json

# Build和把日志寫(xiě)到目標(biāo)文件

xcodebuild | xcpretty -r json-compilation-database --output compile_commands.json

4.使用終端打開(kāi)項(xiàng)目目錄

cd 項(xiàng)目路徑?

打開(kāi).sh文件 sudo ?./analysis.sh

如果報(bào)錯(cuò)

使用sh?./analysis.sh打開(kāi)即可,終端如以下即開(kāi)始分析生成目標(biāo)文件(compile_commands.json)



5.分析完之后打開(kāi) xcode缚甩,來(lái)輸入可執(zhí)行的腳本即可


接下來(lái) command + b 編譯 谱净,如果編譯過(guò)程中報(bào)錯(cuò)?oclint: error: violations exceed threshold

錯(cuò)誤原因是超過(guò)了issue 的閾值,在腳本末尾加上 -max-priority-1=9999 -max-priority-2=9999 -max-priority-3=9999?

過(guò)濾項(xiàng)目中的第三方警告

如果 pod 導(dǎo)入 ?添加腳本?oclint-json-compilation-database?-e?Pods

如果手動(dòng)導(dǎo)入 ? 添加腳本 ?oclint-json-compilation-database -e FMDB -e XMLReader -e Masonry -e MJRefresh ? 類(lèi)似即可


編譯成功后Xcode上會(huì)在不符合規(guī)則的代碼上顯示W(wǎng)arning


可以自己參考規(guī)則列表?來(lái)自定義個(gè)人需要的規(guī)則

關(guān)于 oclint 指令?oclint擅威、oclint-json-compilation-database壕探、oclint-xcodebuild

oclint 是核心指令?oclint?[options]??--?[compiler?flags]?

[options]為一些參數(shù)選項(xiàng),可以是規(guī)則加載選項(xiàng)郊丛、報(bào)告形式選項(xiàng)等:

-R <路徑> : 檢測(cè)所用的規(guī)則的路徑李请,默認(rèn)路徑$(/path/to/bin/oclint)/../lib/oclint/rules

-disable-rule <規(guī)則名>: 讓相對(duì)應(yīng)的規(guī)則失效。

-rc <參數(shù)>=<值> :修改閾值

-report-type <報(bào)告類(lèi)型>厉熟,有"text"导盅、“html”、“json”揍瑟、“pmd”白翻、“xcode”幾個(gè)類(lèi)型

-o <路徑> 報(bào)告生成路徑。

例:oclint??-R??/path/to/rules???-disable-rule?ObjCAssignIvarOutsideAccessors?-report-type?xcode 是指忽略掉規(guī)則文件中指定規(guī)則

oclint-json-compilation-database 指令

oclint-json-compilation-database?指令有過(guò)濾文件選項(xiàng)

-i :包含進(jìn)某些文件

-e : 過(guò)濾掉某些文件

xcpretty

用xcpretty生成OClint 解析用的json 文件

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末月培,一起剝皮案震驚了整個(gè)濱河市嘁字,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌杉畜,老刑警劉巖纪蜒,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異此叠,居然都是意外死亡纯续,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)灭袁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)猬错,“玉大人,你說(shuō)我怎么就攤上這事茸歧【氤矗” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵软瞎,是天一觀(guān)的道長(zhǎng)逢唤。 經(jīng)常有香客問(wèn)我拉讯,道長(zhǎng),這世上最難降的妖魔是什么鳖藕? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任魔慷,我火速辦了婚禮,結(jié)果婚禮上著恩,老公的妹妹穿的比我還像新娘院尔。我一直安慰自己,他們只是感情好喉誊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布邀摆。 她就那樣靜靜地躺著,像睡著了一般裹驰。 火紅的嫁衣襯著肌膚如雪隧熙。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天幻林,我揣著相機(jī)與錄音,去河邊找鬼音念。 笑死沪饺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闷愤。 我是一名探鬼主播整葡,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼讥脐!你這毒婦竟也來(lái)了遭居?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤旬渠,失蹤者是張志新(化名)和其女友劉穎俱萍,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體告丢,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡枪蘑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了岖免。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岳颇。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖颅湘,靈堂內(nèi)的尸體忽然破棺而出话侧,到底是詐尸還是另有隱情,我是刑警寧澤闯参,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布瞻鹏,位于F島的核電站悲立,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏乙漓。R本人自食惡果不足惜级历,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望叭披。 院中可真熱鬧寥殖,春花似錦、人聲如沸涩蜘。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)同诫。三九已至粤策,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間误窖,已是汗流浹背叮盘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留霹俺,地道東北人柔吼。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像丙唧,于是被迫代替她去往敵國(guó)和親愈魏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容