Home

Awesome

Get info on length of functions in a Go package.

Given package is searched in directories provided by envs in following order: GOPATH, GOROOT. AST is generated only for Go source files present in package path, ie, flen crypto shall only parse crypto.go. For parsing crypto/sha1, full package path needs to be provided, ie flen crypto/sha1. For externally implemented functions, line number will be 0, as their is no enough information available to get their line numbers.

Install

go get github.com/lafolle/flen/cmd/flen

Usage

Usage: flen [options] <pkg>
  -bs int
        bucket size (natural number) (default 5)
  -l int
        min length (inclusive)
  -t    include tests files
  -u int
        max length (exclusive) (default 1000000)	

Examples

Simple usage

$ flen strings
Full path of pkg:  /usr/local/go/src/strings
Externally implemented funcs
+-------+-----------+-------------------------------------------+---------+------+
| INDEX |   NAME    |                 FILEPATH                  | LINE NO | SIZE |
+-------+-----------+-------------------------------------------+---------+------+
|     0 | IndexByte | /usr/local/go/src/strings/strings_decl.go |       0 |    0 |
+-------+-----------+-------------------------------------------+---------+------+

[1-6)   -       ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
[6-11)  -       ∎∎∎∎∎∎∎∎∎∎
[11-16) -       ∎∎∎∎∎∎∎∎∎∎∎∎
[16-21) -       ∎∎∎∎∎
[21-26) -       ∎∎∎
[26-31) -       ∎∎∎∎
[31-36) -       ∎∎∎∎
[36-41) -       ∎∎∎
[41-46) -       ∎∎
[46-51) -       ∎
[51-56) -
[56-61) -       ∎
[61-66) -
$

Range of lengths

To get all function/methods whose lengths fall in given range:

flen -l 16 -u 41 strings
Full path of pkg:  /usr/local/go/src/strings
Functions with length in range [16, 41)
+-------+---------------------+--------------------------------------+---------+------+
| INDEX |        NAME         |               FILEPATH               | LINE NO | SIZE |
+-------+---------------------+--------------------------------------+---------+------+
|     0 | Replace             | /usr/local/go/src/strings/replace.go |     365 |   17 |
|     1 | Seek                | /usr/local/go/src/strings/reader.go  |     109 |   17 |
|     2 | Join                | /usr/local/go/src/strings/strings.go |     388 |   18 |
|     3 | WriteString         | /usr/local/go/src/strings/replace.go |     432 |   20 |
|     4 | isSeparator         | /usr/local/go/src/strings/strings.go |     502 |   20 |
|     5 | WriteString         | /usr/local/go/src/strings/replace.go |     385 |   22 |
|     6 | genSplit            | /usr/local/go/src/strings/strings.go |     281 |   23 |
|     7 | explode             | /usr/local/go/src/strings/strings.go |      17 |   25 |
|     8 | Replace             | /usr/local/go/src/strings/replace.go |     461 |   26 |
|     9 | WriteString         | /usr/local/go/src/strings/replace.go |     490 |   27 |
|    10 | makeGenericReplacer | /usr/local/go/src/strings/replace.go |     240 |   29 |
|    11 | FieldsFunc          | /usr/local/go/src/strings/strings.go |     353 |   30 |
|    12 | Replace             | /usr/local/go/src/strings/strings.go |     681 |   31 |
|    13 | Index               | /usr/local/go/src/strings/strings.go |     147 |   33 |
|    14 | LastIndex           | /usr/local/go/src/strings/strings.go |     184 |   33 |
|    15 | lookup              | /usr/local/go/src/strings/replace.go |     193 |   33 |
|    16 | Map                 | /usr/local/go/src/strings/strings.go |     422 |   37 |
|    17 | WriteString         | /usr/local/go/src/strings/replace.go |     312 |   38 |
|    18 | makeStringFinder    | /usr/local/go/src/strings/search.go  |      48 |   40 |
+-------+---------------------+--------------------------------------+---------+------+

[1-6)   -       ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
[6-11)  -       ∎∎∎∎∎∎∎∎∎∎
[11-16) -       ∎∎∎∎∎∎∎∎∎∎∎∎
[16-21) -       ∎∎∎∎∎
[21-26) -       ∎∎∎
[26-31) -       ∎∎∎∎
[31-36) -       ∎∎∎∎
[36-41) -       ∎∎∎
[41-46) -       ∎∎
[46-51) -       ∎
[51-56) -
[56-61) -       ∎
[61-66) -

Including test files

By default, test files are ignored. Enable parsing test files by -t flag

$ flen -t strings
Full path of pkg:  /usr/local/go/src/strings

Externally implemented funcs
+-------+-----------+-------------------------------------------+---------+------+
| INDEX |   NAME    |                 FILEPATH                  | LINE NO | SIZE |
+-------+-----------+-------------------------------------------+---------+------+
|     0 | IndexByte | /usr/local/go/src/strings/strings_decl.go |       0 |    0 |
+-------+-----------+-------------------------------------------+---------+------+

[1-6)		-	∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
[6-11)		-	∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
[11-16)		-	∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
[16-21)		-	∎∎∎∎∎∎∎∎∎∎∎∎
[21-26)		-	∎∎∎∎∎
[26-31)		-	∎∎∎∎∎∎
[31-36)		-	∎∎∎∎
[36-41)		-	∎∎∎∎
[41-46)		-	∎∎∎∎∎∎∎
[46-51)		-	∎
[51-56)		-	∎
[56-61)		-	∎
[61-66)		-	
[66-71)		-	∎
[71-76)		-	
[76-81)		-	
[81-86)		-	
[86-91)		-	
[91-96)		-	
[96-101)	-	
[101-106)	-	
[106-111)	-	
[111-116)	-	
[116-121)	-	
[121-126)	-	
[126-131)	-	
[131-136)	-	
[136-141)	-	
[141-146)	-	
[146-151)	-	
[151-156)	-	
[156-161)	-	
[161-166)	-	
[166-171)	-	
[171-176)	-	
[176-181)	-	
[181-186)	-	
[186-191)	-	
[191-196)	-	
[196-201)	-	
[201-206)	-	
[206-211)	-	
[211-216)	-	
[216-221)	-	
[221-226)	-	
[226-231)	-	
[231-236)	-	
[236-241)	-	
[241-246)	-	
[246-251)	-	
[251-256)	-	
[256-261)	-	
[261-266)	-	∎
[266-271)	-