Hemos hablado entre varios de los involucrados, tanto de Kleer (Martín Salias, Nicolás Paez, Ignacio 'Code' Raguet) como de los clientes y nos parece que, por razones históricas, la comunidad de PHP tiene poco incorporadas prácticas que ya están muy difundidas en las comunidades de otros lenguajes. Prácticas como análisis estático de código, criterios de calidad de código, prueba automatizada, frameworks web sencillos y potentes, y varios más. Está característica de la comunidad se reflejaba en la falta o inmadurez de las herramientas que soportan esas prácticas. Parece que esto está cambiando.
Mi anterior post sobre PHP es viejo y mucho a cambiado desde entonces.
Van entonces algunas herramientas y comentarios, principalmente tomado de Martín Salias, Nicolás Paez, Ignacio 'Code' Raguet y Pablo Morales. Verán que algunas cosas se repiten desde 2008, otras son nuevas.
Análisis de código
¡Gracias Martín por la data!
- PHP_Depend es un equivalente abierto de JavaDepend y NDepend, que permite analizar dependencias, acoplamiento, complejidad ciclomática y muchas otras métricas (ver tabla de métricas)
http://pdepend.org/ - PHP Sat: http://www.program-
transformation.org/PHP/PhpSat - PHP-AST: http://trac.assembla.
com/php-ast - PHP Code Sniffer: http://pear.php.net/
package/PHP_CodeSniffer
Tres analizadores estáticos que pueden ayudar a encontrar problemas, eligiendo las reglas que sean relevantes, se pueden poner en el build server para que se verifiquen todo el tiempo: se puede evitar que ciertos tipos de problemas vuelvan a aparecer.
PHP Sat en particular parece tener una cantidad de reglas interesantes.
- Varios productos de Semantic Designs:
- Clone Doctor busca código duplicado o muy similar. Puede servir para limpiar y unificar, y como guía para refactorizar.
http://www.semanticdesigns.com/Products/Clone/ - PHP Profiler puede servir para analizar puntos críticos u optimizaciones
http://www.semanticdesigns.com/Products/Profilers/ PHPProfiler.html
- Source Code Search Engine te permite hacer queries sobre bases de código muy grandes, con más inteligencia que un grep común, entendiendo el lenguaje (soporta PHP entre muchos otros). Esto puede servir para encontrar usos de ciertos elementos, y es más un complemento que otra cosa.
http://www.semanticdesigns.com/Products/SearchEngine/
Pruebas automatizadas
- PHPUnit es LA elección para pruebas unitarias. SimpleTest ya no es alternativa. Por ejemplo, CakePHP pasó de SimpleTest a PHPUnit. Asociado a PHPUnit están PHP_CodeCoverage, PHPUnit_MockObject. En todas estas herramientas tiene una participación importante Sebastian Bergmann.
- Behat: es un simil Cucumber para hacer BDD.
- PHPSpec2: simil RSpec, y un comentario sobre ambos.
- Integración continua con Jenkins
Frameworks
- CakePHP: un simil Rails, en su versión 2.x está muy mejorado.
- Synfony2: históricamente con mejor 'prensa' que CakePHP, y con el empuje de estar siendo usado en Drupal.
- ZendFramework2: mucha historia, aunque quedo algo rezagado, y está intentando recuperarse.
- Silex: parecido a Sinatra.
- Laravel: un nuevo, interesante jugador
- Y más
2 comentarios:
Gracias a Pablo Lischinsky y Adrian Moya por la referencia a PHPSpec!
hola
Publicar un comentario