gogrep
1.0.0
GO111MODULE=on go get mvdan.cc/gogrep
Pesquise o código Go usando árvores de sintaxe.
gogrep -x 'if $x != nil { return $x, $*_ }'
Observe que este projeto não está mais em desenvolvimento . Consulte #64 para obter mais detalhes.
usage: gogrep commands [packages]
Um comando tem o formato "-A padrão", onde -A é um dos seguintes:
-x find all nodes matching a pattern
-g discard nodes not matching a pattern
-v discard nodes matching a pattern
-a filter nodes by certain attributes
-s substitute with a given syntax tree
-w write source back to disk or stdout
Um padrão é um pedaço de código Go que pode incluir curingas. Pode ser:
a statement (many if split by semicolons)
an expression (many if split by commas)
a type expression
a top-level declaration (var, func, const)
an entire file
Os curingas consistem em $
e um nome. Todos os curingas com o mesmo nome em uma expressão devem corresponder ao mesmo nó, exceto "_". Exemplo:
$x.$_ = $x // assignment of self to a field in self
Se *
estiver antes do nome, corresponderá a qualquer número de nós. Exemplo:
fmt.Fprintf(os.Stdout, $*_) // all Fprintfs on stdout
*
também pode ser usado para combinar nós opcionais, como:
for $*_ { $*_ } // will match all for loops
if $*_; $b { $*_ } // will match all ifs with condition $b
Os nós resultantes da aplicação dos comandos serão impressos linha por linha na saída padrão.
Aqui estão dois exemplos simples do operando -a:
gogrep -x '$x + $y' // will match both numerical and string "+" operations
gogrep -x '$x + $y' -a 'type(string)' // matches only string concatenations