調(diào)整 Android Studio 編譯檢查規(guī)則

在 Android Studio 中進(jìn)行源代碼的編輯時(shí),會對源代碼做即時(shí)的分析莫鸭,并且在編輯窗格的右上方顯示分析的結(jié)果潦匈。檢查程序在運(yùn)行時(shí)阱高,窗格右上方的角落會以一個(gè)眼睛的圖標(biāo)來表達(dá)。如果源代碼通過所有檢查條件茬缩,會顯示綠色的勾勾赤惊;源代碼有違反一項(xiàng)以上的警告規(guī)則顯示黃色的方塊;當(dāng)源代碼有違反一項(xiàng)以上的錯(cuò)誤規(guī)則凰锡,顯示紅色的圓圈包著驚嘆號未舟。

很多人在寫程序的時(shí)候都只關(guān)心編譯后能不能運(yùn)行,好進(jìn)行測試寡夹,因?yàn)槌绦蛞坏┯绣e(cuò)誤就會中斷編譯程序处面、阻擋工作的進(jìn)行,要等到錯(cuò)誤的源代碼被修正后才能繼績工作菩掏。而警告的訊息并不會阻擋工作的進(jìn)行魂角,就會變得無所謂、大多數(shù)的人都會選擇不予理會智绸。

這并不是一個(gè)好的開發(fā)習(xí)慣野揪,Android Studio 進(jìn)行的源代碼分析就像健康檢查一樣,用來顯示源代碼的健康程度瞧栗。當(dāng)健康檢查的報(bào)告中有數(shù)值超出標(biāo)準(zhǔn)值斯稳,雖然沒有達(dá)到疾病的程度,但代表身體已經(jīng)有一定的問題迹恐。如果繼續(xù)忽視不理挣惰,很有可能就會轉(zhuǎn)變成疾病,甚至危害生命。同樣的道理憎茂,當(dāng)分析的結(jié)果出現(xiàn)警告的訊息代表源代碼的寫法有一定程度出錯(cuò)的風(fēng)險(xiǎn)珍语。所以一但有警告訊息出現(xiàn),應(yīng)該要和錯(cuò)誤一樣認(rèn)真地看待并謹(jǐn)慎地處理竖幔。

不過板乙,有的時(shí)候特定的習(xí)慣性寫法或是團(tuán)隊(duì)的 Coding Convetion 可能會和工具默認(rèn)的檢查規(guī)則有沖突,但其實(shí)并不影響程序的運(yùn)行結(jié)果拳氢。舉例來說募逞,以下的源代碼是一般判斷布爾值的慣用寫法:

if (!flag) {

}

但是這樣的寫法由于 “!” 的寬度不寬,和判斷布爾值是 true 的源代碼差別沒有很大馋评,很容易因?yàn)榭绰┓沤樱瑢?dǎo)致修改程序時(shí)誤判而發(fā)生改錯(cuò)源代碼的情況。再者栗恩,我們的母語并不是英文透乾,所以在命名變量時(shí)常常詞不達(dá)意,甚至在過去的工作經(jīng)驗(yàn)中磕秤,遇到有人命名變量的語意與用途相反的情況乳乌,更大大地增加了這樣的情況出現(xiàn)的機(jī)率。

為了有效地提高防呆的機(jī)率市咆,我都習(xí)慣性地使用以下的方式來撰寫判斷式:

if (flag == false) {

}

雖然會多打好幾個(gè)字汉操,但是卻可以換來表達(dá)意思明確的效果。閱讀源代碼的人容易判斷區(qū)塊中到底是要運(yùn)行 true 還是 false 的邏輯蒙兰,不會被變量的名稱誤導(dǎo)形成邏輯上的混亂磷瘤。

但 Android Studio 默認(rèn)的檢查規(guī)則,在遇到以上的寫法卻會顯示以下的警告訊息:

flag == false can be simplified to !flag

Reports pointless or pointlessly complicated boolean expressions. Such expressions include anding with true, oring with false, equality comparison with a boolean literal, or negation of a boolean literal. Such expressions may be the result of automated refactorings not completely followed through to completion, and in any case are unlikely to be what the developer intended to do.

