4D v16.3Aides à la compilation |
||
|
4D v16.3
Aides à la compilation
Aides à la compilation
Les aides à l’analyse et à la correction des bases sont de trois types :
Note : Une aide non négligeable est également fournie pour le typage des variables par les méthodes compilateur automatiques — cf. paragraphe Générer typage. Le fichier de symboles est un document de type texte, plus ou moins long suivant l’importance de vos bases. Par défaut, ce fichier n’est pas généré au moment de la compilation. Vous devez cocher l’option correspondante dans les Propriétés de la base (cf. paragraphe Options de compilation). Lorsqu’il est généré, le fichier est placé dans le dossier contenant la structure de la base et est automatiquement nommé NomDeLaBase_symbols.txt. Le fichier de symboles se présente ainsi lorsque vous l’ouvrez à l’aide d’un éditeur de texte : L’en-tête présente le nom de la base, la date et l’heure de la création du document. Le document se compose de quatre parties :
Ces deux listes sont séparées en quatre colonnes par des tabulations :
Note : Dans le cas des variables process, au moment de la compilation, le compilateur ne peut déterminer dans quel process une variable de ce type est utilisée. En effet, une variable process peut avoir une valeur différente dans chaque process.Toutes les variables process sont donc systématiquement dupliquées à chaque création de process : il convient de prendre garde à la taille mémoire qu’elles vont occuper. La taille des variables process est totalement indépendante de celle de la pile des process. La liste des variables locales apparaît classée par méthode base, méthode projet, trigger, méthode formulaire et méthode objet en suivant le même ordre que dans 4D. Cette liste est séparée en trois colonnes par des tabulations :
A la fin du fichier sont réunies toutes vos méthodes base et projet avec :
Ces informations apparaissent sous la forme suivante : Procédure ou Fonction <Nom de la méthode>(types des paramètres):type du résultat, nombre d'appels, Thread Safe ou Thread Unsafe Vous pouvez générer ou non un fichier d’erreurs lors de la compilation grâce une option située dans les Propriétés de la base (cf. paragraphe Options de compilation). Lorsqu’il est généré, le fichier d’erreurs est nommé NomDeLaBase_errors.xml et est créé à côté du fichier de structure de la base. Bien que les erreurs soient directement accessibles via la fenêtre de compilation, dans le cadre d’un développement en client/serveur, il peut être intéressant de disposer d’un fichier d’erreurs qu’il est alors possible de transmettre d’un poste à l’autre. Le fichier d’erreurs est généré au format XML afin de faciliter l’analyse automatique de son contenu. Il autorise également la création d’interfaces personnalisées de présentation des erreurs. Le fichier d’erreurs est plus ou moins long suivant le nombre d’erreurs et de warnings délivrés par le compilateur. Il se présente ainsi lorsque vous l’ouvrez avec un éditeur de texte : Ce fichier d’erreurs est structuré ainsi :
Un fichier d’erreurs peut donc comporter trois types de messages :
Ces erreurs, de différentes natures, vous sont indiquées accompagnées de leur contexte, de la ligne où elles ont été détectées et d’un commentaire. Elles apparaissent lorsque le compilateur rencontre une expression qui lui pose un problème, que ce soit de typage ou de syntaxe. Dans la fenêtre de compilation, il vous suffit de double-cliquer sur le libellé de l’erreur pour ouvrir la méthode concernée à la ligne correspondante. La liste des diagnostics d’erreurs de syntaxe/de typage est fournie dans la section Messages d'erreurs du manuel Langage de 4D. Il s’agit d’erreurs qui ne permettent pas le passage en passe de compilation. Le compilateur délivre une erreur générale dans deux cas :
Ces erreurs sont dites générales parce qu’elles ne peuvent être rattachées à aucune méthode en particulier. En effet, le compilateur n’a pu procéder au typage nulle part dans la base pour le premier cas, et, dans le second, il ne peut choisir d’associer un nom à un objet plutôt qu’à un autre. La liste des erreurs générales est fournie dans la section Messages d'erreurs du manuel Langage de 4D. Les warnings ne sont pas des erreurs. Ils n’empêchent pas la compilation de la base. Il s’agit simplement de points sur lesquels le compilateur souhaite attirer votre attention parce qu’il y a un risque d’erreur. Dans la fenêtre de compilation, les warnings apparaissent en caractères italiques. Il vous suffit de double-cliquer sur le libellé d’un warning pour ouvrir la méthode concernée à la ligne correspondante. La liste des warnings est fournie dans le paragraphe Les warnings du manuel Langage de 4D. Il est possible de désactiver certains warnings (cf. paragraphe Désactivation des Warnings durant la compilation). Le contrôle d’exécution est coché par défaut dans les Propriétés de la base (cf. paragraphe Options de compilation). Alors que toute les autres options fonctionnent durant le processus de compilation, le contrôle d’exécution fonctionne lorsque vous lancez une base compilée. C’est donc en cours d’exécution de votre application que vous recevrez les messages délivrés par le compilateur. Le contrôle d’exécution introduit une analyse supplémentaire par rapport à la recherche de cohérence logique et syntaxique qui caractérise normalement un compilateur. Dans le contrôle d’exécution, le compilateur introduit pour vous la question suivante : “compte tenu de ce que vous m’avez demandé, j’arriverai probablement à un résultat qui peut vous surprendre”. Le contrôle d’exécution est un contrôle en situation, dépendant de l’état des objets de la base à un instant donné. Imaginez, par exemple, que dans votre base, vous déclariez un tableau LeTableau de type Texte. Suivant la méthode en cours d’exécution, le nombre d’éléments de LeTableau peut varier. Vous souhaitez affecter à l’élément 5 du tableau la valeur “Bonjour”. Vous écrivez donc : LeTableau{5}:="Bonjour" Si, à ce moment-là, LeTableau comporte 5 éléments ou plus, tout va bien. L’affectation s’effectue normalement. Il y a bien un élément numéro 5, prêt à recevoir cette valeur. Si, pour une raison ou pour une autre, à ce moment précis de l’exécution, LeTableau comporte moins de 5 éléments, 2 par exemple, votre affectation n’a plus de sens. Il est évident que ce type de situation ne peut être détecté à la compilation puisqu’il présuppose l’exécution des méthodes. Seul le contrôle d’exécution vous permet d’avoir la maîtrise de ce qui se passe effectivement lorsqu’on utilise la base. Dans l’exemple évoqué ci-dessus, le compilateur vous délivrera donc, dans 4D, une erreur d’exécution. On comprend dès lors que le contrôle d’exécution soit particulièrement précieux dans le cas de manipulations sur les tableaux, les pointeurs et les chaînes de caractères. Les messages type délivrés par le compilateur lorsque vous demandez le contrôle d’exécution sont listés dans le paragraphe Les messages du contrôle d’exécution du manuel Langage de 4D. Dans certains cas, vous pouvez souhaiter que, bien que le contrôle d’exécution soit activé, il ne s’applique pas sur des parties fiabilisées du code. En effet, notamment dans le cas de boucles répétées de nombreuses fois et lors de l’exécution de la base compilée sur des machines anciennes, ce contrôle peut ralentir sensiblement les traitements. Dans la mesure où vous avez la certitude que le code en question est fiable et ne peut provoquer d’erreur système, vous pouvez désactiver localement le contrôle d’exécution. Pour cela, vous devez encadrer le code à exclure du contrôle d’exécution avec les commentaires spéciaux //%R- et //%R+. Le commentaire //%R- désactive le contrôle d’exécution et //%R+ le réactive : ... //Le contrôle d’exécution est activé Note : Ce mécanisme ne fonctionne que si le contrôle d’exécution est activé. Vous notez des anomalies de fonctionnement dans vos bases ? Avant toute spéculation sur leur origine, pensez aux aides fournies par le compilateur. Les anomalies que vous pouvez avoir sont les suivantes :
|
PROPRIÉTÉS
Produit : 4D
HISTORIQUE
Modifié : 4D v15 R5 MOTS-CLÉS %R, warning, Contrôle d'exécution UTILISATION DE L'ARTICLE
4D - Mode Développement ( 4D v16) |