欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go Uber靜態(tài)分析工具NilAway使用初體驗

 更新時間:2024年01月11日 11:24:31   作者:程序員大兵  
這篇文章主要介紹了Go Uber靜態(tài)分析工具NilAway使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

Uber 開源的靜態(tài)分析工具 NilAway

今天給大家介紹以下 Uber 開源的靜態(tài)分析工具 NilAway,下面開魯。

最近 Uber 開發(fā)和開源了一個挺不錯的靜態(tài)分析工具 NilAway:

NilAway是一個靜態(tài)分析工具,旨在通過在編譯時而不是運行時捕獲nil panic來幫助開發(fā)人員避免在生產(chǎn)中出現(xiàn)這種情況。NilAway類似于標準的nilness分析器,但它采用更復雜和強大的靜態(tài)分析技術來跟蹤包內(nèi)和跨包的nil流,并報告錯誤,為用戶提供更輕松的調(diào)試nilness流程。

NilAway關鍵特性

NilAway具有三個關鍵特性,使其脫穎而出:

完全自動化:NilAway配備有推理引擎,因此除了標準的Go代碼之外,它不需要從開發(fā)人員那里獲取任何其他信息(例如注釋)。

速度快:我們設計NilAway為快速且可擴展,適用于大型代碼庫。在我們的測量中,啟用NilAway時構建時間開銷不到5%。我們還在不斷應用優(yōu)化來進一步減少其占用空間。

實用性:它不能阻止代碼中所有可能的nil panic,但它可以捕獲我們在生產(chǎn)中觀察到的大多數(shù)潛在nil panic,使NilAway在實用性和構建時間開銷之間保持良好平衡。

安裝

NilAway是使用標準的go/analysis框架實現(xiàn)的,因此易于與現(xiàn)有的分析驅動程序集成(例如golangci-lint、nogo或作為獨立檢查器運行)。下面是將NilAway作為獨立檢查器運行的說明。更多集成支持將很快添加。

獨立檢查器

通過以下命令從源代碼安裝二進制文件:

go install go.uber.org/nilaway/cmd/nilaway@latest

然后,通過以下命令運行l(wèi)inter:

nilaway ./...

案例一 NilAway如何幫助防止nil panic

讓我們看一些示例,了解NilAway如何幫助防止nil panic。

// Example 1:
var p *P
if someCondition {
      p = &P{}
}
print(p.f) // nilness reports NO error here, but NilAway does.

在這個示例中,局部變量p僅在someCondition為true時初始化。在字段訪問p.f時,如果someCondition為false,則可能發(fā)生panic。NilAway能夠捕獲這個潛在的nil導致的panic并報告以下錯誤:

go.uber.org/example.go:12:9: error: Potential nil panic detected. Observed nil flow from source to dereference point:
    -> go.uber.org/example.go:12:9: unassigned variable `p` accessed field `f`

如果我們使用nil檢查(if p != nil)保護此解引用,錯誤將消失。

案例二 NilAway還能夠捕獲跨函數(shù)的nil流

例如,考慮以下代碼片段:

// Example 2:
func foo() *int {
      return nil
}
func bar() {
     print(*foo()) // nilness reports NO error here, but NilAway does.
}

在這個示例中,函數(shù)foo返回一個nil指針,在bar中直接解引用,無論何時調(diào)用bar都會導致panic。NilAway能夠捕獲這個潛在的nil導致的panic并報告以下錯誤:

go.uber.org/example.go:23:13: error: Potential nil panic detected. Observed nil flow from source to dereference point:
    -> go.uber.org/example.go:20:14: literal `nil` returned from `foo()` in position 0
    -> go.uber.org/example.go:23:13: result 0 of `foo()` dereferenced

請注意,在上面的示例中,foo不一定要與bar位于同一個包中。NilAway還能夠跟蹤跨包的nil流。此外,NilAway處理Go特定的語言構造,如接收器、接口、類型斷言、類型開關等。

總結

今天針對 Go 里最常見的 nil 指針問題進行了靜態(tài)分析工具 NilAway 的分享。雖然目前該工具還沒有正式的生產(chǎn)可用。

以上就是Go Uber靜態(tài)分析工具NilAway使用初體驗的詳細內(nèi)容,更多關于Go Uber靜態(tài)分析NilAway的資料請關注腳本之家其它相關文章!

相關文章

  • Go語言題解LeetCode1051高度檢查器示例詳解

    Go語言題解LeetCode1051高度檢查器示例詳解

    這篇文章主要為大家介紹了Go語言題解LeetCode1051高度檢查器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • go語言中decimal的用法詳解

    go語言中decimal的用法詳解

    本文主要介紹了go語言中decimal的用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • 一文教你如何封裝安全的go

    一文教你如何封裝安全的go

    這篇文章主要給大家介紹了關于如何封裝安全go的相關資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-02-02
  • Go語言的反射reflect使用大全

    Go語言的反射reflect使用大全

    Go語言中reflect包提供了運行時反射的功能,本文主要介紹了Go語言的反射reflect使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-08-08
  • Go語言實現(xiàn)登錄驗證代碼案例

    Go語言實現(xiàn)登錄驗證代碼案例

    這篇文章主要介紹了Go語言實現(xiàn)登錄驗證代碼案例,代碼和圖文講解的很清晰,有感興趣的可以學習下
    2021-03-03
  • 代碼整潔利器go?fmt命令使用詳解

    代碼整潔利器go?fmt命令使用詳解

    這篇文章主要為大家介紹了代碼整潔利器go?fmt命令使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Gotify搭建你的消息推送系統(tǒng)

    Gotify搭建你的消息推送系統(tǒng)

    這篇文章主要介紹了Gotify搭建你的消息推送系統(tǒng),今天要分享的是 gotify,是一個用 go 編寫的消息服務端,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2024-01-01
  • 在Go中動態(tài)替換SQL查詢中的日期參數(shù)的完整步驟

    在Go中動態(tài)替換SQL查詢中的日期參數(shù)的完整步驟

    在處理數(shù)據(jù)庫查詢時,經(jīng)常需要根據(jù)不同的輸入條件動態(tài)地構造SQL語句,尤其是在涉及日期范圍的查詢中,能夠根據(jù)實際需求調(diào)整查詢的起始和結束日期顯得尤為重要,在本文中,我將介紹如何在Go語言中實現(xiàn)動態(tài)替換SQL查詢中的日期參數(shù),需要的朋友可以參考下
    2024-11-11
  • Golang嵌入資源文件實現(xiàn)步驟詳解

    Golang嵌入資源文件實現(xiàn)步驟詳解

    在應用程序中附帶代碼以外的其他資源可能會很有用,常用的實現(xiàn)方法是嵌入對象或數(shù)據(jù)。在數(shù)據(jù)庫中存儲數(shù)據(jù)應用中,需要定義schema,在應用啟動時創(chuàng)建表,但如果找不到schema文件呢?Go1.16提供embed包讓實現(xiàn)變得簡單,之前很多第三方包實現(xiàn)類似功能
    2023-01-01
  • Go測試之.golden文件使用示例詳解

    Go測試之.golden文件使用示例詳解

    這篇文章主要為大家介紹了Go測試之.golden文件使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08

最新評論