當(dāng)這樣的訊息與其他的警告混在一起就會造成在寫程序時(shí)的困擾搜变,因?yàn)闆]有辦法在第一時(shí)間就利用編輯窗格右上角的綠色勾勾采缚,了解程序是否已經(jīng)通過其他的檢查規(guī)則。當(dāng)看到窗格的右上角呈現(xiàn)黃色的方塊挠他,如果要確認(rèn)還要將鼠標(biāo)移到有問題的位置扳抽,才能夠判斷是不是因?yàn)橐陨系脑创a寫法所產(chǎn)生的警告訊息,或是還有其它的問題待修正殖侵!

這樣的動作如果在寫程序時(shí)頻繁地重復(fù)贸呢,會讓工作的效率下降很多,而且也會因?yàn)榫昧顺霈F(xiàn)怠惰的心態(tài)拢军,進(jìn)而忽略警告訊息造成程序出問題的風(fēng)險(xiǎn)增加楞陷。

所幸 Android Studio 的檢查規(guī)則是可以調(diào)整的,在 Settings 的對話窗口中選擇 “Editor->Inspections” 項(xiàng)目茉唉,就可開啟或關(guān)閉特定的檢查規(guī)則固蛾。以文章中的示范源代碼寫法為例结执,可以切換到 “Java->Control flow issues->Pointless boolean expression” 項(xiàng)目。如下圖所示取消勾選該項(xiàng)目魏铅,Android Studio 就不會再針對這項(xiàng)寫法進(jìn)行檢查昌犹。

有更動過的選項(xiàng)會以藍(lán)色的字體顯示,同時(shí)所屬的逐級向上分類項(xiàng)目也會顯示藍(lán)色览芳,以方便識別。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鸿竖,一起剝皮案震驚了整個(gè)濱河市沧竟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缚忧,老刑警劉巖悟泵,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異闪水,居然都是意外死亡糕非,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門球榆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來朽肥,“玉大人,你說我怎么就攤上這事持钉『庹校” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵每强,是天一觀的道長始腾。 經(jīng)常有香客問我,道長空执,這世上最難降的妖魔是什么浪箭? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮辨绊,結(jié)果婚禮上奶栖,老公的妹妹穿的比我還像新娘。我一直安慰自己邢羔,他們只是感情好驼抹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拜鹤,像睡著了一般框冀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上敏簿,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天明也,我揣著相機(jī)與錄音宣虾,去河邊找鬼。 笑死温数,一個(gè)胖子當(dāng)著我的面吹牛绣硝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撑刺,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鹉胖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了够傍?” 一聲冷哼從身側(cè)響起甫菠,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冕屯,沒想到半個(gè)月后寂诱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡安聘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年痰洒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浴韭。...
    茶點(diǎn)故事閱讀 39,739評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡丘喻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出囱桨,到底是詐尸還是另有隱情仓犬,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布舍肠,位于F島的核電站搀继,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏翠语。R本人自食惡果不足惜叽躯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肌括。 院中可真熱鬧点骑,春花似錦、人聲如沸谍夭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽紧索。三九已至袁辈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間珠漂,已是汗流浹背晚缩。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工尾膊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荞彼。 一個(gè)月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓冈敛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鸣皂。 傳聞我的和親對象是個(gè)殘疾皇子抓谴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評論 2 354

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,082評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)寞缝,斷路器齐邦,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • 我們非常榮幸地宣布 Visual Studio 2017 現(xiàn)已推出! 此次發(fā)布提供新的輕量模塊式安裝體驗(yàn)第租,可根據(jù)自...
    三夢哥閱讀 7,716評論 0 6
  • 性能改進(jìn) 改進(jìn)性能是此版本的一個(gè)重點(diǎn)所在。 除對提高內(nèi)存和響應(yīng)作出一些優(yōu)化外我纪,整個(gè) JavaScript/Type...
    三夢哥閱讀 3,661評論 0 3
  • 時(shí)間已經(jīng)到了深夜慎宾,為什么還要寫點(diǎn)兒什么呢?因?yàn)閮?nèi)心再次被小翟這個(gè)美女打動浅悉。 前幾天開學(xué)趟据,主任在會上跟我們分享了這篇...
    我是尹天真閱讀 339評論 0 1