Qual é a melhor ferramenta ou método para procurar uma palavra específica em uma base de código?
-
04-07-2019 - |
Pergunta
Que ferramenta ou método que você recomenda para localizar e substituir valores em seu código? Se o código é em Linux / Unix, são encontrar e grep o melhor método?
Solução
Dê uma olhada ack , que é projetado para pesquisar grandes bases de código.
Para substituir, olhada bandeiras -i, -p e -e do Perl. Você pode fazer coisas como:
$ perl -i -p -e's/\bthisword\b/thatword/g' $(find . -name *.html)
para substituir todas as instâncias do thisword com thatword em todos os arquivos .html na árvore.
Outras dicas
Eu estou supondo que você pretende mudar o nome de uma variável.
Depende do que o corpo de código é. Para C #, ferramenta de renomeação do Visual Studio é muito bom. Lembre-se que para que ele funcione de forma confiável, é necessário a mudança de nome para trabalhar lado a lado com o compilador / intérprete, assim você pode ter certeza que você só fazer a mudança no escopo direita.
Se é um achado muito simples / substituir, certamente o bloco de notas humilde faria um trabalho OK?
find
e grep
vai encontrar a palavra que você está procurando, mas para substituí-lo você precisa usar sed
, awk
ou seu filtro editar fluxo favorito.
groovy
, python
, perl
tudo vai fazer pesquisa / operações substituir -. Usar o seu favorito ou escolher um para aprender
Para operações em uma base de código, eu vou usar find | sed
para operações simples (cygwin
é seu amigo) e pesquisa do IDE / substituir com o apoio regex para operações mais complexas. Eclipse, Idea, Visual Studio e até mesmo SQL Server Manglement Estúdio tem busca poderosa / substituir funções. A má notícia é que nem todos eles usam a mesma sintaxe regex.
Dê uma olhada na PowerGrep ... tem anúncios em todos os lugares no SO. Eu estou começando a querer que mesmo quando eu realmente não precisa -
PD:. Eles têm um 15 dias de demonstração gratuita, por isso, se este é um pequeno trabalho que você poderia usar apenas a demo
Esta é apenas uma dica acima answer.could aceita de Andy não adicionar isso como um comentário devido à menor reputação
Use! como um separador quando você tem tempo difícil escapar das cordas
por exemplo $ perl -i -p do -e! \ Bthisword \ b! Thatword! G' $ (encontrar. -Name * .html)
encontrar e grep não construir indecies, então eles vão sempre ser mais lento do que as alternativas que fazem. Dito isto, eles trabalham muito bem se a sua base de código é apenas algumas dezenas files.in Fi
Eclipse tem um bom pesquisa de arquivo recurso (Ctrl + H). Ele também pode levar semântica da linguagem em consideração se você tem os plugins corretos (Java funciona fora da caixa, é claro). A única ressalva é que ele pode ser um pouco lento na primeira vez que você busca em um determinado conjunto de arquivos.