Android 代碼規(guī)范之Inspection 定制

本文主要講述兩個方面:

1)為何制定Radio_Inspections 規(guī)范及實操

2)IDE Inspection 使用?

第一部分 :為何制定Radio_Inspections 規(guī)范及實操

一 、制定Radio_Inspections 規(guī)范的目的

? ? (1)寫代碼時發(fā)現(xiàn)并解決不規(guī)范的書寫或潛在的bug (其他工具未掃描出來)

? ? (2)解決部分代碼性能問題

二、Radio_Inspections 能夠解決的問題

? ? ? ?當前雖然IDE Inspection 能夠提供實時提示滑进,但是往往開發(fā)者沒太注意霜浴,原因主要有以下幾點:

? ? (1)IDE Inspection 默認檢查項過多揣云,掃描結(jié)果過多薄腻,處理費時,不愿處理陨收;

? ? (2)IDE Inspection 提示級別多為warning 肛搬,讓人容易忽視(有時往往會產(chǎn)生致命np問題)没佑;

? ? (3)IDE Inspection 部分檢查項,默認關(guān)閉的(規(guī)則太多温赔,開發(fā)者也不會一一瀏覽過濾)蛤奢;

? ? ? ? ? 針對上述三個問題,freddy想出相應對策陶贼,來制定符合自身項目的Inspection 規(guī)則(Radio_Inspections) :

(1)瀏覽相關(guān)規(guī)則啤贩,結(jié)合平時開發(fā),將部分默認未開啟有意義的檢查項開啟拜秧;

(2)將提示級別設(shè)置為error 痹屹;

(3)優(yōu)先處理error 級別問題。


Radio_Inspections新增 規(guī)則如下(暫時未引入阿里插件檢查項):

(1)Class structure

? ? ? ? 1) Utility class without ‘private’ constructor

? ? ? ? ? ? ?工具類 建議添加 私有構(gòu)造方法枉氮,防止實例化

? ? ? ? 2)Class with only ‘private’ constructors should be declared ‘final'

? ? ? ? ? ? ? 工具類 建議 添加final 修飾符

(2)Code style issues?

? ? ? ? 1)?‘expression.equals(“l(fā)iteral”) rather than “l(fā)iteral”.equals(expression)

? ? ? ? ? ? ? ?防止?jié)撛趎p

(3)Control flow issues

? ? ? ? 1) Unnecessary ‘null’ check before ‘instanceof’ expression ?

(4)Declaration redundancy

? ? ? ? 1) Access static member via instance reference

(5)Imports

? ? ? ? 1)Static import

(6)Java language level migration aids?

? ? ?1) Identical ‘catch’ branches in ‘try’ statement (語法糖)

? ? ?案例:

圖 案例
圖 建議寫法

? ? 同時志衍,對應關(guān)閉 “Multiple-catch can be split into separate catch blocks”?

(7)Memory issues

? ? ? 1)Inner class may be ‘static’

(8)Probable bugs

? ? ? ? 1)Return of "null"

? ? ? ? public 方法返回 null 暖庄,建議添加 @Nullable (強制添加,不然提示)

? ? ? ?2) equals( ) and hashCode( ) not paired?

? (9) Inheritance issues

? ? ? ? ? ?1) @Overridate

?(10) Numeric issues

? ? ? ? ?1)Divide by zero

? ? ? ? ?2)?'long' literal ending with "l" instead of "L'

(11) Serialization issues?

? ? ? 1)Serializable class without 'serialVersionUID'

? ? ? ?2)‘serialVersionUID’ field not declared 'private static final long'

? ? ? ?3)Transient field in non-serializable class

? ? ? ? ? ? ?防止 transient 關(guān)鍵字 和 @Transient 用混


另外楼肪,有一些比較好的建議(暫時未添加):

(1)Performance issues?

? ? ? 1)Collection without initial capacity (638+)

? ? ? ? ? ? 設(shè)置初始容量

(2)? Magic number ?(1273 個)


建議關(guān)閉的默認規(guī)則 :

(1)Javadoc issues ?

