PHP im Vim programmieren

Nach meinen Beiträgen zur optimal konfigurierten Vim-Umgebung und gutem Code mit PHP komme ich in meiner Mini-Serie zur Softwareentwicklung in PHP nun dazu, wie diese PHP-Werkzeuge in Vim zum Einsatz kommen.

In Vim bietet sich die Erweiterung Syntastic für diese Aufgabe an. Syntastic unterstützt eine Vielzahl von
Programmiersprachen
. Für PHP werden der PHP-Interpreter, PHP_CodeSniffer und PHPMD als Syntaxchecker unterstützt. Diese drei Checker habe ich im vorherigen Beitrag bereits kurz beschrieben.

Syntastic prüft, ob das entsprechende externe Programm installiert ist und wendet die Syntaxchecker beim Speichern einer Datei automatisch an. Etwaige Fehler oder Warnungen werden in der Location List in einem eingeblendeten Buffer angezeigt.

Hier ein Screenshot von der Projekt-Website:

Syntastic screenshot

In Vimified muss das Package coding in local.vimrc aktiviert werden, um syntastic nutzen zu können:

let g:vimified_packages = ['general', 'color', 'coding', ... ]

In Drupal gibt es neben den *.php– und *.inc-Dateien auch Dateien mit den Endungen module, install, inc, test und theme. Diese müssen als PHP-Dateien erkannt werden:

" Define filetype php for Drupal source code files
au BufNewFile,BufRead *.inc     :set ft=php
au BufNewFile,BufRead *.module  :set ft=php
au BufNewFile,BufRead *.test    :set ft=php
au BufNewFile,BufRead *.theme   :set ft=php
au BufNewFile,BufRead *.install :set ft=php
au BufNewFile,BufRead *.info    :set ft=dosini

In meiner Vimified-Konfiguration sind diese Anweisungen in before.vimrc eingetragen.

In after.vimrc muss der Pfad zum Regelset des Coding Standards angegeben werden, den phpcsanwenden soll:

let g:syntastic_php_phpcs_args='--standard=/var/www/drupal/modules/coder/coder_sniffer/Drupal/ruleset.xml'

Wenn das installierte phpmd oder phpcs nicht angewendet werden soll, dann kann die Liste der Syntaxchecker auch explizit angegeben werden:

"let g:syntastic_php_checkers = ['php', 'phpcs', 'phpmd']
let g:syntastic_php_checkers = ['php', 'phpcs']

Das ist z.B. sinnvoll, wenn diese Syntaxchecker zum ersten Mal auf das Projekt angewendet werden und die Liste der Warnungen und Fehler zu lang ist. Ein anderer Weg, die Liste der Warnungen und Fehler einzuschränken ist, die Datei ruleset.xml aus dem CodeSniffer-Projekt zu kopieren und anzupassen. Ich habe diesen Weg genutzt, um erstmal alle „Diese Funktion hat keinen Kommentar“-Meldungen zu deaktivieren, bis alle anderen Meldungen bearbeitet worden sind.

Syntastic bringt eine umfangreiche Online-Hilfe mit, in der auch die Konfigurationsvariablen ausführlich beschrieben werden:

:he syntastic

Dank der hier skizzierten Konfiguration lassen sich Programmierfehler und unsauberer Code leicht vermeiden bzw. auffinden.

In einem nächsten Blogpost werden ich beschreiben, wie man sich schnell durch den Sourcecode navigieren kann, auch wenn man eine größere Softwarebasis in dem Projekt pflegt, wie es in einem Drupal-Website-Projekt normal ist.