OXIESEC PANEL
- Current Dir:
/
/
opt
/
golang
/
1.19.4
/
src
/
go
/
doc
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
12/01/2022 06:13:56 PM
rwxr-xr-x
📄
Makefile
246 bytes
12/01/2022 06:12:58 PM
rw-r--r--
📁
comment
-
12/01/2022 06:13:56 PM
rwxr-xr-x
📄
comment.go
1.93 KB
12/01/2022 06:12:58 PM
rw-r--r--
📄
comment_test.go
2.7 KB
12/01/2022 06:12:58 PM
rw-r--r--
📄
doc.go
11.08 KB
12/01/2022 06:12:58 PM
rw-r--r--
📄
doc_test.go
6.66 KB
12/01/2022 06:12:58 PM
rw-r--r--
📄
example.go
21.34 KB
12/01/2022 06:12:58 PM
rw-r--r--
📄
example_internal_test.go
1.64 KB
12/01/2022 06:12:58 PM
rw-r--r--
📄
example_test.go
9.62 KB
12/01/2022 06:12:58 PM
rw-r--r--
📄
exports.go
8.5 KB
12/01/2022 06:12:58 PM
rw-r--r--
📄
filter.go
2.22 KB
12/01/2022 06:12:58 PM
rw-r--r--
📄
headscan.go
2.49 KB
12/01/2022 06:12:58 PM
rw-r--r--
📄
reader.go
28.04 KB
12/01/2022 06:12:58 PM
rw-r--r--
📄
synopsis.go
2.19 KB
12/01/2022 06:12:58 PM
rw-r--r--
📄
synopsis_test.go
1.81 KB
12/01/2022 06:12:58 PM
rw-r--r--
📁
testdata
-
12/01/2022 06:13:56 PM
rwxr-xr-x
Editing: headscan.go
Close
// Copyright 2011 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. //go:build ignore /* The headscan command extracts comment headings from package files; it is used to detect false positives which may require an adjustment to the comment formatting heuristics in comment.go. Usage: headscan [-root root_directory] By default, the $GOROOT/src directory is scanned. */ package main import ( "bytes" "flag" "fmt" "go/doc" "go/parser" "go/token" "io/fs" "os" "path/filepath" "regexp" "runtime" "strings" ) var ( root = flag.String("root", filepath.Join(runtime.GOROOT(), "src"), "root of filesystem tree to scan") verbose = flag.Bool("v", false, "verbose mode") ) // ToHTML in comment.go assigns a (possibly blank) ID to each heading var html_h = regexp.MustCompile(`<h3 id="[^"]*">`) const html_endh = "</h3>\n" func isGoFile(fi fs.FileInfo) bool { return strings.HasSuffix(fi.Name(), ".go") && !strings.HasSuffix(fi.Name(), "_test.go") } func appendHeadings(list []string, comment string) []string { var buf bytes.Buffer doc.ToHTML(&buf, comment, nil) for s := buf.String(); s != ""; { loc := html_h.FindStringIndex(s) if len(loc) == 0 { break } var inner string inner, s, _ = strings.Cut(s[loc[1]:], html_endh) list = append(list, inner) } return list } func main() { flag.Parse() fset := token.NewFileSet() nheadings := 0 err := filepath.WalkDir(*root, func(path string, info fs.DirEntry, err error) error { if !info.IsDir() { return nil } pkgs, err := parser.ParseDir(fset, path, isGoFile, parser.ParseComments) if err != nil { if *verbose { fmt.Fprintln(os.Stderr, err) } return nil } for _, pkg := range pkgs { d := doc.New(pkg, path, doc.Mode(0)) list := appendHeadings(nil, d.Doc) for _, d := range d.Consts { list = appendHeadings(list, d.Doc) } for _, d := range d.Types { list = appendHeadings(list, d.Doc) } for _, d := range d.Vars { list = appendHeadings(list, d.Doc) } for _, d := range d.Funcs { list = appendHeadings(list, d.Doc) } if len(list) > 0 { // directories may contain multiple packages; // print path and package name fmt.Printf("%s (package %s)\n", path, pkg.Name) for _, h := range list { fmt.Printf("\t%s\n", h) } nheadings += len(list) } } return nil }) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } fmt.Println(nheadings, "headings found") }