WEBVTT

00:00:01.260 --> 00:00:03.390 align:middle
Dans cette vidéo, je
voudrais vous montrer que Pharo

00:00:03.557 --> 00:00:06.040 align:middle
offre aussi la possibilité
d'avoir un assistant qui va

00:00:06.207 --> 00:00:08.640 align:middle
vérifier la qualité de votre
code, et qu'on appelle soit

00:00:08.807 --> 00:00:11.450 align:middle
le Quality Assistant, soit
Code Critics qui va faire

00:00:11.617 --> 00:00:14.770 align:middle
tourner automatiquement des règles
de bonne conduite sur votre code.

00:00:15.710 --> 00:00:17.040 align:middle
Regardons ça un
petit peu de plus près.

00:00:17.300 --> 00:00:19.220 align:middle
Vous avez vu qu'à chaque
fois que je browse une classe,

00:00:19.387 --> 00:00:22.770 align:middle
vous avez ce petit
pop-up qui s'affiche.

00:00:22.937 --> 00:00:25.300 align:middle
En fait, ce qui se
passe c'est que de manière

00:00:25.467 --> 00:00:27.770 align:middle
automatique, quand je suis
en train de browser, on va

00:00:27.937 --> 00:00:32.010 align:middle
prendre peut-être CubHelix
pour voir, vous avez cette

00:00:32.177 --> 00:00:35.740 align:middle
petite zone-là dans
laquelle s'affiche des

00:00:37.020 --> 00:00:40.390 align:middle
indications. Et quand je le
fais sur le package aussi.

00:00:43.110 --> 00:00:46.350 align:middle
Alors comme c'est un petit
peu difficile de trouver un

00:00:46.517 --> 00:00:49.240 align:middle
exemple probant, on va
utiliser notre propre code et on

00:00:49.407 --> 00:00:52.090 align:middle
va écrire du code pas beau
dedans, comme ça vous allez le voir.

00:00:52.280 --> 00:00:57.080 align:middle
Donc, si je vais dans
Counter, imaginons par exemple que

00:00:57.247 --> 00:01:00.480 align:middle
je laisse du code de debugage,

00:01:02.350 --> 00:01:04.730 align:middle
là le système me dit
automatiquement deux choses.

00:01:05.180 --> 00:01:09.310 align:middle
Il me dit qu'il y a du
code de debugage qui est resté

00:01:09.477 --> 00:01:12.200 align:middle
dans la méthode. Qu'est-ce
que je vais pouvoir faire?

00:01:12.940 --> 00:01:14.540 align:middle
Je peux comprendre
d'où vient cette règle.

00:01:14.707 --> 00:01:16.680 align:middle
Donc si je clique
dessus, il me dit utilise des

00:01:16.847 --> 00:01:19.800 align:middle
breakpoints, ce n'est pas forcément
intelligent dans du code de production.

00:01:21.280 --> 00:01:25.260 align:middle
Il peut me dire, je vais
résoudre automatiquement ce problème.

00:01:25.427 --> 00:01:26.340 align:middle
Essayons, on va voir.

00:01:27.300 --> 00:01:28.530 align:middle
Il me dit, il faut enlever ça.

00:01:28.720 --> 00:01:30.240 align:middle
Oui, ok, très bien.

00:01:30.950 --> 00:01:32.710 align:middle
Et du coup, je n'ai
plus ce problème-là.

00:01:34.540 --> 00:01:36.700 align:middle
Donc là, vous avez vu qu'on
le fait alors que je suis en

00:01:36.867 --> 00:01:40.100 align:middle
train de programmer.
Finalement, le système va réagir.

00:01:40.460 --> 00:01:43.350 align:middle
Maintenant, il y a une autre
façon de le faire, ce que je

00:01:43.517 --> 00:01:48.250 align:middle
peux faire c'est ouvrir le
Critic browser sur mon package.

00:01:48.417 --> 00:01:49.460 align:middle
Là, c'est un tout petit package.

00:01:50.960 --> 00:01:55.460 align:middle
On va faire une erreur
histoire qu'on puisse la voir.

00:01:55.627 --> 00:01:56.440 align:middle
Donc là, si je fais "self halt"

00:02:01.020 --> 00:02:02.790 align:middle
ou par exemple je vais
faire une autre méthode.

00:02:03.460 --> 00:02:06.910 align:middle
Je vais faire une
méthode "increment3" et je vais

00:02:07.077 --> 00:02:08.790 align:middle
invoquer une
méthode qui n'existe pas.

00:02:08.957 --> 00:02:11.740 align:middle
On va l'appeler "foofoo".

00:02:13.110 --> 00:02:16.010 align:middle
Donc là, c'est rouge mais
imaginons que je ne m'en soit

00:02:16.177 --> 00:02:18.900 align:middle
pas rendu compte dans
un état de fébrilité.

00:02:20.590 --> 00:02:24.360 align:middle
Je vais utiliser le Critic browser

00:02:27.380 --> 00:02:31.250 align:middle
sur mon code et donc là
ce que me montre le critic

00:02:31.417 --> 00:02:32.770 align:middle
browser c'est l'ensemble des règles.

00:02:33.720 --> 00:02:38.620 align:middle
Donc, il y a quand même
pas mal de règles avec des

00:02:38.787 --> 00:02:42.790 align:middle
explications. Si vous
avez ce code-là, alors à ce

00:02:42.957 --> 00:02:46.200 align:middle
moment-là il vaut mieux
l'utiliser comme ça, si vous avez

00:02:46.367 --> 00:02:47.450 align:middle
une affectation à l'intérieur.

