ack statt grep für Code-Suche [mit CakePHP-Config]

Suchergebnisse mit ack

Für viele Entwickler ist grep unter Unix-artigen Betriebssystemen das Tool der Wahl, um Texte in Dateien zu suchen. Was liegt näher als es auch zu nutzen, um sich einen Überblick über Quellcode zu verschaffen?
Prinzipiell kann grep diese Aufgabe natürlich auch erfüllen, schließlich ist Quellcode auch nur eine Form von Textdateien. Es gibt aber mit ack ein Programm, das genau auf den Anwendungszweck Code-Suche optimiert ist.

Ack liefert in vielen Fällen einen sehr guten Überblick über fremden und eigenen Code und ermöglicht auch ohne eine ausgewachsene IDE Antworten auf Fragen wie: “Wo wird eine Funktion aufgerufen, die ich gerade bearbeiten möchte?” oder “An welcher Stelle wird dieser Text in ein Template geladen oder ausgegeben?”

Features

Ack hat eine Reihe von Vorteilen gegenüber grep, wenn es um Code geht:

  • Beschränkung auf konfigurierbare Dateitypen
  • Ausschließen von Verwaltungsverzeichnissen wie .git oder .svn sowie temporären Dateien
  • angenehme Darstellung von betroffener Datei und Fundstelle (inkl. Highlighting)
  • rasend schnell
  • ein Zeichen weniger zu tippen schon beim Namen der Binary (mit einem Augenzwinkern und abhängig vom System!)

Alle Gründe der Entwickler finden sich auf der Homepage von ack.

Ein üblicher Aufruf von ack ist erfreulich kurz:

ack test

Suchergebnisse mit ack

Installation

Die offiziellen Installationsanleitungen finden sich auf der Entwicklerseite, für viele Linux-Distributionen existieren fertige Pakete in den Repositorys:

Ubuntu/Debian:

sudo apt-get install ack-grep

Fedora:

sudo yum install ack

Mac OS X (via Homebrew):

brew install ack

Config für CakePHP

Für unsere CakePHP-Projekte haben wir einen eigenen Datentyp definiert, der die Suche auf die dort relevanten Dateitypen begrenzt. Die Konfiguration wird für den aktuellen User in der Datei ~/.ackrc hinterlegt:

--type-set
ctp=.ctp
--type-set
cake=.php,.ctp

Nutzen lässt sich diese Typ-Konfiguration dann folgendermaßen:

ack --type=cake MeinController

Effizienz-Junkies können über einen Alias noch weitere Tastenanschläge sparen, indem sie in die .bash_aliases folgendes eintragen:

alias ackc='ack --type=cake'

Nach einem Neustart der Shell steht der Verwendung von ack via Bash-Alias nicht mehr im Wege.

Leave a Reply

Your email address will not be published. Required fields are marked *