Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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
DDDasal
2024-11-14 17:20:02394semak imbas

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
        })
    }
}

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
    }
)

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:
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