00:02:47.617 --> 00:02:49.620 align:middle
Vous avez plusieurs sortes de règles.

00:02:50.040 --> 00:02:52.160 align:middle
Vous avez des règles qui
sont liées à l'optimisation, des

00:02:52.327 --> 00:02:54.300 align:middle
règles qui peuvent
potentiellement identifier des bugs fixes.

00:02:54.650 --> 00:02:56.600 align:middle
Vous avez des règles qui
identifient des vraies.

00:02:56.860 --> 00:02:59.200 align:middle
Donc là, par exemple, si je
viens ici, je vois le code.

00:02:59.367 --> 00:03:03.050 align:middle
Donc, je peux browser ma
définition comme ce qu'on a fait

00:03:03.217 --> 00:03:05.810 align:middle
tout à l'heure, ou je
peux le transformer.

00:03:08.180 --> 00:03:12.160 align:middle
Et donc, le warning a disparu.

00:03:13.610 --> 00:03:15.400 align:middle
Maintenant, ce qui est
important de voir, c'est que

00:03:15.567 --> 00:03:17.920 align:middle
toutes ces règles sont
basées sur des heuristiques.

00:03:18.087 --> 00:03:19.700 align:middle
Ça veut dire que, parfois,
vous faites des choses qui ne

00:03:19.867 --> 00:03:22.840 align:middle
sont pas très
catholiques. Vous le savez et il faut

00:03:23.007 --> 00:03:24.200 align:middle
laisser comme tel dans le système.

00:03:24.367 --> 00:03:28.840 align:middle
Ce qu'on peut aussi faire,
on peut dire, ça c'est un faux

00:03:29.007 --> 00:03:33.660 align:middle
positif. Imaginons
que j'ai un message

00:03:33.827 --> 00:03:36.660 align:middle
"foofoo" et que je sais que
je veux le garder, je vais

00:03:36.827 --> 00:03:40.240 align:middle
pouvoir dire cette
règle est fausse pour cette

00:03:41.850 --> 00:03:44.850 align:middle
méthode. Je vais le marquer.

00:03:45.017 --> 00:03:46.510 align:middle
Là c'est en gris
qu'est-ce que ça veut dire?

00:03:46.677 --> 00:03:49.690 align:middle
Ça veut dire que moi plus
tard, je vais pouvoir regarder

00:03:49.857 --> 00:03:51.310 align:middle
et me dire peut-être que
cette règle était vraie et que

00:03:51.477 --> 00:03:53.490 align:middle
ça faisait du sens de la

00:03:57.250 --> 00:03:57.883 align:middle
revisiter.

00:03:58.410 --> 00:04:00.640 align:middle
Ce qu'on peut faire, en fait on
va pouvoir sauver les Critics.

00:04:00.807 --> 00:04:04.910 align:middle
Ça veut dire qu'on va sauver
les résultats des règles et

00:04:05.077 --> 00:04:06.670 align:middle
aussi des faux positifs.

00:04:07.290 --> 00:04:08.850 align:middle
Quand on a écrit que quelque
chose était faux, on ne veut

00:04:09.017 --> 00:04:11.000 align:middle
pas qu'à chaque fois qu'on
fasse tourner des règles, le

00:04:11.167 --> 00:04:12.680 align:middle
système nous le dise en permanence.

00:04:13.400 --> 00:04:18.230 align:middle
Donc quand je sauve les critiques,
il va les mettre dans un Manifest.

00:04:18.470 --> 00:04:21.690 align:middle
On va voir ça, Là, j'ai
mon Manifest qui va être

00:04:21.857 --> 00:04:23.920 align:middle
versionné avec le système.

00:04:24.087 --> 00:04:26.410 align:middle
Il ne faut pas aller voir comment
c'est codé à l’intérieur, on s'en fiche.

00:04:26.577 --> 00:04:29.400 align:middle
Le Manifest, ça permet de
coder des choses mais peu importe.

00:04:29.700 --> 00:04:32.590 align:middle
Ça, vous n'y touchez pas, c'est
le code critic qui va l'utiliser

00:04:32.757 --> 00:04:34.120 align:middle
pour les prochaines exécutions.

00:04:34.287 --> 00:04:36.260 align:middle
Et donc, vous avez un
Manifest par package.

00:04:36.700 --> 00:04:38.100 align:middle
Quand vous allez
versionner le code, vous allez

00:04:38.267 --> 00:04:39.920 align:middle
versionner vos Manifests
avec, et quand vous allez

00:04:40.087 --> 00:04:42.880 align:middle
refaire tourner le code
critique, automatiquement, il va

00:04:43.047 --> 00:04:44.890 align:middle
prendre en compte les
faux positifs et toutes les

00:04:45.057 --> 00:04:47.040 align:middle
méta-remarques que
vous avez mis dedans.

00:04:47.207 --> 00:04:49.510 align:middle
Donc, ce qui est vraiment
intéressant avec ces règles de

00:04:49.677 --> 00:04:53.390 align:middle
qualité, c'est que Pharo va
l'intégrer dans un processus de développement.

00:04:53.557 --> 00:04:56.010 align:middle
Ce qu'on va faire c'est
qu'on va faire en sorte qu'on a

00:04:56.177 --> 00:04:58.570 align:middle
des serveurs Jenkins qui
vont, à chaque fois que vous

00:04:58.737 --> 00:05:01.170 align:middle
allez commiter votre projet,
le charger et faire tourner

00:05:01.337 --> 00:05:04.000 align:middle
automatiquement ces règles
de qualité pour vérifier que

00:05:04.167 --> 00:05:05.920 align:middle
votre programme suit bien ces règles.

