淘寶開源的代碼質(zhì)量檢測工具,太強(qiáng)大了

前言

好的代碼一定是整潔的僚匆,并且能夠幫助閱讀的人快速理解和定位微渠。好的代碼可以加快應(yīng)用的開發(fā)迭代速度,不必花過多的時(shí)間來修復(fù) bug 和完善代碼咧擂。

好的代碼不但能夠使得新的項(xiàng)目成員更容易加入項(xiàng)目逞盆,同時(shí)方便項(xiàng)目組成員快速做好 Back up。好的代碼便于促進(jìn)團(tuán)隊(duì)間交流合作提升開發(fā)效率松申。

image.png

代碼質(zhì)量評價(jià)標(biāo)準(zhǔn)

有編碼經(jīng)驗(yàn)的人對代碼都有一定的“鑒賞力”云芦,能夠憑感覺給出代碼好壞的主觀評價(jià)。但是這種憑感覺的方式太過個(gè)性隨意攻臀,所謂仁者見仁智者見智焕数,很難達(dá)成共識(shí),那有沒有一種公認(rèn)的標(biāo)準(zhǔn)來鑒定代碼質(zhì)量呢刨啸?

答案是有的堡赔。這里簡單分享當(dāng)下較常用的評價(jià)標(biāo)準(zhǔn),其中包括:編碼規(guī)范设联、可讀性善已、可維護(hù)性、重復(fù)度及可測試性离例。

編碼規(guī)范主要包含是否遵守了最佳實(shí)踐和團(tuán)隊(duì)編碼規(guī)范换团,是否包含可能出問題的代碼,以及可能存在安全的漏洞宫蛆。編碼規(guī)范有助于提高團(tuán)隊(duì)內(nèi)協(xié)助的效率以及代碼的可維護(hù)性艘包。

可讀性Code Review 是一個(gè)很好的測驗(yàn)代碼可讀性的手段的猛。如果你的同事可以輕松地讀懂你寫的代碼,那說明你的代碼可讀性很好想虎;反之則說明你的代碼可讀性有待提高了卦尊。遵守編碼規(guī)范也能讓我們寫出可讀性更好的代碼。

可維護(hù)性代碼的可維護(hù)性是由很多因素協(xié)同作用的結(jié)果舌厨。代碼的可讀性好岂却、簡潔、可擴(kuò)展性好裙椭,就會(huì)使得代碼易維護(hù)躏哩;更細(xì)化地講,如果代碼分層清晰揉燃、模塊化好扫尺、高內(nèi)聚低耦合、遵從基于接口而非實(shí)現(xiàn)編程的設(shè)計(jì)原則等等你雌,那就可能意味著代碼易維護(hù)器联。除此之外,代碼的易維護(hù)性還跟項(xiàng)目代碼量的多少婿崭、業(yè)務(wù)的復(fù)雜程度拨拓、利用到的技術(shù)的復(fù)雜程度、文檔是否全面等諸多因素有關(guān)氓栈。

重復(fù)度遵守 Don’t Repeat Yourself 原則渣磷,盡量減少重復(fù)代碼的編寫,復(fù)用已有的代碼授瘦。對項(xiàng)目定期進(jìn)行代碼重復(fù)度檢測是一個(gè)很有意義的事醋界,可以幫助開發(fā)人員發(fā)現(xiàn)冗余代碼,進(jìn)行代碼抽象和重構(gòu)提完。重復(fù)的代碼一旦出錯(cuò)形纺,意味著加倍的工作量和持續(xù)的不可控。如果代碼中有大量的重復(fù)代碼徒欣,就要考慮將重復(fù)的代碼提取出來逐样,封裝成公共的方法或者組件。

可測試性代碼可測試性的好壞打肝,同樣可以反應(yīng)代碼質(zhì)量的好壞脂新。代碼的可測試性差,比較難寫單元測試粗梭,那基本上就能說明代碼設(shè)計(jì)得有問題争便。

除此之外還有很多代碼質(zhì)量評價(jià)標(biāo)準(zhǔn)。我們需要一些取舍断医,選取部分大家有共識(shí)的規(guī)則定義團(tuán)隊(duì)好的代碼標(biāo)準(zhǔn)滞乙。

