get function body comments using ast

309 views
Skip to first unread message

Dmitry Belyaev

unread,
Oct 9, 2022, 11:50:54 AM10/9/22
to golang-nuts
Hey fellow gophers,

I am trying to get comments from inside of function declaration while also accessing function name, but haven't had much success. Getting name and doc is quite straightforward, I do it with:

    fset := token.NewFileSet()

    f, _ := parser.ParseFile(fset, "testfile", nil, parser.ParseComments)

    ast.Inspect(f, func(n ast.Node) bool {
        fn, ok := n.(*ast.FuncDecl)
        if ok {
            fmt.Println(fn.Name.String(), fn.Doc.Text())
        }
     }

For a function like below I'd get only example // doc comment,

// doc comment
func example() {
  // body comment   <---- looking to extract this comment
}

but I am looking also to extract // body comment.

Please advise on how to extract function name, doc comment AND body comment altogether. Thank you!

wagner riffel

unread,
Oct 10, 2022, 6:03:40 PM10/10/22
to Dmitry Belyaev, golang-nuts
On 10/9/22 11:09, Dmitry Belyaev wrote:
> For a function like below I'd get only *example // doc comment*,
>
> // doc comment
> func example() {
>   // body comment   <---- looking to extract this comment
> }
>
> but I am looking also to extract *// body comment*.
>
> Please advise on how to extract function name, doc comment AND body
> comment altogether. Thank you!
>

I don't think go/parser adds comments to functions body []Stmt list,
though if go through all comments in ast.File and filter by those that
are in range with function's block statement, maybe that's enough.

https://go.dev/play/p/S4Iz504K8Gm

-w


Reply all
Reply to author
Forward
0 new messages