? ? ? ? 直接checkStyle 就可以

(2)General? Default File template ? (模板)

? ? ? ? ?This inspections reports usage of the default file template for File Header.

(3)Syntax error inspection

? ? ? ? ? Allows you to see syntax errors in the results of batch code inspection.

(4)Spelling?

(5)Android Lint :Internationlization

? ? ? ? 1) Using left / right instead of start/end attributes (1640+)


第二部分? :IDE Inspection 使用?

一培廓、默認情況 ?(Project Default)

1)Specify Inspection scope?

? ? ? 選擇Inspection scope? 以及 Inspection profile?

圖?Specify Inspection scope?

? ? ? ?Inspections profile 主要有兩種存儲方式 ?:IDE (選擇IDE即可) ?和 project,建議使用IDE 存儲春叫,切換分支不會發(fā)生變化肩钠;

圖 Inspections profile 存儲選擇方式

二、規(guī)則挑選過濾 ?

? ? ? ?Inspection 檢查 主要 分為 :Error 暂殖、Blocker 价匠、Critical、Major 等等? 央星”矍蓿可以通過左側(cè)漏斗按鈕進行相關(guān)過濾备韧。

圖 規(guī)則過濾選擇

三、過濾機制 ?

(1)檢查結(jié)果相關(guān)點

圖 過濾方式選擇

? ? ? ? 右側(cè)對應Suppress 方式 (分別針對 method/class/ all inspections for class)问裕,盡可能選擇粒度較小的方式廉沮,如method 颓遏。

(2)具體Method過濾?

圖 方法過濾實例

(3)檢查項不配置,則對整個工程都不會檢查


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滞时,一起剝皮案震驚了整個濱河市叁幢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坪稽,老刑警劉巖曼玩,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異窒百,居然都是意外死亡黍判,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門篙梢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來顷帖,“玉大人,你說我怎么就攤上這事渤滞”岫眨” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵妄呕,是天一觀的道長陶舞。 經(jīng)常有香客問我,道長绪励,這世上最難降的妖魔是什么肿孵? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任论咏,我火速辦了婚禮,結(jié)果婚禮上颁井,老公的妹妹穿的比我還像新娘厅贪。我一直安慰自己,他們只是感情好雅宾,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布养涮。 她就那樣靜靜地躺著,像睡著了一般眉抬。 火紅的嫁衣襯著肌膚如雪贯吓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天蜀变,我揣著相機與錄音悄谐,去河邊找鬼。 笑死库北,一個胖子當著我的面吹牛爬舰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寒瓦,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼情屹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了杂腰?” 一聲冷哼從身側(cè)響起垃你,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎喂很,沒想到半個月后惜颇,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡少辣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年凌摄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片毒坛。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡望伦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出煎殷,到底是詐尸還是另有隱情屯伞,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布豪直,位于F島的核電站劣摇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏弓乙。R本人自食惡果不足惜末融,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一钧惧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧勾习,春花似錦浓瞪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至艺栈,卻和暖如春英岭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背湿右。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工诅妹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人毅人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓吭狡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親堰塌。 傳聞我的和親對象是個殘疾皇子赵刑,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)场刑,斷路器,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 原文:https://legacy.python.org/dev/peps/pep-3333 PEP:3333標題...
    老周_o_o閱讀 2,401評論 0 5
  • 故地密竹新蚪战,慌急刻字尋牵现。 山盟依舊在,不見意中人邀桑。 注:以“人不風流枉少年”任意平聲字做韻腳瞎疼。 (中華新韻)
    云淡風輕110閱讀 651評論 14 31
  • 遇見另外一個你 22的結(jié)束,100天新的征程開啟 目標一 減到100斤 1 晚上不吃飯(聚餐少吃)...
    A我愿閱讀 295評論 2 1
  • 當你決定不再去打擾她的時候壁畸, 內(nèi)心有太多的糾結(jié)和不舍贼急。 因為只有你自己知道, 為了這個決定捏萍, 你是用了多大的勇氣太抓,...
    丹華君閱讀 287評論 0 0