Psalm è uno strumento di analisi statica dedicato all'ambiente di sviluppo PHP che permette di debuggare il codice scritto nel linguaggio server-side più utilizzato al Mondo. Psalm gira con le versioni PHP 5.6+ e PHP 7, e permette di mantenere alto il livello di qualità del codice, specialmente se condiviso da un gruppo di persone, monitorando e prevenendo gli errori di runtime.
Psalm cerca, nella migliore maniera possibile data dal suo algoritmo interno, di interpretare ogni singola riga di codice per scovare svariate tipologie di errore. Oltre a questa caratteristica, tipica degli strumenti di analisi statica e di debugging di codice, Psalm offre funzionalità personalizzate.
Ad esempio, Psalm tiene traccia delle operazioni logiche del codice, producendo notifiche nei casi in cui si incontrano asserzioni del tipo: if ($a && $a) {}
e if ($a && !$a) {}
, e if ($a) {} elseif ($a) {}
. Inoltre, Psalm controlla che tutte le proprietà di un dato oggetto abbiano un valore assegnato dopo la chiamata alla funzione costruttore. Offre un supporto per uno speciale formato che comprende gli array "object like", permettendo di specificare il tipo delle chiavi degli stessi array:
["hello", "world", "foo" => new stdClass, 28 => false];
Psalm deve essere installato attraverso Composer, ed una volta eseguita la procedura d'installazione, sarà possibile, tramite il prompt dei comandi, utilizzare l'istruzione --threads=[X]
che permette di lanciare l'analisi del tool su X thread. Questa istruzione, chiamata appunto modalità multi-thread, è dedicata a codici di grandi dimensioni, ed ha un grosso impatto sulle performance del processo.
Nella modalità a controlli incrementali invece, attivabile tramite l'opzione --diff
, Psalm analizzerà solo i file che hanno ricevuto modifiche. Le funzionalità di Psalm, possono essere estese tramite plugin personalizzati ricorrendo alla sintassi:
<?php
class SomePlugin extends \Psalm\Plugin
{
}
return new SomePlugin;
che accetta due metodi:
afterStatementsCheck
- chiamato dopo l'esecuzione di ogni riga;afterExpressionCheck
- chiamato dopo l'esecuzione di ogni espressione.
Per conoscere approfonditamente le API complete del tool, la documentazione ufficiale è uno strumento fondamentale.
Via Psalm