Go to main content

man pages section 1: User Commands

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

pylint (1)

Name

pylint - python code static checker

Synopsis

pylint [ OPTIONS ] [ <arguments> ]

Description

pylint(1)                   General Commands Manual                  pylint(1)



NAME
       pylint - python code static checker


SYNOPSIS
       pylint [ OPTIONS ] [ <arguments> ]


DESCRIPTION
       pylint  is  a  Python  source code analyzer which looks for programming
       errors, helps enforcing a coding standard  and  sniffs  for  some  code
       smells (as defined in Martin Fowler's Refactoring book)

       Pylint  can be seen as another PyChecker since nearly all tests you can
       do with PyChecker can also be done with Pylint. However, Pylint  offers
       some  more features, like checking length of lines of code, checking if
       variable names are well-formed according to your  coding  standard,  or
       checking if declared interfaces are truly implemented, and much more.

       Additionally, it is possible to write plugins to add your own checks.

       Pylint  is  shipped with "pylint-gui", "pyreverse" (UML diagram genera-
       tor) and "symilar" (an independent similarities checker).


OPTIONS
       --version
              show program's version number and exit

       --help, -h
              show this help message and exit

       --long-help
              more verbose help.


MASTER
       --rcfile=<file>
              Specify a configuration file.

       --init-hook=<code>
              Python code to execute, usually for sys.path  manipulation  such
              as pygtk.require().

       --errors-only, -E
              In  error mode, checkers without error messages are disabled and
              for others, only  the  ERROR  messages  are  displayed,  and  no
              reports are done by default

       --py3k In Python 3 porting mode, all checkers will be disabled and only
              messages emitted by the porting checker will be displayed

       --ignore=<file>[,<file>...]
              Add files or directories to the blacklist. They should  be  base
              names, not paths. [current: CVS]

       --persistent=<y_or_n>
              Pickle collected data for later comparisons. [current: yes]

       --load-plugins=<modules>
              List  of  plugins  (as  comma separated values of python modules
              names) to load, usually to register additional  checkers.  [cur-
              rent: none]

       --jobs=<n-processes>, -j <n-processes>
              Use multiple processes to speed up Pylint. [current: 1]

       --extension-pkg-whitelist=<pkg[,pkg]>
              A  comma-separated  list of package or module names from where C
              extensions may be loaded. Extensions are loading into the active
              Python interpreter and may run arbitrary code [current: none]


COMMANDS
       --help-msg=<msg-id>
              Display  a  help  message for the given message id and exit. The
              value may be a comma separated list of message ids.

       --list-msgs
              Generate pylint's messages.

       --list-conf-levels
              Generate pylint's messages.

       --full-documentation
              Generate pylint's full documentation.

       --generate-rcfile
              Generate a sample configuration file according  to  the  current
              configuration.  You can put other options before this one to get
              them in the generated configuration.


MESSAGES CONTROL
       --confidence=<levels>
              Only show warnings with  the  listed  confidence  levels.  Leave
              empty  to  show  all.  Valid  levels:  HIGH,  INFERENCE,  INFER-
              ENCE_FAILURE, UNDEFINED [current: none]

       --enable=<msg ids>, -e <msg ids>
              Enable the message, report, category or checker with  the  given
              id(s).  You  can  either  give  multiple identifier separated by
              comma (,) or put this option multiple time. See also the "--dis-
              able" option for examples.

       --disable=<msg ids>, -d <msg ids>
              Disable  the message, report, category or checker with the given
              id(s). You can either give  multiple  identifiers  separated  by
              comma (,) or put this option multiple times (only on the command
              line, not in the configuration file where it should appear  only
              once).You  can  also  use  "--disable=all" to disable everything
              first and then reenable specific checks.  For  example,  if  you
              want  to  run only the similarities checker, you can use "--dis-
              able=all --enable=similarities". If you want  to  run  only  the
              classes  checker,  but have no Warning level messages displayed,
              use"--disable=all --enable=classes --disable=W"


REPORTS
       --output-format=<format>, -f <format>
              Set the output format. Available formats  are  text,  parseable,
              colorized,  msvs  (visual  studio) and html. You can also give a
              reporter class, eg mypackage.mymodule.MyReporterClass. [current:
              text]

       --files-output=<y_or_n>
              Put messages in a separate file for each module / package speci-
              fied on the command line instead of  printing  them  on  stdout.
              Reports   (if   any)   will   be   written   in   a   file  name
              "pylint_global.[txt|html]". [current: no]

       --reports=<y_or_n>, -r <y_or_n>
              Tells whether to display a full  report  or  only  the  messages
              [current: yes]

       --evaluation=<python_expression>
              Python expression which should return a note less than 10 (10 is
              the highest note). You have access to the variables errors warn-
              ing, statement which respectively contain the number of errors /
              warnings messages and the total number of  statements  analyzed.
              This is used by the global evaluation report (RP0004). [current:
              10.0 - ((float(5 * error + warning + refactor  +  convention)  /
              statement) * 10)]

       --comment=<y_or_n>
              Add a comment according to your evaluation note. This is used by
              the global evaluation report (RP0004). [current: no]

       --msg-template=<template>
              Template used to display messages. This is  a  python  new-style
              format  string  used  to format the message information. See doc
              for all details


EXCEPTIONS
       --overgeneral-exceptions=<comma-separated class names>
              Exceptions that will emit a warning when being caught.  Defaults
              to "Exception" [current: Exception]


CLASSES
       --ignore-iface-methods=<method names>
              List  of interface methods to ignore, separated by a comma. This
              is used for instance to not  check  methods  defines  in  Zope's
              Interface      base      class.      [current:      isImplement-
              edBy,deferred,extends,names,namesAndDescriptions,queryDescrip-
              tionFor,getBases,getDescriptionFor,getDoc,getName,getTagged-
              Value,getTaggedValueTags,isEqualOrExtendedBy,setTagged-
              Value,isImplementedByInstancesOf,adaptWith,is_implemented_by]

       --defining-attr-methods=<method names>
              List  of  method  names  used  to declare (i.e. assign) instance
              attributes. [current: __init__,__new__,setUp]

       --valid-classmethod-first-arg=<argument names>
              List of valid names for the first argument in  a  class  method.
              [current: cls]

       --valid-metaclass-classmethod-first-arg=<argument names>
              List  of valid names for the first argument in a metaclass class
              method. [current: mcs]

       --exclude-protected=<protected access exclusions>
              List of member names, which should be  excluded  from  the  pro-
              tected            access            warning.           [current:
              _asdict,_fields,_replace,_source,_make]


LOGGING
       --logging-modules=<comma separated list>
              Logging modules to check that the string format arguments are in
              logging function parameter format [current: logging]


VARIABLES
       --init-import=<y_or_n>
              Tells  whether  we  should  check  for unused import in __init__
              files. [current: no]

       --dummy-variables-rgx=<regexp>
              A regular expression matching the name of dummy variables  (i.e.
              expectedly not used). [current: _$|dummy]

       --additional-builtins=<comma separated list>
              List  of  additional  names  supposed to be defined in builtins.
              Remember that you should avoid to define new builtins when  pos-
              sible. [current: none]

       --callbacks=<callbacks>
              List  of strings which can identify a callback function by name.
              A callback name must start or end with  one  of  those  strings.
              [current: cb_,_cb]


DESIGN
       --max-args=<int>
              Maximum number of arguments for function / method [current: 5]

       --ignored-argument-names=<regexp>
              Argument  names  that  match  this  expression  will be ignored.
              Default to name with leading underscore [current: _.*]

       --max-locals=<int>
              Maximum number of locals for function /  method  body  [current:
              15]

       --max-returns=<int>
              Maximum  number  of  return  /  yield for function / method body
              [current: 6]

       --max-branches=<int>
              Maximum number of branch for function /  method  body  [current:
              12]

       --max-statements=<int>
              Maximum number of statements in function / method body [current:
              50]

       --max-parents=<num>
              Maximum number of parents for a class (see R0901). [current: 7]

       --max-attributes=<num>
              Maximum number of attributes for a class (see R0902).  [current:
              7]

       --min-public-methods=<num>
              Minimum  number of public methods for a class (see R0903). [cur-
              rent: 2]

       --max-public-methods=<num>
              Maximum number of public methods for a class (see R0904).  [cur-
              rent: 20]


BASIC
       --required-attributes=<attributes>
              Required  attributes  for module, separated by a comma [current:
              none]

       --bad-functions=<builtin function names>
              List of builtins function names that should not be  used,  sepa-
              rated by a comma [current: map,filter,input]

       --good-names=<names>
              Good  variable  names which should always be accepted, separated
              by a comma [current: i,j,k,ex,Run,_]

       --bad-names=<names>
              Bad variable names which should always be refused, separated  by
              a comma [current: foo,bar,baz,toto,tutu,tata]

       --name-group=<name1:name2>
              Colon-delimited sets of names that determine each other's naming
              style when the name  regexes  allow  several  styles.  [current:
              none]

       --include-naming-hint=<y_or_n>
              Include  a  hint for the correct naming format with invalid-name
              [current: no]

       --function-rgx=<regexp>
              Regular expression matching correct function names [current: [a-
              z_][a-z0-9_]{2,30}$]

       --function-name-hint=<string>
              Naming hint for function names [current: [a-z_][a-z0-9_]{2,30}$]

       --variable-rgx=<regexp>
              Regular expression matching correct variable names [current: [a-
              z_][a-z0-9_]{2,30}$]

       --variable-name-hint=<string>
              Naming hint for variable names [current: [a-z_][a-z0-9_]{2,30}$]

       --const-rgx=<regexp>
              Regular expression matching  correct  constant  names  [current:
              (([A-Z_][A-Z0-9_]*)|(__.*__))$]

       --const-name-hint=<string>
              Naming   hint   for   constant   names   [current:   (([A-Z_][A-
              Z0-9_]*)|(__.*__))$]

       --attr-rgx=<regexp>
              Regular expression matching correct  attribute  names  [current:
              [a-z_][a-z0-9_]{2,30}$]

       --attr-name-hint=<string>
              Naming    hint   for   attribute   names   [current:   [a-z_][a-
              z0-9_]{2,30}$]

       --argument-rgx=<regexp>
              Regular expression matching correct argument names [current: [a-
              z_][a-z0-9_]{2,30}$]

       --argument-name-hint=<string>
              Naming hint for argument names [current: [a-z_][a-z0-9_]{2,30}$]

       --class-attribute-rgx=<regexp>
              Regular  expression matching correct class attribute names [cur-
              rent: ([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$]

       --class-attribute-name-hint=<string>
              Naming hint for class attribute names [current: ([A-Za-z_][A-Za-
              z0-9_]{2,30}|(__.*__))$]

       --inlinevar-rgx=<regexp>
              Regular expression matching correct inline iteration names [cur-
              rent: [A-Za-z_][A-Za-z0-9_]*$]

       --inlinevar-name-hint=<string>
              Naming hint for inline iteration names [current: [A-Za-z_][A-Za-
              z0-9_]*$]

       --class-rgx=<regexp>
              Regular  expression  matching  correct class names [current: [A-
              Z_][a-zA-Z0-9]+$]

       --class-name-hint=<string>
              Naming hint for class names [current: [A-Z_][a-zA-Z0-9]+$]

       --module-rgx=<regexp>
              Regular expression matching correct module names [current: (([a-
              z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$]

       --module-name-hint=<string>
              Naming  hint for module names [current: (([a-z_][a-z0-9_]*)|([A-
              Z][a-zA-Z0-9]+))$]

       --method-rgx=<regexp>
              Regular expression matching correct method names  [current:  [a-
              z_][a-z0-9_]{2,30}$]

       --method-name-hint=<string>
              Naming hint for method names [current: [a-z_][a-z0-9_]{2,30}$]

       --no-docstring-rgx=<regexp>
              Regular  expression  which  should  only match function or class
              names that do not require a docstring. [current: __.*__]

       --docstring-min-length=<int>
              Minimum line length  for  functions/classes  that  require  doc-
              strings, shorter ones are exempt. [current: -1]


MISCELLANEOUS
       --notes=<comma separated values>
              List  of  note  tags  to  take  in consideration, separated by a
              comma. [current: FIXME,XXX,TODO]


TYPECHECK
       --ignore-mixin-members=<y_or_n>
              Tells whether missing members accessed in mixin class should  be
              ignored. A mixin class is detected if its name ends with "mixin"
              (case insensitive). [current: yes]

       --ignored-modules=<module names>
              List of module names for which member attributes should  not  be
              checked (useful for modules/projects where namespaces are manip-
              ulated during runtime and thus existing member attributes cannot
              be deduced by static analysis [current: none]

       --ignored-classes=<members names>
              List  of classes names for which member attributes should not be
              checked (useful for classes with  attributes  dynamically  set).
              [current:     SQLObject,     optparse.Values,     thread._local,
              _thread._local]

       --zope=<y_or_n>
              When zope mode is  activated,  add  a  predefined  set  of  Zope
              acquired attributes to generated-members. [current: no]

       --generated-members=<members names>
              List  of  members which are set dynamically and missed by pylint
              inference system, and so shouldn't trigger E1101 when  accessed.
              Python    regular    expressions    are    accepted.   [current:
              REQUEST,acl_users,aq_parent]


SPELLING
       --spelling-dict=<dict name>
              Spelling dictionary name. Available dictionaries: none. To  make
              it working install python-enchant package. [current: none]

       --spelling-ignore-words=<comma separated words>
              List  of comma separated words that should not be checked. [cur-
              rent: none]

       --spelling-private-dict-file=<path to file>
              A path to a file that contains private dictionary; one word  per
              line. [current: none]

       --spelling-store-unknown-words=<y_or_n>
              Tells  whether  to store unknown words to indicated private dic-
              tionary in --spelling-private-dict-file option instead of  rais-
              ing a message. [current: no]


FORMAT
       --max-line-length=<int>
              Maximum number of characters on a single line. [current: 100]

       --ignore-long-lines=<regexp>
              Regexp  for  a line that is allowed to be longer than the limit.
              [current: ^(# )?<?https?://>?$]

       --single-line-if-stmt=<y_or_n>
              Allow the body of an if to be on the same line as  the  test  if
              there is no else. [current: no]

       --no-space-check=NO_SPACE_CHECK
              List  of  optional  constructs  for which whitespace checking is
              disabled [current: trailing-comma,dict-separator]

       --max-module-lines=<int>
              Maximum number of lines in a module [current: 1000]

       --indent-string=<string>
              String used as indentation unit. This is usually "    " (4  spa-
              ces) or "\t" (1 tab). [current: '    ']

       --indent-after-paren=<int>
              Number of spaces of indent required inside a hanging  or contin-
              ued line. [current: 4]

       --expected-line-ending-format=<empty or LF or CRLF>
              Expected format of line ending, e.g. empty (any line ending), LF
              or CRLF. [current: none]


IMPORTS
       --deprecated-modules=<modules>
              Deprecated  modules  which  should  not  be used, separated by a
              comma [current: regsub,TERMIOS,Bastion,rexec]

       --import-graph=<file.dot>
              Create a graph of every (i.e. internal and  external)  dependen-
              cies  in  the  given  file  (report RP0402 must not be disabled)
              [current: none]

       --ext-import-graph=<file.dot>
              Create a graph  of  external  dependencies  in  the  given  file
              (report RP0402 must not be disabled) [current: none]

       --int-import-graph=<file.dot>
              Create  a  graph  of  internal  dependencies  in  the given file
              (report RP0402 must not be disabled) [current: none]


SIMILARITIES
       --min-similarity-lines=<int>
              Minimum lines number of a similarity. [current: 4]

       --ignore-comments=<y or n>
              Ignore comments when computing similarities. [current: yes]

       --ignore-docstrings=<y or n>
              Ignore docstrings when computing similarities. [current: yes]

       --ignore-imports=<y or n>
              Ignore imports when computing similarities. [current: no]


ENVIRONMENT VARIABLES
       The following environment variables are used:
           * PYLINTHOME
           Path to the directory where the persistent  for  the  run  will  be
       stored.  If not found, it defaults to ~/.pylint.d/ or .pylint.d (in the
       current working directory).
           * PYLINTRC
           Path to the configuration  file.  See  the  documentation  for  the
       method used to search for configuration file.


OUTPUT
       Using the default text output, the message format is :

               MESSAGE_TYPE: LINE_NUM:[OBJECT:] MESSAGE

       There are 5 kind of message types :
           * (C) convention, for programming standard violation
           * (R) refactor, for bad code smell
           * (W) warning, for python specific problems
           * (E) error, for probable bugs in the code
           * (F) fatal, if an error occurred which prevented pylint from doing
       further processing.


OUTPUT STATUS CODE
       Pylint should leave with following status code:
           * 0 if everything went fine
           * 1 if a fatal message was issued
           * 2 if an error message was issued
           * 4 if a warning message was issued
           * 8 if a refactor message was issued
           * 16 if a convention message was issued
           * 32 on usage error

       status 1 to 16 will be bit-ORed so you can know which  different  cate-
       gories has been issued by analysing pylint output status code



ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+-------------------------+
       |ATTRIBUTE TYPE |    ATTRIBUTE VALUE      |
       +---------------+-------------------------+
       |Availability   | developer/python/pylint |
       +---------------+-------------------------+
       |Stability      | Uncommitted             |
       +---------------+-------------------------+

SEE ALSO
       /usr/share/doc/pythonX.Y-pylint/


BUGS
       Please  report  bugs  on  the project's mailing list: mailto:code-qual-
       ity@python.org


AUTHOR
       Logilab <python-projects@lists.logilab.org>




NOTES
       Source code for open source software components in Oracle  Solaris  can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This    software    was    built    from    source     available     at
       https://github.com/oracle/solaris-userland.    The  original  community
       source was downloaded from  pypi:///pylint==2.6.0.

       Further information about this software can be found on the open source
       community website at https://www.pylint.org/.



pylint                             2015-2-27                         pylint(1)