Maison > développement back-end > Golang > Pourquoi les packages Go Parser et Ast ne détectent-ils pas les commentaires de document sur les types de structure ?

Pourquoi les packages Go Parser et Ast ne détectent-ils pas les commentaires de document sur les types de structure ?

DDD
Libérer: 2024-11-14 17:20:02
original
515 Les gens l'ont consulté

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

Go Parser ne détecte pas les commentaires de document sur le type de structure

Malgré l'utilisation de l'analyseur Go et des packages ast, le code fourni est incapable de détecter les commentaires de documentation sur les types de structure FirstType et SecondType.

Comprendre le problème

La fonction readType du package go/doc suggère que lorsqu'un TypeSpec n'a pas de documentation associée, la documentation est récupérée à partir du GenDecl.

Inspection de l'AST

Pour inspecter l'AST et résoudre ce problème, les modifications suivantes ont été apportées au code :

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
        })
    }
}
Copier après la connexion

En incluant un cas pour *ast.GenDecl, le programme génère désormais la documentation perdue pour FirstType et SecondType.

Une observation intéressante

Cependant, cette approche présente une limitation lorsque plusieurs types de structure sont définis dans un seul TypeSpec :

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

    // SecondType docs
    SecondType struct {
        // SecondMember docs
        SecondMember string
    }
)
Copier après la connexion

Dans ce cas, les documents sont associés à la fois au GenDecl et aux TypeSpecs individuels.

Conclusion

Bien qu'il soit possible d'utiliser l'AST pour analyser les commentaires, il est préférable d'utiliser le package go/doc pour gérer cette tâche. Le package go/doc peut récupérer efficacement les commentaires de documentation pour divers composants Go, y compris les types de structure.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal