.. _d7.01.01-regles: Règles de programmation ======================= Fortran ------- Le suffixe des fichiers Fortran est nécessairement ``.F90``. Les règles de programmation impose l'écriture en minuscules, une indentation des blocs de 4 caractères (idem en Python et C++). ``implicit none`` est obligatoire. Autres règles de programmation générale : - une seule routine par fichier, - les types dérivés doivent être définis dans des fichiers suffixés ``_type.F90`` et les modules nommés ``x_module.F90``, - une routine ne peut dépasser 500 lignes, 20 arguments au maximum, - utiliser des noms de routines (on n'est plus limité à 6 caractères) et de variables explicites, - ne pas passer d'arguments *bidons*, utiliser ``optional``, - commenter le rôle de chaque argument, - commenter le code (en anglais), - utiliser ``do/enddo`` (pas de ``do/continue``, pas de ``goto``), - ranger intelligemment les nouvelles routines dans un des répertoires de ``bibfor/`` - le code est systématiquement remis en forme avec *fprettify*. Certaines de ces règles (et d'autres) sont vérifiées au moment de la soumission par l’utilitaire aslint. Python ------ L'essentiel des règles de programmation sont celles de la PEP8 (*Style Guide for Python Code*). L'historique du code fait que les anciennes fonctions ne respectent pas encore toutes les règles. Chacun doit contribuer dans ce sens. Le code est systématiquement remis en forme avec *black*. Certaines de ces règles (et d'autres) sont vérifiées au moment de la soumission par l’utilitaire aslint. .. _d7.01.01-regles-aslint: aslint ------ Vous pouvez, à tout moment vérifier ces règles en lançant aslint en ligne de commande. Pour que ``aslint`` soit accessible, ajouter ``source $HOME/dev/codeaster/devtools/etc/env.sh`` dans le fichier ``$HOME/.bashrc`` ou équivalent. Voir ``aslint --help`` pour les détails. En particulier, vérifier les fichiers suivis par Git actuellement modifiés (liste retournée par ``git status``): .. code-block:: shell aslint --git Pour vérifier tous les fichiers suivis par Git modifiés depuis la branche ``main``: .. code-block:: shell aslint --git origin/main aslint peut corriger certains manques (absence de la licence, mise à jour du *copyright*...) : .. code-block:: shell aslint --fix --git # ou aslint --fix --git origin/main # ou encore aslint --fix bibfor/op/op0190.F90 ``aslint`` est lancé lors de chaque commit grace aux *hooks* (mis en place par ``install_env``, voir :ref:`d7.01.01-build-ref`). **Remarque** Si votre branche n'a pas démarré depuis ``origin/main``, il faut changer avec le nom de la branche de départ du développement ou l'identifiant de révision (point de bifurcation).