App的迭代過程中,線上問題頻繁發(fā)生。開發(fā)時很容易寫出一些問題代碼,例如Serializable的使用:實現(xiàn)了Serializable接口的類,如果其成員變量引用的對象沒有實現(xiàn)Serializable接口,序列化時就會Crash。我們對一些常見問題的原因和解決方法做分析總結(jié),并在開發(fā)人員組內(nèi)或跟測試人員一起分享交流,幫助相關(guān)人員主動避免這些問題。
為了進一步減少問題發(fā)生,我們逐步完善了一些規(guī)范,包括制定代碼規(guī)范,加強代碼Review,完善測試流程等。但這些措施仍然存在各種不足,包括代碼規(guī)范難以實施,溝通成本高,特別是開發(fā)人員變動頻繁導(dǎo)致反復(fù)溝通等,因此其效果有限,相似問題仍然不時發(fā)生。另一方面,越來越多的總結(jié)、規(guī)范文檔,對于組內(nèi)新人也產(chǎn)生了不小的學(xué)習(xí)壓力。
有沒有辦法從技術(shù)角度減少或減輕上述問題呢?
我們調(diào)研發(fā)現(xiàn),靜態(tài)代碼檢查是一個很好的思路。靜態(tài)代碼檢查框架有很多種,例如FindBugs、PMD、Coverity,主要用于檢查Java源文件或class文件;再例如Checkstyle,主要關(guān)注代碼風(fēng)格;但我們最終選擇從Lint框架入手,因為它有諸多優(yōu)勢:
功能強大,Lint支持Java源文件、class文件、資源文件、Gradle等文件的檢查。
擴展性強,支持開發(fā)自定義Lint規(guī)則。
配套工具完善,Android Studio、Android Gradle插件原生支持Lint工具。
Lint專為Android設(shè)計,原生提供了幾百個實用的Android相關(guān)檢查規(guī)則。
有Google官方的支持,會和Android開發(fā)工具一起升級完善。
在對Lint進行了充分的技術(shù)調(diào)研后,我們根據(jù)實際遇到的問題,又做了一些更深入的思考,包括應(yīng)該用Lint解決哪些問題,怎么樣更好的推廣實施等,逐步形成了一套較為全面有效的方案
大多數(shù)開發(fā)者可能都不知道:你可以自己寫 Lint 規(guī)則。其實,在很多使用案例中,自定義的 Lint 規(guī)則往往大有用處:
如果你在寫一個代碼庫/SDK,你想幫助開發(fā)者正確地使用它,Lint? 規(guī)則就能派上用場。有了 Lint,你可以輕易地提醒他們忽略或做錯的事情。
如果你的團隊有了新加入的開發(fā)者,Lint 可以幫助他快速了解團隊的最佳實踐,或命名慣例。
https://blog.csdn.net/wangpeng198688/article/details/50751367
Android ------ 美團的Lint代碼檢查實踐
https://blog.csdn.net/dickyqie/article/details/79950167
android 自定義Lint
https://blog.csdn.net/xiangzhihong8/article/details/62041022
gradle配置