What should you do when things go awry with your scripting?What should you do when things go awry with your scripting?What should you do when things go awry with your scripting?What should you do when things go awry with your scripting?Que devez-vous faire lorsque les choses tournent mal avec votre script ? Content de te revoir!
Si vous venez de nous rejoindre, vous vous trouvez en plein milieu d'une série visant à familiariser les utilisateurs avec le langage de script JMP. Contrairement aux entrées précédentes dans les séries , vous n'avez probablement pas besoin de lire les autres pour que celle-ci ait un sens, mais si vous voulez jouer le jeu et faire les devoirs des autres entrées, voici les liens
Un grand merci également à Christian Stopp ( @christianstopp ) pour avoir suggéré cette entrée dans la série.
Cette partie de la série est en grande partie une entrée autonome. Mais, dans le flux des choses, c'est probablement le moment où vous avez commencé à jouer avec du code et où vous avez peut-être vu un ou deux messages d'erreur. Donc, avant de commencer une sérieuse dispute de code, expliquons ce qu'il faut faire lorsque les choses tournent mal.
Les erreurs les plus courantes en JSL
Justin Chilton ( @Justin_Chilton ) et Wendy Murphrey ( @Wendy_Murphrey ) sont parmi les meilleurs scénaristes de JMP . Lors du Sommet Découverte JMP des Amériques 2020, ils ont présenté (virtuellement) un article intitulé « Les erreurs JSL les plus courantes et comment les éviter ». Le fichier PowerPoint de cette présentation peut être trouvé ici sur la Communauté.
Pour le nouveau scripteur, cela représente 14 pages en or massif. Dans le contexte de ce que nous faisons dans cette série, certains éléments sont un peu hors de portée mais seront d'une valeur inestimable pour les prochaines étapes de votre parcours de création de scripts. Faites-moi simplement un bon travail, téléchargez le pdf, placez-le dans un endroit où vous ne l'oublierez pas et donnez un coup de pouce au document sur la page Communauté.
Les erreurs JSL les plus courantes de Mike
En guise de riff sur le travail de Justin et Wendy, je souhaite ajouter quelques éléments à leur liste. Celles-ci sont assez basiques et provoquent généralement le blocage d'un script avant même son exécution (c'est pourquoi elles n'apparaissent pas dans le document du Discovery Summit).
Colle
Les opérateurs de colle manquants sont probablement l'erreur JSL la plus courante. Comme je l'ai mentionné précédemment, l'opérateur Glue est le point-virgule (« ; ») que vous voyez à la fin de chaque instruction en JSL. Si vous enregistrez des scripts dans une fenêtre de script à l'aide du menu triangulaire rouge (voir le message précédent ), JMP ajoutera la colle là où elle doit aller. Si vous écrivez du code manuellement, il existe une astuce que vous pouvez utiliser pour vous assurer de ne pas en oublier quelque part. Cliquez avec le bouton droit dans l'éditeur de script et sélectionnez Reformater le script .

Cette astuce détectera en fait de nombreuses erreurs liées à la syntaxe de base dans le script. Il existe également un raccourci clavier lorsque vous êtes dans l'éditeur de script (cela ne fonctionne cependant pas dans les « boîtes de l'éditeur de script »). Je préfère moi-même le raccourci clavier. Pour Windows, c'est CTRL+M . Pour MacOS, c'est CMD+M .
Maintenant, avant de vous montrer comment décompresser ce que Reformat Script vous dit en cas d'erreur, laissez-moi vous montrer l'autre erreur qui me rend fou. Puisqu'ils utilisent tous deux un flux de travail de débogage similaire, cela aura du sens dans une seconde, je le promets.
Parenthèses
Le fait de déplacer (ou de manquer) vos parenthèses (crochets, accolades, etc.) est probablement le bug le plus insidieux à détecter. Et je veux dire que c'est un spécial un peu frustrant. Il existe un outil disponible dans JMP pour vous aider à retrouver les paires de parenthèses incompatibles. Lorsque vous placez votre curseur à l'extérieur d'une parenthèse, l'éditeur de script le mettra en surbrillance (et ce qu'il pense être sa correspondance) en bleu.

Si l'éditeur de script est confus ou ne trouve pas de correspondance, il mettra en surbrillance la parenthèse en rouge.

Ainsi, si la correspondance bleue d'une parenthèse n'est pas là où vous l'attendiez, ou si la parenthèse est surlignée en rouge, vous avez probablement un problème.
Lorsque vous obtenez des erreurs liées à des parenthèses manquantes, vous pourriez être tenté de continuer à les ajouter à la fin jusqu'à ce que l'erreur disparaisse. Permettez-moi simplement de dire que c'est une mauvaise idée et de passer à de meilleures stratégies pour résoudre ce problème et celui du manque de colle. Et ils tournent tous les deux autour de la configuration de l'éditeur de script de JMP.
Configuration (et utilisation) de l'éditeur de script pour réussir
L'éditeur de script JMP (nous l'avons vu dans le message précédent ) possède un certain nombre de fonctionnalités qui facilitent l'utilisation du code et le débogage. Je les ai activés par défaut dans mes préférences et je vous suggère de faire de même. Pour accéder à la boîte de dialogue Préférences JMP, sélectionnez Préférences depuis le menu JMP (MacOS) ou le menu Fichier (PC).