代碼質(zhì)量維度

當(dāng)前版本通過 @iceworks/doctor 從 5 個(gè)維度對代碼進(jìn)行評分:

[圖片上傳失敗...(image-8f14a9-1649513420524)]

  1. 最佳實(shí)踐: 通過 @iceworks/eslint-plugin-best-practices 分析項(xiàng)目奏纪,提出符合當(dāng)前工程特征(對 ice 和 Rax項(xiàng)目友好)的最佳實(shí)踐及阻塞問題發(fā)布卡口,幫助開發(fā)者優(yōu)化項(xiàng)目性能酷宵,避免潛在 bug 亥贸。
  2. 安全實(shí)踐: 通過 @iceworks/eslint-plugin-security-practices 掃碼代碼檢測工程中可能存在的安全風(fēng)險(xiǎn),包含 url 浇垦、敏感成詞、明文賬密信息及 npm 包證書檢測荣挨,降低項(xiàng)目安全風(fēng)險(xiǎn)男韧,守衛(wèi)項(xiàng)目安全。
  3. 阿里代碼規(guī)范: 這一維度主要反饋開發(fā)人員對于 eslint-config-ali 阿里開發(fā)規(guī)約的遵守程度默垄。
  4. 可維護(hù)度: 通過 typhonjs-escomplex 對文件進(jìn)行掃碼此虑,得出每個(gè)文件的可維護(hù)度,可讀性及復(fù)雜度評分口锭。針對得分較差的文件可以進(jìn)行深度分析幫助開發(fā)者更好的重構(gòu)復(fù)雜代碼朦前。
  5. 重復(fù)度: 通過 jscpd 計(jì)算重復(fù)出現(xiàn)的代碼區(qū)塊占比,計(jì)算出 clone 分?jǐn)?shù)鹃操。并逐一列舉重復(fù)的代碼韭寸,方便開發(fā)者快速定位重復(fù)代碼,將其封裝成公共的方法或者組件卿闹。

根據(jù)上述 5 個(gè)維度通過加權(quán)平均的方式計(jì)算項(xiàng)目質(zhì)量分桑逝,并根據(jù)木桶效應(yīng)喊积,在計(jì)算得分的過程中加大了最低分的權(quán)重,得出最終項(xiàng)目質(zhì)量評分晶渠。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市燃观,隨后出現(xiàn)的幾起案子褒脯,更是在濱河造成了極大的恐慌,老刑警劉巖缆毁,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件番川,死亡現(xiàn)場離奇詭異,居然都是意外死亡积锅,警方通過查閱死者的電腦和手機(jī)爽彤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缚陷,“玉大人适篙,你說我怎么就攤上這事◇镆” “怎么了嚷节?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵聂儒,是天一觀的道長。 經(jīng)常有香客問我硫痰,道長衩婚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任效斑,我火速辦了婚禮非春,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缓屠。我一直安慰自己奇昙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布敌完。 她就那樣靜靜地躺著储耐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪滨溉。 梳的紋絲不亂的頭發(fā)上什湘,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機(jī)與錄音晦攒,去河邊找鬼闽撤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛勤家,可吹牛的內(nèi)容都是我干的腹尖。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼伐脖,長吁一口氣:“原來是場噩夢啊……” “哼热幔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起讼庇,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤绎巨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蠕啄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體场勤,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年歼跟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了和媳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡哈街,死狀恐怖留瞳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情骚秦,我是刑警寧澤她倘,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布璧微,位于F島的核電站,受9級特大地震影響硬梁,放射性物質(zhì)發(fā)生泄漏前硫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一荧止、第九天 我趴在偏房一處隱蔽的房頂上張望屹电。 院中可真熱鬧,春花似錦罩息、人聲如沸嗤详。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至递宅,卻和暖如春娘香,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背办龄。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工烘绽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俐填。 一個(gè)月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓安接,卻偏偏與公主長得像,于是被迫代替她去往敵國和親英融。 傳聞我的和親對象是個(gè)殘疾皇子盏檐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

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