=====pylint===== [[https://github.com/PyCQA/pylint|Site web]] {{ :prog:pylint:pylint-2.6.0.zip |Archive v2.6.0}} * Arguments à mettre par défaut pylint --enable=all --disable=missing-module-docstring,missing-function-docstring,missing-class-docstring,locally-disabled,use-symbolic-message-instead,suppressed-message ''pylint'' respecte l'ordre d'entrée des paramètres. Un ''%%--%%enable=all'' réactive les ''%%--%%disable'' le précédent. ''%%--indent-string="\_\_"%%'' et ''%%--indent-after-paren=2%%'' peuvent être utilisés pour forcer une indentation à 2 espaces. Mais Python recommande 4 espaces et sa personnalisation n'est pas supporté par [[#black|Black]] ([[https://github.com/psf/black/issues/378|Configurable Indent Levels?]], {{ :prog:pylint:configurable_indent_levels_issue_378_psf_black_2020-10-04_18_05_05_.html |archive du 25/06/2018 le 04/10/2020}}). ''%%--%%disable=locally-disabled,use-symbolic-message-instead,suppressed-message'' sont pour ne pas afficher d'avertissements si des avertissements sont masqués. * Désactiver des avertissements spécifiques Ajouter sur la ligne problématique : # pylint: disable=R0913 Le numéro s'obtient depuis le message d'erreur de pylint. Il est aussi possible d'avoir la liste complète avec la commande ''%%pylint --list-msgs%%''. ====Configuration par fichier==== Création du fichier de base : ''pylint %%--%%generate-rcfile > .pylintrc'' Modification : [MESSAGES CONTROL] enable=all disable=missing-module-docstring, missing-function-docstring, missing-class-docstring, locally-disabled, use-symbolic-message-instead, suppressed-message, bad-continuation, too-many-locals, fixme, too-few-public-methods, unsubscriptable-object, cell-var-from-loop ''cell-var-from-loop'' peut être intéressant, ''unsubscriptable-object'' a été ajouté car il crée des faux positifs [[https://github.com/PyCQA/pylint/issues/3760|unsubscriptable-object errors with Python 3.9]] {{ :prog:pylint:unsubscriptable-object_errors_with_python_3.9_issue_3760_pycqa_pylint_2020-12-27_11_52_24_.html |Archive du 22/11/2020 le 27/12/2020}} ''bad-continuation'' : ''pylint'' peut être en conflit avec ''Black''. ====Messages d'erreur==== * ''Unable to import'' : ''pylint'' affiche ce message pour les sous-modules. Il faut avoir le fichier vide ''%%__init__%%.py'' dans chaque sous-dossier ayant des fichiers python. Normalement, ce fichier n'est plus nécessaire depuis Python 3 mais ''pylint'' continue à en avoir besoin. =====mypy===== Analyseur statique de code spécialisé dans le typing. [[https://github.com/python/mypy|Site web]] {{ :prog:mypy:mypy-0.782.zip |Archive v0.782 du 22/06/2020}} Arguments à activer, ici dans un fichier racine ''.mypy.ini'' : [mypy] ignore_missing_imports = True follow_imports = silent show_column_numbers = True disallow_untyped_calls = True disallow_untyped_defs = True disallow_incomplete_defs = True check_untyped_defs = True no_implicit_optional = True warn_redundant_casts = True warn_unused_ignores = True warn_unreachable = True strict_equality = True Il est aussi possible d'interdir l'utilisation des Any mais cela peut être problématique si on utilise une librairie avec ces propres classes et ne supporte pas le typage. --disallow-any-unimported --disallow-any-expr --disallow-any-decorated --disallow-any-explicit --disallow-any-generics --disallow-subclassing-any =====Black===== Il existe 3 formateurs de code : autopep8, yapf et black. Ce dernier est le plus populaire en 2020. [[https://github.com/psf/black|Site web]] {{ :prog:black:black-20.8b1.zip |Archive v20.8b1 du 26/08/2020}} La presque seule option disponible est : ''%%--%%line-length=79'' =====prospector===== Un autre analyseur statique de code. Fichier de configuration racine ''.prospector.yaml'' : strictness: veryhigh pylint: disable: - too-many-locals - too-few-public-methods - fixme pep8: disable: - W503 =====flake8===== Il n'y a presque rien a paramétrer. Il existe les modules Python ''flake8-bugbear'' et ''flake8-import-order''. [flake8] ignore = E203, W503 application-import-names = ...,... import-order-style = google On ignore les erreurs de formatage en conflit avec Black. ''application-import-names'' est utilisé par ''import-order'' pour savoir si le module est un Third party ou interne au module. =====safety===== Vérifie si les paquets contenus dans un fichier ''requirements.txt'' contiennent des failles de sécurité connues (se base sur le numéro de version). safety check -r requirements.txt