J'ai mis en évidence les options que je trouve vraiment utiles dans la capture d'écran. Le pliage de code est pratique pour les scripts plus volumineux. Les numéros de ligne et les options de saisie semi-automatique sont plus importants pour notre discussion actuelle.
Comment utiliser le journal
Maintenant que notre éditeur de script est configuré, apprenons à utiliser le journal. Tout d'abord, pour ouvrir le journal, accédez à Affichage > Journal ( Fenêtre > Journal sur un Mac). Cela ouvrira une fenêtre qui ressemble à un éditeur de script. Il est différent de l'éditeur de script dans la mesure où il affiche le sortir et les résultats des commandes exécutées dans l'éditeur de script. Si vous préférez conserver vos entrées et sorties dans la même fenêtre, vous pouvez activer le journal intégré dans l'éditeur de script en cliquant avec le bouton droit dans l'éditeur de script et en sélectionnant Afficher le journal intégré .

Voyons comment cela fonctionne en utilisant ce script :

Le scénario est assez simple. Mis à part la ligne 2 et les commentaires, il a été créé en utilisant Enregistrer le script… dans la fenêtre de script . Si je cours Reformater le script (également trouvé en cliquant avec le bouton droit dans la fenêtre de script), j'obtiens le message d'erreur suivant :

Dans le journal, vous obtenez quelque chose de similaire :

Dans la zone grise, vous pouvez voir ce qui a été saisi. En dessous, vous voyez un message concernant quelque chose d'inattendu et une suggestion sur ce qui pourrait être le problème. Dans ce cas, JMP pense qu'il manque de la colle (;). Il vous indique également où l'entrée inattendue est arrivée dans le script avec un numéro de ligne. Puisque JSL est exécuté de manière séquentielle (de haut en bas), cela signifie que l'erreur se situe quelque part au-dessus de la ligne 5. Comme les numéros de ligne sont activés, nous pouvons voir qu'il manque l'opérateur Glue à la ligne 2, ce qui signifie que JMP ne s'attend pas à ce qu'une nouvelle commande démarre à la ligne 5 et est pris par surprise. Après avoir ajouté le point-virgule à la fin de la ligne 2, exécutez Reformater le script ne devrait renvoyer aucune erreur.
De même, s'il nous manque une partie d'une paire de crochets (par exemple, des parenthèses), comme ceci (notez la ligne 7) :

nous obtiendrions ce message d'erreur :

avec un message de journal :

