Outils pour utilisateurs

Outils du site


lang:python:linter

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
lang:python:linter [2020/12/27 13:19] – ↷ Nom de la page changé de lang:python:qualite à lang:python:linter rootlang:python:linter [2025/10/02 12:59] (Version actuelle) – Mise à jour de (preque) tous les linters root
Ligne 69: Ligne 69:
 {{ :prog:mypy:mypy-0.782.zip |Archive v0.782 du 22/06/2020}} {{ :prog:mypy:mypy-0.782.zip |Archive v0.782 du 22/06/2020}}
  
-Arguments à activer, ici dans un fichier racine ''.mypy.ini'' :+====Options====
  
-<file ini .mypy.ini+Fichier ''pyproject.toml''
-[mypy] + 
-ignore_missing_imports True +  * Règles générales: 
-follow_imports = silent + 
-show_column_numbers = True +<file ini pyproject.toml
-disallow_untyped_calls = True +[tool.mypy] 
-disallow_untyped_defs = True +files "." 
-disallow_incomplete_defs = True +exclude = [".*venv.*", "install", "vcpkg"] 
-check_untyped_defs = True +follow_imports = "skip" 
-no_implicit_optional True +show_column_numbers = true 
-warn_redundant_casts = True +ignore_missing_imports = true 
-warn_unused_ignores = True + 
-warn_unreachable = True +# Importations 
-strict_equality = True+disallow_any_unimported = true 
 +disallow_any_expr = true 
 +disallow_any_decorated = true 
 +disallow_any_explicit = true 
 +disallow_any_generics = true 
 +disallow_subclassing_any = true 
 + 
 +# Annotations 
 +disallow_untyped_calls = true 
 +disallow_untyped_defs = true 
 +disallow_incomplete_defs = true 
 +check_untyped_defs = true 
 +disallow_untyped_decorators true 
 + 
 +# None et Optional 
 +implicit_optional = true 
 +strict_optional = true 
 + 
 +# Warnings 
 +warn_redundant_casts = true 
 +warn_unused_ignores = true 
 +warn_no_return = true 
 +warn_return_any = true 
 +warn_unreachable = true 
 + 
 +# Comportement strict 
 +strict_equality = true 
 +extra_checks = true 
 +local_partial_types = true 
 + 
 +# Divers 
 +implicit_reexport = false 
 +strict = true
 </file> </file>
  
-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.+  * Règles spécifiques à un ou plusieurs fichiers
  
-<code> +Pour le module ''cmake_build_extension'', ignorer les imports manquants. De toute façon, ce module n'est pas typé. 
---disallow-any-unimported --disallow-any-expr --disallow-any-decorated --disallow-any-explicit --disallow-any-generics --disallow-subclassing-any+ 
 +<code ini
 +[[tool.mypy.overrides]] 
 +module = ["cmake_build_extension"
 +ignore_missing_imports = true
 </code> </code>
 +
 +Pour le fichier ''ultrasound_rawdata_exchange/bindings.pyi'', ignorer les erreurs car ce fichier est généré automatiquement.
 +
 +<code ini>
 +[[tool.mypy.overrides]]
 +module = "ultrasound_rawdata_exchange.bindings"
 +ignore_errors = true
 +</code>
 +
 +=====pyright=====
 +
 +Analyseur statique de code spécialisé dans le typing.
 +
 +[[https://github.com/microsoft/pyright|Site web]]
 +
 +====Options====
 +
 +<code ini pyproject.toml>
 +[tool.pyright]
 +ignore = ["python/ultrasound_rawdata_exchange/bindings.pyi", "install"]
 +typeCheckingMode = "strict"
 +</code>
 +
 +''exclude'' : les fichiers / dossiers ne sont pas analysés. ''ignore'' : les fichiers / dossiers sont analysés mais les erreurs ne sont pas rapportées (intéressant pour les ''.pyi'' auto générés).
 +
 +Attention à ''exclude'' qui peut ralentir très fortement. [[https://github.com/microsoft/pyright/issues/10159|Pyright is surprisingly slow, possibly hangs, when given an exclude path.]]
  
 =====Black===== =====Black=====
Ligne 101: Ligne 163:
 {{ :prog:black:black-20.8b1.zip |Archive v20.8b1 du 26/08/2020}} {{ :prog:black:black-20.8b1.zip |Archive v20.8b1 du 26/08/2020}}
  
-La presque seule option disponible est :+====Options====
  
-''%%--%%line-length=79''+<code ini pyproject.toml> 
 +[tool.black] 
 +line-length = 79 
 +extend-exclude = '\.pyi$' 
 +</code>
  
 =====prospector===== =====prospector=====
Ligne 127: Ligne 193:
 =====flake8===== =====flake8=====
  
-Il n'y a presque rien a paramétrer.+Analyseur du style de code et inclut ''pycodestyle'' (vérification d).
  
-Il existe les modules Python ''flake8-bugbear'' et ''flake8-import-order''.+On peut installer les modules ''flake8-bugbear''''flake8-import-order'', ''pep8-naming''
 + 
 +Ne pas utiliser ''flake8-import-order'' mais formater automatiquement le code avec ''isort''
 + 
 +====Options==== 
 + 
 +Il faut utiliser le fichier ''tox.ini''. ''pyproject.toml'' ne sera pas supporté [[https://github.com/microsoft/vscode-flake8/issues/135|Configure flake8 via pyproject.toml]].
  
 <file ini tox.ini> <file ini tox.ini>
 [flake8] [flake8]
 +# Désactiver les conflits de formattage avec black.
 ignore = E203, W503 ignore = E203, W503
-application-import-names = ...,...+max-line-length 999 
 + 
 +exclude = install,*venv*,*.pyi,__init__.py 
 import-order-style = google import-order-style = google
 +
 +# Est utilisé par ''import-order'' pour savoir si le module est un Third party ou interne au module.
 +application-import-names = ...
 </file> </file>
  
-On ignore les erreurs de formatage en conflit avec Black.+=====safety=====
  
-''application-import-names'' est utilisé par ''import-order'' pour savoir si le module est un Third party ou interne au module.+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). 
 + 
 +<code bash> 
 +safety check -r requirements.txt 
 +</code>
lang/python/linter.1609071550.txt.gz · Dernière modification : de root