Giter VIP home page Giter VIP logo

gg's Introduction

gg is grep for Go-language source code

It restricts the search to designated Go token classes, such as identifiers, package names, numbers, comments, keywords, and the rest. Because gg understands what it is searching for, it can make smart matches. For example:

  • Searching for numbers by value rather than regular expression: find 255 expressed as 0b1111_1111, 0377, 255, or 0xff with "gg v 255 *.go". Note: this is a value ("v") search as opposed to a number ("n") search. Values must be valid Go integer or floating point literals (22, 0xface, 6.02214076e23, 0o644).

  • Searching for "if" in Go keywords, but not in comments or strings, is "gg k if ." for keywords matching "if" in all the ".go" files in the current directory.

  • Searching a file hierarchy recursively for comments containing "case" (ignoring switch statements), is "gg -r c case ."

  • gg has a grep mode, "-g" which omits the Go grammar tokenization. This mode is generally twice as fast as standard gg, and even faster compared to classic grep. Related is "-go=false" to allow scanning of non-Go files.

Documentation

gg does much more. Please see the man page for details.

Installation

go get github.com/MichaelTJones/gg
cd gg
go install

gg's People

Contributors

michaeltjones avatar nzachow avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

nzachow

gg's Issues

Matches inside string literals not showing properly

Given that I have the following line in a source code:

var flagVisible = flag.Bool("visible", true, `limit grep to visible files (skip ".hidden.go")`)

And issue the command gg aV grep file.go

I expected the complete line to show up in the result set, but it only shows the
text inside the string literal.

Am I missing something here? This behavior seems counter intuitive to me.

Build failure: Invalid shifts (linux/amd64, Go 1.12.7)

Using Go 1.12.7 on Fedora 30:

$ go get  github.com/MichaelTJones/gg
# github.com/MichaelTJones/lex
gowork/src/github.com/MichaelTJones/lex/lex.go:943:19: invalid operation: 1 << a (shift count type rune, must be unsigned integer)
gowork/src/github.com/MichaelTJones/lex/lex.go:945:19: invalid operation: 1 << (a - 64) (shift count type rune, must be unsigned integer)
$ go version
go version go1.12.7 linux/amd64

(incidentially I had to install bzr because of the launchpad.net/gommap package. You may want to point this out in the README)

Regexp on value mode is misbehaving

Applying regexp 0.1 against the following input exits with no results, I expected all of them to match

func main() {
	v1 := 0x1
	v2 := 0X1
	v3 := 001
}

in addition, regexp ..1 will print the following to stderr:

error: strconv.ParseFloat: parsing "..1": invalid syntax

i suspect it shouldn't try to parse a regexp syntax as a float here:

gg/scan.go

Line 158 in 954a0db

vFloat, err = strconv.ParseFloat(n, 64)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.