OCLint規(guī)則與結(jié)果分析

OCLint是用來做c,c++和Objective-c的靜態(tài)代碼分析工具梳凛。在OCLint安裝和使用中介紹了OCLint的安裝和是使用别惦。運(yùn)行OCLint之后潭枣,要根據(jù)規(guī)則讀懂結(jié)果,分析和修改代碼绞蹦。
有的時(shí)候代碼出現(xiàn)的一些警告拳恋,并不需要立刻修改氮发,但是有一個(gè)警告在哪里看著還是挺別扭的渴肉,這個(gè)時(shí)候會(huì)就需要了解如何禁止或者忽略一些規(guī)則,來消除警告爽冕。

OCLint規(guī)則

最新的OCLint中有67個(gè)檢查的規(guī)則
http://docs.oclint.org/en/stable/rules/index.html仇祭,
主要對(duì)針對(duì)nil值的檢查,cocoa的obj檢查颈畸,類型轉(zhuǎn)換乌奇,空值的檢查,簡潔語法的檢查眯娱,參數(shù)礁苗,size和不使用的參數(shù)和變量的檢查。
主要分為9大類:

    Basic
    Cocoa
    Convention
    Empty
    Migration
    Naming
    Redundant
    Size
    Unused

之前介紹的的我們可以使用命令:oclint-json-compilation-database-e 參數(shù)忽略指定的文件徙缴,比如忽略Pods文件夾下面的檢查:

oclint-json-compilation-database -e Pods -- -o=report.html

還可以還用 -rc 改變檢查規(guī)則的默認(rèn)值:

oclint-json-compilation-database -- -rc=LONG_LINE=200 -o=report.html

如果想禁止某一個(gè)規(guī)則的使用可以使用命令-disable-rule:

oclint-json-compilation-database -disable-rule=LongLine

這樣就可以禁止Size中對(duì)LongLine的檢查试伙。

OCLint結(jié)果分析

OCLint的靜態(tài)分析結(jié)果,警告的級(jí)別是從P1,P2,P3依次降低的于样,可以根據(jù)生成的報(bào)告找到對(duì)應(yīng)的規(guī)則疏叨,以及修改建議。
比如下面是一條生成的警告信息:

..../.../SuperLoggerPreviewView.m:165:5:  bitwise operator in conditional [basic|P2] 

..../.../SuperLoggerPreviewView.m:165:5:的意思是產(chǎn)生警告的文件以及對(duì)應(yīng)的行號(hào)穿剖。

bitwise operator in conditional:描述信息蚤蔓。
[basic|P2]這個(gè)信息中basic是指檢查規(guī)則的類型,對(duì)應(yīng)檢查規(guī)則的9大類別,P2是警告的級(jí)別

可以在Rule Index 的第一個(gè)分類Basic中可以找到bitwiseoperatorinconditional,就是需要了解的規(guī)則信息:

Rule Index

禁止OCLint的檢查

有的時(shí)候在已知的情況下一段代碼會(huì)產(chǎn)生OCLint的警告携御,但是因?yàn)槠渌囊恍┰虿粒覀冇植荒苄薷拇a,或者還沒有找到更好的修改方式的時(shí)候啄刹,可以在代碼中禁止OCLint的檢查涮坐。

1.注解

可以使用注解的方法禁止OCLint的檢查,語法是:

attribute((annotate("oclint:suppress[unused method parameter]")))

比如我們知道一個(gè)參數(shù)沒有使用,而又不想產(chǎn)生警告信息就可以這樣寫:

- (IBAction)turnoverValueChanged:
    (id) __attribute__((annotate("oclint:suppress[unused method parameter]"))) sender
{
    int i; // won't suppress this one
    [self calculateTurnover];
}

對(duì)于方法的注解可以這樣寫:

bool __attribute__((annotate("oclint:suppress"))) aMethod(int aParameter)
{
    // warnings within this method are suppressed at all
    // like unused aParameter variable and empty if statement
    if (1) {}

    return true;
}

2.!OCLint
也可以通過//!OCLint注釋的方式誓军,不讓OCLint檢查袱讹。
比如:

void a() {
    int unusedLocalVariable; //!OCLINT
}

注釋要寫在對(duì)應(yīng)的行上面才能禁止對(duì)應(yīng)的檢查,比如對(duì)于空的if/else禁止檢查的注釋為:

if (true) //!OCLint 
{
    // it is empty
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末昵时,一起剝皮案震驚了整個(gè)濱河市捷雕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌壹甥,老刑警劉巖救巷,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異句柠,居然都是意外死亡浦译,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門溯职,熙熙樓的掌柜王于貴愁眉苦臉地迎上來精盅,“玉大人,你說我怎么就攤上這事谜酒√厩危” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵僻族,是天一觀的道長粘驰。 經(jīng)常有香客問我,道長鹰贵,這世上最難降的妖魔是什么晴氨? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮碉输,結(jié)果婚禮上籽前,老公的妹妹穿的比我還像新娘。我一直安慰自己敷钾,他們只是感情好枝哄,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著阻荒,像睡著了一般挠锥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侨赡,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天蓖租,我揣著相機(jī)與錄音粱侣,去河邊找鬼。 笑死蓖宦,一個(gè)胖子當(dāng)著我的面吹牛齐婴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播稠茂,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼柠偶,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了睬关?” 一聲冷哼從身側(cè)響起诱担,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎电爹,沒想到半個(gè)月后蔫仙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丐箩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年匀哄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雏蛮。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涎嚼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挑秉,到底是詐尸還是另有隱情法梯,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布犀概,位于F島的核電站立哑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏姻灶。R本人自食惡果不足惜铛绰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望产喉。 院中可真熱鬧捂掰,春花似錦、人聲如沸曾沈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽塞俱。三九已至姐帚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間障涯,已是汗流浹背罐旗。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工膳汪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人九秀。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓旅敷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親颤霎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

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

  • 寫在前面 剛?cè)肼毜臅r(shí)候涂滴,博哥交代給我一個(gè)任務(wù)友酱,讓我調(diào)研一款叫SonarQube的靜態(tài)代碼分析工具,我當(dāng)時(shí)跪在了Ce...
    雨潤聽潮閱讀 2,261評(píng)論 0 5
  • OCLint工具介紹 OCLint是一個(gè)靜態(tài)代碼掃描分析工具柔纵,可用于提高代碼質(zhì)量和減少潛在的缺陷缔杉,目前支持C,C+...
    Lojii閱讀 5,969評(píng)論 5 5
  • OCLint是一個(gè)強(qiáng)大的靜態(tài)代碼分析工具搁料,可以用來提高代碼質(zhì)量或详,查找潛在的bug,主要針對(duì)c,c++和Object...
    姜家志閱讀 5,087評(píng)論 5 16
  • OCLint是一個(gè)強(qiáng)大的靜態(tài)代碼分析工具郭计,可以用來提高代碼質(zhì)量霸琴,查找潛在的bug,主要針對(duì)c,c++和Object...
    劉應(yīng)閱讀 1,287評(píng)論 0 1
  • 成為“練習(xí)人”此外昭伸,我還堅(jiān)持認(rèn)為梧乘,當(dāng)我們?cè)谔岣咦约簳r(shí),我們才最像是人類庐杨。和其他任何動(dòng)物不同选调,我們可以有意識(shí)地改造自...
    BlCReg閱讀 144評(píng)論 0 0