1. 程式人生 > >2018開源靜態分析工具-第三部分-go

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

) ,但這個是一個靜態分析器,用來建模併發和尋找死鎖。它模型的核心程式碼是Haskell,並且背後還有一些我不能理解的數學計算的模組。 你可以在 https://github.com/mre/awesome-static-analysis 找到更多用於go語言的靜態分析器,你也可以自己寫一個,這其實很容易。?