web-dev-qa-db-fra.com

Comment désactiver les avertissements "docstring manquant" au niveau des fichiers dans Pylint?

Pylint génère des erreurs indiquant qu'il manque des docstrings dans certains fichiers. J'essaie d'ajouter des docstrings à chaque classe, méthode et fonction, mais il semble que Pylint vérifie également que les fichiers doivent avoir une docstring au début. Puis-je désactiver cela en quelque sorte? Je souhaite être informé de l'absence d'une docstring dans une classe, une fonction ou une méthode, mais il ne devrait pas être obligatoire pour un fichier d'avoir une docstring.

(Existe-t-il un terme du jargon juridique souvent trouvé au début d’un fichier source propriétaire? Quelques exemples? Je ne sais pas s’il est acceptable de poser séparément une question aussi triviale.)

57
Mridang Agarwalla

Il est agréable pour un Python) d’avoir une docstring expliquant ce que fait le module, ce qu’il fournit, des exemples d’utilisation des classes. Ceci diffère des commentaires que vous voyez souvent à le début d'un fichier contenant les informations de copyright et de licence, mais que l'OMI ne devrait pas inclure dans la documentation (certains prétendent même qu'elles devraient disparaître complètement, voir par exemple. http://hackerboss.com/get-rid-of -templates / )

Pylint n'a pas de code séparé pour les différents endroits où la docstring peut se produire, vous pouvez donc tout simplement désactiver C0111. Le problème est que si vous désactivez ceci à la portée du module, il sera désactivé partout dans le module (c’est-à-dire que vous n’obtiendrez pas de ligne C pour la docstring fonction/classe/méthode manquante. contribuer à ceci numéro de pylint sur github si cela vous dérange.

Donc, ce que je suggère, c'est d'ajouter ce petit document manquant, en disant quelque chose comme:

"""
high level support for doing this and that.
"""

Bientôt, vous découvrirez des éléments utiles, tels que des exemples d'utilisation des différentes classes/fonctions du module qui n'appartiennent pas nécessairement aux docstrings individuels des classes/fonctions (telles que interagir, ou quelque chose comme un guide de démarrage rapide).

57
gurney alex

Il est tard, mais je l'ai trouvé utile. Alors partage. Trouvé ceci ici .

Vous pouvez ajouter un indicateur "--errors-only" à pylint pour désactiver les avertissements.

Pour ce faire, allez dans les paramètres. Editez la ligne suivante:

"python.linting.pylintArgs": []

Comme

"python.linting.pylintArgs": ["--errors-only"]

Et vous êtes prêt à partir!

29
Nilesh Kevlani

Je suis venu chercher une réponse car, comme @cerin l'a dit, dans Django projets, il est fastidieux et redondant d'ajouter des docstrings de module à chacun des fichiers qui Django = génère automatiquement lors de la création d'une nouvelle application.

Donc, comme solution de contournement au fait que pylint ne vous permet pas de spécifier une différence dans les types de docstring, vous pouvez le faire:

pylint */*.py --msg-template='{path}: {C}:{line:3d},{column:2d}: {msg}' | grep docstring | grep -v module

Vous devez mettre à jour le msg-template afin que, lorsque vous grepez, vous connaissiez toujours le nom du fichier. Ceci retourne tous les autres types de docstring manquants, à l'exception des modules.

Ensuite, vous pouvez corriger toutes ces erreurs, et ensuite, lancez simplement:

pylint */*.py --disable=missing-docstring
9
mattsl

Non. Actuellement, Pylint ne vous permet pas de distinguer les avertissements relatifs aux chaînes de documentation.

Cependant, vous pouvez utiliser flake8 pour tous les contrôles python avec l'extension doc-string pour ignorer cet avertissement.

Installez l'extension doc-string avec pip (En interne, il utilise pydocstyle ).

pip install flake8_docstrings

Vous pouvez alors simplement utiliser le --ignore D100 _ commutateur. Par exemple flake8 file.py --ignore D100

8
henryJack

Je pense que le correctif est relativement facile sans désactiver cette fonctionnalité.

def kos_root():
    """Return the pathname of the KOS root directory."""
    global _kos_root
    if _kos_root: return _kos_root

Tout ce que vous avez à faire est d’ajouter la chaîne de triples guillemets doubles dans chaque fonction.

7
Carlos E Rodriguez