代碼質(zhì)量管理的一些思路
現(xiàn)在程序員的能力參差不齊,有科班出身的;也有半路出家的。如何提高代碼的質(zhì)量,對(duì)系統(tǒng)的魯棒性(穩(wěn)定性)非常重要。

0x01:編寫規(guī)范的代碼
在編寫代碼時(shí),給包名、類名、類屬性等做一定的規(guī)范??梢赃_(dá)到見名知意的效果。具體可以參考《阿里巴巴Java開發(fā)手冊(cè)》
鏈接: https://pan.baidu.com/s/1ANvBu1hidnvRCZILDGXuQA
密碼: ugq8
一些常見的模式
項(xiàng)目jar命名:系統(tǒng) - 模塊。例如,cms-user
package命名:按照模塊、controller、service、dao模式命名。例如,控制器層com.user.controller,服務(wù)層com.user.service,持久層com.user.dao。
工具類包:com.common.utils
類名:控制器類UserController,服務(wù)類UserService,持久類UserDao
生成器功能的類可以命名成XXXGenterator
加載器功能的類可以命名成XXXLoader
具體其他的規(guī)則參考《阿里巴巴Java開發(fā)手冊(cè)》,就非常規(guī)范了。
0x02:靜態(tài)掃描
根據(jù)約定的規(guī)范編寫出來(lái)的代碼,雖然達(dá)到了統(tǒng)一規(guī)范,但是并不能規(guī)范代碼編寫的風(fēng)格。例如,沒(méi)有按規(guī)范使用日志框架打印日志,而使用了System.out;沒(méi)有按規(guī)范關(guān)閉輸入流 / 輸出流。這種代碼質(zhì)量的問(wèn)題,則需要使用一些靜態(tài)代碼掃描工具,進(jìn)行掃描,然后再進(jìn)行修復(fù)。例如,使用 sonar 靜態(tài)代碼掃描,sonar 由2部分組成,分別是 SonarQube 平臺(tái),SonarScanner掃描器。
SonarQube: WEB 界面管理平臺(tái)
展示所有的項(xiàng)目代碼的質(zhì)量數(shù)據(jù)
配置質(zhì)量規(guī)則、管理項(xiàng)目、配置通知、配置SCM等
SonarScanner: 代碼掃描工具
專門用來(lái)掃描和分析項(xiàng)目代碼。支持20+語(yǔ)言
代碼掃描和分析完成之后,會(huì)將掃描結(jié)果存儲(chǔ)到數(shù)據(jù)庫(kù)當(dāng)中,在sonarQube平臺(tái)可以看到掃描數(shù)據(jù)。
SonarQube 和 SonarScanner 之間的關(guān)系

以上只是接受了一種靜態(tài)代碼掃描的方案,有錢的大公司也會(huì)購(gòu)買 Fortify,這種大型的商業(yè)軟件進(jìn)行代碼掃描。
0x03:動(dòng)態(tài)掃描 (安全掃描)
靜態(tài)掃描就是不運(yùn)行程序,通過(guò)掃描源代碼的方式檢查漏洞;動(dòng)態(tài)掃描則是在運(yùn)行程序下,通過(guò)接口滲透的方式檢查漏洞。在這種方案下,可以檢查到 SQL 注入、XSS 腳本攻擊、越權(quán)、目錄列表等漏洞。這塊常見的解決方案是 IBM 公司的AppScan 安全掃描工具(IBM Security App Scan Standard)。
AppScan 是 IBM 的一款 web 安全掃描工具,可以利用爬蟲技術(shù)進(jìn)行網(wǎng)站安全滲透測(cè)試,根據(jù)網(wǎng)站入口自動(dòng)對(duì)網(wǎng)頁(yè)鏈接進(jìn)行安全掃描,掃描之后會(huì)提供掃描報(bào)告和修復(fù)建議等。AppScan 有自己的用例庫(kù),版本越新用例庫(kù)越全(用例庫(kù)越全面,對(duì)漏洞的檢測(cè)較全面,被測(cè)試系統(tǒng)的安全性則越高)
工作原理:
通過(guò)探索了解整個(gè) web 頁(yè)面結(jié)果
通過(guò)分析,使用掃描規(guī)則庫(kù)對(duì)修改的 HTTP Request 進(jìn)行攻擊嘗試
分析 Response 來(lái)驗(yàn)證是否存在安全漏洞
鏈接:https://pan.baidu.com/s/19TAHl8lYGmE0O753ULyzYA
密碼:yvle
如果想嘗試使用 AppScan 可以參考以上博客
https://blog.csdn.net/u010013191/article/details/80733170
喜歡,在看