Ces messages de JMP sont un peu moins clairs, mais voici comment les interpréter. Premièrement, d’après le message d’erreur, nous savons que le problème vient de la distribution. Entre le journal et le message d'erreur, il est fort probable qu'il manque une parenthèse quelque part. Le journal indique que quelque chose d'inattendu s'est produit à la ligne 11 (la « Colonne… » peut parfois être utile, mais il faut compter les caractères pour l'utiliser). La couleur mettant en évidence les parenthèses montre qu'il manque sa paire à la première (notez la couleur rouge sur la parenthèse à côté de Distribution à la ligne 5 après avoir placé le curseur à sa gauche).

Avancez en utilisant le surlignage pour déterminer où doit aller celui qui manque (ligne 7 dans ce cas). Pour l’essentiel, le journal constitue une fenêtre très utile sur ce que JMP pense de ce qui se passe. Cependant, si vous souhaitez vérifier les erreurs dans votre JSL ou parcourir le code par étapes, il existe un autre outil pour cela.
Comment utiliser le débogueur JSL
Le débogueur JSL est une bête un peu étrange. Si vous avez accidentellement appuyé sur le bouton du débogueur :

vous savez probablement déjà qu'il verrouille l'interface principale de JMP pendant l'exécution. Quand j’ai commencé à écrire des scripts, je ne l’utilisais pas beaucoup. Maintenant que j'en ai discuté avec l'équipe de développement, je peux dire que j'y arrive. Parlons-en un peu et de ce qu'il peut faire.
Tout d’abord, cela concerne le verrouillage de JMP. C'est un peu déroutant, mais en réalité, il crée une deuxième instance de JMP pour exécuter le débogage. L'instance principale de JMP ne répondra pas tant que le débogueur JSL sera actif. Si vous fermez le débogueur JSL, vous reprendrez le contrôle.
Lorsque vous lancez le débogueur JSL, en plus d'une autre instance de JMP, vous obtenez la fenêtre du débogueur JSL. Cette fenêtre contient votre code, des listes des différentes variables, un journal et d'autres informations. Cela ressemble à ceci :

Lorsque vous déboguez, cette fenêtre est vos yeux et vos oreilles sur ce que fait votre script dans JMP. Si vous avez un deuxième écran, déplacez-le là-bas pour pouvoir toujours le voir (il peut parfois être enterré derrière d'autres fenêtres).
Maintenant, je pourrais devenir fou en décrivant tout ce que vous pouvez faire avec le débogueur JSL, mais la documentation contient un excellent chapitre (avec des exemples !) que vous pouvez trouver ici .
Il y a aussi un bon article de blog de Melanie Drake ( @Melanie_J_Drake ) qui couvre certaines des choses intéressantes que vous pouvez faire avec le débogueur JSL. Donc, si vous voulez entrer un peu dans le détail, jetez-y un œil. Pour nos besoins, je veux que vous fassiez attention à ces boutons :

Les deux premiers exécutent le script. Le premier exécute le script jusqu'à sa fin ou jusqu'à l'endroit où il rencontre un point d'arrêt (un point auquel vous souhaitez arrêter l'évaluation si vous ne souhaitez pas exécuter l'intégralité du script). Vous pouvez définir un point d'arrêt dans votre code en cliquant avec le bouton droit à côté du numéro de ligne dans le débogueur JSL. Un point rouge apparaîtra à côté de cette ligne (le point d'arrêt doit être sur une ligne de code, pas un commentaire !).

Si vous deviez exécuter ce script en utilisant le premier Courir bouton, il fonctionnerait jusqu'à la ligne 10, puis s'arrêterait. Une deuxième pression sur le Courir Le bouton terminerait alors le script. La deuxième Courir Le bouton exécute l'intégralité du script sans prêter attention aux points d'arrêt. Le rouge Bouton d'arrêt quitte le débogueur, ce qui est utile si vous l'avez ouvert par accident ou si vous avez terminé votre session de débogage. Le Répéter Le bouton réinitialise tout pour exécuter à nouveau le script (par exemple, si vous souhaitez modifier l'emplacement d'un point d'arrêt, puis réexécuter le code).
Devoirs
Les devoirs cette semaine sont plutôt légers. Je veux que vous configuriez l'éditeur de script, que vous trouviez le journal et que vous commenciez à jouer avec le débogueur JSL en utilisant certains des exemples de scripts de la documentation. Jetez un œil aux variables qui apparaissent dans les onglets en bas à gauche de la fenêtre du débogueur. Retrouvez également le Enregistrer en bas à droite (pour que vous sachiez où il se trouve).
La semaine prochaine, nous aborderons la dernière partie du « codage » que nous aborderons dans ces séries .