Rumah > pembangunan bahagian belakang > Golang > Mengapa Pakej Go Parser dan Ast Tidak Mengesan Komen Dokumen pada Jenis Struktur?

Mengapa Pakej Go Parser dan Ast Tidak Mengesan Komen Dokumen pada Jenis Struktur?

DDD
Lepaskan: 2024-11-14 17:20:02
asal
524 orang telah melayarinya

Why Aren't Go Parser and Ast Packages Detecting Doc Comments on Struct Types?

Go Parser Not Detecting Doc Comments on Struct Type

Walaupun menggunakan parser Go's dan pakej ast, kod yang disediakan tidak dapat mengesan komen dokumentasi pada jenis struct FirstType dan SecondType.

Memahami Isu

Fungsi readType pakej go/doc mencadangkan bahawa apabila TypeSpec tidak mempunyai dokumentasi yang berkaitan, dokumentasi itu diambil daripada GenDecl.

Memeriksa AST

Untuk memeriksa AST dan menangani isu ini, perubahan berikut telah dibuat kepada kod:

func main() {
    // ...

    for _, f := range d {
        ast.Inspect(f, func(n ast.Node) bool {
            switch x := n.(type) {
            // ...

            case *ast.GenDecl:
                fmt.Printf("%s:\tGenDecl %s\n", fset.Position(n.Pos()), x.Doc.Text())
            }

            return true
        })
    }
}
Salin selepas log masuk

Dengan memasukkan kes untuk *ast.GenDecl, program kini mengeluarkan dokumentasi yang hilang untuk FirstType dan SecondType.

Satu Pemerhatian Menarik

Walau bagaimanapun, pendekatan ini mempunyai had apabila pelbagai jenis struct ditakrifkan dalam satu TypeSpec:

// This documents FirstType and SecondType together
type (
    // FirstType docs
    FirstType struct {
        // FirstMember docs
        FirstMember string
    }

    // SecondType docs
    SecondType struct {
        // SecondMember docs
        SecondMember string
    }
)
Salin selepas log masuk

Dalam kes ini, dokumen menjadi dikaitkan dengan kedua-dua GenDecl dan TypeSpecs individu.

Kesimpulan

Semasa menggunakan AST untuk menghuraikan ulasan adalah mungkin , adalah lebih baik untuk menggunakan pakej go/doc untuk mengendalikan tugas ini. Pakej go/doc boleh mendapatkan semula ulasan dokumentasi untuk pelbagai komponen Go dengan berkesan, termasuk jenis struct.

Atas ialah kandungan terperinci Mengapa Pakej Go Parser dan Ast Tidak Mengesan Komen Dokumen pada Jenis Struktur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan