2018開源靜態分析工具-第三部分-go
Gometalinter
Go Metalinter( https://github.com/alecthomas/gometalinter )是本文的TLDR版本–如果你喜歡kitchensink帶給你的一切體驗,用go metalinter也足夠可以檢查所有的程式碼。當你用VS Code寫Go專案的時候,VS Code也會安裝一系列不錯的工具。下面的程式碼是教你如何使用metalinter。
go get alecthomas/gometalinter
#Install the packages
gometalinter --install
gometalinter ./...
如果你不喜歡shebang的方法,我將介紹一些其他的工具
gas
Go AST Scanner( http://github.com/GoASTScanner/gas )是一個非常好的專案,它可以幫你找到你專案中是否使用MD5,或者你的專案中使用了rand而不是crypto/rand這個包。還可以發現其他類似的東西。 你可以執行下面的程式碼快速的使用這個工具
go get github.com/GoASTScanner/gas/cmd/gas/...
gas ./...
另外,你也可以過濾不同的錯誤型別,如果你希望使用gas標記一些事情,你可以使用#nosec
這個標記來避免警告。通常,你最好為#nosec
新增一些註釋,目的是告訴下一個維護程式碼的人為什麼要這麼做。
safesql
goreportcard
總之,當我使用 Goreportcard ( https://github.com/gojp/goreportcard )檢查開源專案的時候,我覺得這個專案很浮誇。它會執行幾個工具給你的專案打分,然後輸出為一個web頁面。 我用它檢查過一個重要的開源專案,這個開源專案的分數是96%。它不會讓你的專案變的更安全,但是如果能得到100%也是很開心的。
go vet/test
go vet
是我最喜歡的用go寫的工具,但是它在go 1.10
這個環境中會遇到很多問題,這樣會打亂你的測試。
dingo-hunter
我沒有在特別複雜地非學術專案上執行過 dingo hunter ( https://github.com/nickng/dingo-hunter