Maison > Article > développement back-end > Pourquoi My Go Parser ne détecte-t-il pas les commentaires de documents sur les types de structure ?
Go Parser ne détecte pas les commentaires de document sur le type de structure
Dans Go, l'identification des commentaires de document associés à un type de structure peut être obtenue via le paquets analyseur et ast. Voici une enquête sur les raisons pour lesquelles ces commentaires peuvent ne pas être détectés :
Le problème
Le code source fourni dans la question démontre une tentative de récupération des commentaires Doc pour un type de structure à l'aide Le package d'analyseur de Go. Cependant, les commentaires Doc pour les types de structure FirstType et SecondType sont manquants dans la sortie.
La solution
Pour résoudre ce problème, nous devons réfléchir à la façon dont Go gère la documentation dans son arbre de syntaxe abstraite (AST). Le package go/doc suggère que lorsqu'il n'y a pas de documentation attachée à un TypeSpec, la documentation du GenDecl parent doit être utilisée à la place.
Inspecter les GenDecls
Adapter le code de la question pour inclure la casse pour *ast.GenDecl :
for _, f := range d { ast.Inspect(f, func(n ast.Node) bool { switch x := n.(type) { case *ast.FuncDecl: fmt.Printf("%s:\tFuncDecl %s\t%s\n", fset.Position(n.Pos()), x.Name, x.Doc) case *ast.TypeSpec: fmt.Printf("%s:\tTypeSpec %s\t%s\n", fset.Position(n.Pos()), x.Name, x.Doc) case *ast.Field: fmt.Printf("%s:\tField %s\t%s\n", fset.Position(n.Pos()), x.Names, x.Doc) case *ast.GenDecl: fmt.Printf("%s:\tGenDecl %s\n", fset.Position(n.Pos()), x.Doc) } return true }) }
L'exécution de ce code génère les commentaires Doc manquants pour FirstType et SecondType.
Comportement inattendu
Bien que cette méthode découvre les commentaires Doc manquants, elle révèle également que la documentation du GenDecl est involontairement incluse. En effet, l'AST considère les définitions de type struct comme des contractions de la version entre parenthèses des définitions de type, traitant toutes les définitions de la même manière, quel que soit le regroupement.
Conclusion
Pour récupérer efficacement Doc commentaires pour les types de structure utilisant de l'AST pur, il est crucial de reconnaître ce comportement. Cependant, l'utilisation du package go/doc reste l'approche privilégiée car elle évite ces complexités et fournit une solution complète pour l'analyse de la documentation dans Go.
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!