Android打造專有hook,讓不規範的程式碼扼殺在萌芽之中

二流小碼農發表於2022-11-24

俗話說,無規矩不成方圓,同樣的放在程式碼裡也是十分的貼切,所謂在程式碼裡的規矩,指的就是規範,在一定規範約束下的專案,無論是參與開發還是後期維護,都是非常的直觀與便捷,不能說賞心悅目,也可以用健壯可維護來表示;畢竟協同開發的專案,每個人都有自己的一套開發標準,你沒有一套規範,或者是規範沒有落地執行,想想,長此以往,會發生什麼?程式碼堆積如山?維護成本翻倍增加?新人接手困難?等等,所謂的問題會撲面而來。

正所謂規範是一個專案的基石,也是衡量一個專案,是否健壯,穩定,可維護的標準,可謂是相當重要的。我相信,大部分的公司都有自己的一套規範標準,我也相信,很多可能就是一個擺設,畢竟人員的眾多,無法做到一一的約束,如果採取人工的檢查,無形當中就會投入大量的時間和人力成本,基於此,所謂的規範,也很難執行下去。

介於人工和時間的投入,我在以往的研究與探索中,開發出了一個視覺化的程式碼檢查工具,之前進行過分享,《一個便捷操作的Android視覺化規範檢查》,想了解的老鐵可以看一看,本篇文章不做過多介紹,當時只介紹了工具的使用,沒有介紹相關功能的開發過程,後續,有時間了,我會整理開源出來,一直忙於開發,老鐵們,多諒解。這個視覺化的檢查工具,雖然大大提高了檢查效率,也節省了人力和時間,但有一個潛在的弊端,就是,只能檢查提交之後的程式碼是否符合規範,對於提交之前沒有進行檢查,也就說,在提交之前,規範也好,不規範也罷,都能提交上來,用工具檢查後,進行修改,更改不規範的地方後然後再提交,只能採取這樣的一個模式檢查。

這樣的一個模式,比較符合,最後的程式碼檢查,適用於專案負責人,開發Leader,對組員提交上來的程式碼進行規範的審閱,其實並不適用於開發人員,不適用不代表著不可用,只不過相對流程上稍微複雜了幾步;應對這樣的一個因素,如何適用於開發人員,方便在提交程式碼之前進行規範檢查,便整體提上了研發日程,經過幾日的研究與編寫,一個簡單便捷的Android端Git提交專有hook,便應運而生了。

說它簡單,是因為不需要編寫任何的程式碼邏輯,只需要寥寥幾步命令,便安裝完畢,透過配置檔案,便可靈活定製屬於自己的檢查範圍。

為了更好的闡述功能及講述實現過程,便於大家定製自己的開發規範,再加上篇幅的約束,我總結了四篇文章來進行系統的梳理,還請大家,保持關注,今天這篇,主要講述最終的開發成果,也就是規範工具如何使用,規範這個東西,其實大差不差,大家完全可以使用我自己已經開發好的這套。

這個工具的開發,利用的是git 鉤子(hook),當然也是藉助的是Node.js來實現的相關功能,下篇文章會詳細介紹,我們先來安裝程式,來目睹一下實際的效果,安裝程式,只需要執行幾步命令即可,無需程式碼介入,在實際的開發中需要開發人員,分別進行安裝。

安裝流程

1、安裝 Node.js,如果已經安裝,可直接第2步:

Node.js中允許使用 JavaScript 開發服務端以及命令列程式,我們可以去官網https://nodejs.org
下載最新版本的安裝程式,然後一步一步進行安裝就可以了,這個沒什麼好說的,都是開發人員。

2、安裝android_standard

android_standard是最終的工具,裡面包含著攔截程式碼判斷的各種邏輯 , 在專案根目錄下執行如下命令:

npm install android_standard --save-dev

執行完命令後,你會發現,你的專案下已經多了一個目錄,還有兩個json檔案,如下圖所示:

image.png

node_modules,用來存放下載安裝的包資料夾,裡面有我們要使用到的功能,其實和Android中lib目錄很類似,都是一些提供功能的庫。

package.json檔案,是配置檔案,比如應用的名字,作者,介紹,還有相關的依賴等,和Android中的build.gradle檔案類似。

3、建立git配置檔案,執行如下命令

node node_modules/android_standard/gitCommitConfig

命令執行成功會返回如下資訊:

image.png

此命令執行完後,會在專案根目錄下建立gitCommitConfig檔案,這個檔案很重要,是我們執行相關命令的配置檔案,內容如下,大家可以根據自己實際專案需要進行更改。

專案下生成gitCommitConfig.android檔案,.android是我自己定義的,至於什麼格式,等你自己開發的時候,完全可以自定義,是個檔案就行。

image.png

開啟後,檔案內容如下,此檔案是比較重要的,後續所有的規範檢查,都要根據這個檔案裡的引數來執行,大家在使用的時候,就可以透過這個檔案來操作具體的規範檢查。

image.png

4、更改執行檔案,執行如下命令

執行檔案,就是需要在上邊生成的package.json檔案,新增執行程式,使其在git提交時進行hook攔截。

node node_modules/android_standard/package

5、新增git過濾

因為執行完上述命令後,會產生幾個檔案,而這幾個檔案是不需要我們上傳到遠端倉庫的,所以我們需要在.gitignore檔案裡新增忽略,直接複製即可。

/node_modules
package.json
package-lock.json
gitCommitConfig.android

6、後續如果有更新,可操作命令進行操作:

注:此命令在更新時執行

npm update android_standard --save-dev

7、刪除操作

注:後續不想使用了,便可執行如下命令:

npm uninstall android_standard --save-dev

具體使用

透過上述的安裝流程,短短几個命令,我們的規範檢查便安裝完畢,後續只需要透過gitCommitConfig.android檔案,來動態的更改引數即可,是不是非常的方便,接下來,我們來實際的操作一番。

關於配置檔案的相關引數,也都有註釋,一看便知,這裡簡單針對最後的引數,做一個說明,也就是gitCommand這個引數,true為工具,false為命令方式;true也好,false也好,在主要的功能驗證上,沒有區別,唯一的區別就是,命令列的方式提交,會有顏色區分,後面有效果。

image.png

我們先來看下命令列下的執行效果,當配置檔案開關gitCommitSwitch已開,並且gitCommand為false,其他的配置引數,大家可以根據需要進行改動,在程式碼提交的時候如下效果:

image.png

在Android studio中執行效果

image.png

TortoiseGit提交效果:

image.png

目前呢,針對Android端的規範檢查,無論是java還是Kotlin,還是資原始檔,都做了一定的適配,經過多方測試,一切正常,如果大家的公司也需要這樣的一個hook工具,歡迎使用,也歡迎繼續關注接下來的相關實現邏輯文章。

好了各位老鐵,這篇文章先到這裡,下篇文章會講述,具體的實現過程,敬請期待!

相關文章