En este vídeo, me gustaría mostrarle que Pharo
también dispone de un asistente
que comprueba la calidad de su código, al que llamamos
Quality Assistant o bien Code Critics. Comprueba automáticamente
varias reglas de buenas prácticas en su código.
Echemos un vistazo de cerca.
Ha visto que cada vez que navego por una clase,
aparece una ventana emergente que se abre.
De hecho, lo que sucede es que automáticamente,
mientras estoy navegando,
eligiéremos CubHelix para verlo, tiene
esta pequeña área aquí donde se muestran las
indicaciones. Y cuando lo realizo en el paquete también.
Como es un poco difícil encontrar un
ejemplo convincente, utilizaremos nuestro propio código y
escribiremos código feo en él, de esta manera podrá verlo.
Si voy en Counter, imaginemos por ejemplo que
dejo el código de depuración,
aquí el sistema me dice automáticamente dos cosas.
Me dice que hay depuración de código que ha quedado
en el método. ¿Que puedo hacer?
Puedo comprender de donde viene esta regla.
Entonces si hago clic en él, me dice que utilizar breakpoints
(puntos de interrupción) no es muy inteligente en el código de producción.
Puede decirme, voy a resolver automáticamente este problema.
Probemos, y veamos.
Me dice, es necesario suprimir esto.
Ok, muy bien.
Y de golpe, ya no tiene mas este problema.
Ha visto que lo hacemos mientras programamos.
Finalmente, el sistema reaccionará.
Ahora, hay otra forma de hacerlo, puedo
abrir el Critic browser en mi paquete.
Aquí, es un paquete muy pequeño.
Cometeremos un error para que podamos verlo.
Aquí, si hago "self halt"
o por ejemplo voy a hacer otro método,
Crearé el método "increment3" y
invoco un método que no existe.
Lo llamaremos "foofoo".
Entonces, aquí está rojo, pero supongamos que
en un estado febril no me di cuenta.
Voy a usar el Critic browser (navegador crítico)
en mi código y aquí lo que me muestra el navegador
critico és un conjunto de reglas.
De hecho, hay muchas reglas con sus explicaciones.
Si usted tiene este código, entonces en este
momento és mejor usarlo de esa manera, si hay
una asignación dentro.
Hay varios tipos de reglas.
Hay reglas vinculadas a la optimización, reglas
que pueden potencialmente identificar bugs (errores).
Reglas que identifican como verdaderas.
Si voy aquí, veo el código.
Puedo navegar por la definición como lo hicimos antes,
o puedo transformarlo.
Y la advertencia ha desaparecido.
Ahora lo que es importante de ver, es que
todas estas reglas se basan en heurística
Esto significa que a veces hace cosas
que no son muy correctas. Usted lo sabe y tiene
que dejarlo así en el sistema.
Lo que también puede hacer, puede decir, esto es un falso
positivo. Imaginemos que tengo un mensaje
"foofoo" y sé que quiero guardarlo, puedo decir
que esta regla es falsa para este
método, Lo escribiré.
Aquí está gris, qué significa esto?
Significa que mas tarde podría mirar
y preguntarme si tal vez esta regla era cierta y
tenía sentido
volver a visitarla.
Podemos guardar los Critics.
Significa que podemos guardar los resultados de las reglas
así como los falsos positivos.
Cuando escribimos que algo era falso, no queremos
que el sistema nos lo repita constantemente
cada vez que ejecutamos las reglas.
Entonces, cuando guarda a los crítics, los pondrá en un manifiesto.
Veamos este. Aquí, tengo mi manifiesto que sera
versionado con el sistema.
No es necesario ver cómo está codificado en su interior, no nos importa
El Manifiesto permite codificar cosas, pero importa poco.
Esto, no lo tocáis, és el critico de código quien lo utilizara
en las próximas ejecuciones.
Así pues, tiene un Manifiesto para cada paquete.
Cuando asigna una versión a su código, entonces también
asigna una versión a su manifiesto y cuando ejecute de
nuevo sus críticos de código, automáticamente tendrá
en cuenta todos los falsos positivos y todas
las meta-observaciones que usted a incorporado.
Así, lo qué es realmente interesante con estas reglas de calidad
és que Pharo las integra en un proceso de desarrollo.
De manera que tenemos,
unos servidores Jenkins que,
cada vez que tira adelante su proyecto, cargara y correrá
automáticamente estas reglas de calidad para verificar que
su programa realmente sigue las reglas