6. Règles de programmation#

6.1. 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.

6.2. 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.

6.3. 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):

aslint --git

Pour vérifier tous les fichiers suivis par Git modifiés depuis la branche main:

aslint --git origin/main

aslint peut corriger certains manques (absence de la licence, mise à jour du copyright…) :

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 Compilation de la version de référence).

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).