third_party.pylibs.pylint.src/doc/features.txt

736 lines
27 KiB
Plaintext
Raw Normal View History

2006-04-26 10:48:09 +00:00
PyLint features
===============
.. contents::
2006-08-10 14:46:20 +00:00
General options
~~~~~~~~~~~~~~~
:rcfile:
Specify a configuration file.
2007-03-07 09:15:39 +00:00
:init-hook:
Python code to execute, usually for sys.path manipulation such as
pygtk.require().
:rpython-mode:
enable the rpython checker which is disabled by default
2006-08-10 14:46:20 +00:00
:errors-only:
In debug mode, checkers without error messages are disabled and for others,
only the ERROR messages are displayed, and no reports are done by default
:profile:
Profiled execution.
:ignore:
Add <file or directory> to the black list. It should be a base name, not a
path. You may set this option multiple times.
2008-02-07 08:56:27 +00:00
Default: CVS
2006-08-10 14:46:20 +00:00
:persistent:
Pickle collected data for later comparisons.
Default: yes
:cache-size:
Set the cache size for astng objects.
Default: 500
:load-plugins:
List of plugins (as comma separated values of python modules names) to load,
usually to register additional checkers.
Commands options
~~~~~~~~~~~~~~~~
:help-msg:
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 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.
:generate-man:
Generate pylint's man page.
Messages control options
~~~~~~~~~~~~~~~~~~~~~~~~
:enable-checker:
2008-02-07 08:26:40 +00:00
Enable only checker(s) with the given id(s). This option conflicts with the
2006-08-10 14:46:20 +00:00
disable-checker option
:disable-checker:
2008-02-07 08:26:40 +00:00
Enable all checker(s) except those with the given id(s). This option
conflicts with the enable-checker option
2006-08-10 14:46:20 +00:00
:enable-msg-cat:
Enable all messages in the listed categories.
:disable-msg-cat:
Disable all messages in the listed categories.
:enable-msg:
Enable the message(s) with the given id(s).
:disable-msg:
Disable the message(s) with the given id(s).
Reports options
~~~~~~~~~~~~~~~
:output-format:
2008-02-07 08:56:27 +00:00
Set the output format. Available formats are text, parseable, colorized, msvs
2007-03-07 09:15:39 +00:00
(visual studio) and html
2006-08-10 14:46:20 +00:00
Default: text
:include-ids:
Include message's id in output
:files-output:
Put messages in a separate file for each module / package specified on the
command line instead of printing them on stdout. Reports (if any) will be
written in a file name "pylint_global.[txt|html]".
:reports:
Tells wether to display a full report or only the messages
Default: yes
:evaluation:
Python expression which should return a note less than 10 (10 is the highest
2008-02-07 08:56:27 +00:00
note). You have access to the variables errors warning, statement which
2006-08-10 14:46:20 +00:00
respectivly contain the number of errors / warnings messages and the total
number of statements analyzed. This is used by the global evaluation report
(R0004).
Default: 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
:comment:
Add a comment according to your evaluation note. This is used by the global
evaluation report (R0004).
:enable-report:
Enable the report(s) with the given id(s).
:disable-report:
Disable the report(s) with the given id(s).
Main messages
~~~~~~~~~~~~~
:E0001:
Used when a syntax error is raised for a module.
:E0011: *Unrecognized file option %r*
Used when an unknown inline option is encountered.
:E0012: *Bad option value %r*
Used when a bad value for an inline option is encountered.
:I0001: *Unable to run raw checkers on built-in module %s*
2006-04-26 10:48:09 +00:00
Used to inform that a built-in module has not been checked using the raw
2006-08-10 14:46:20 +00:00
checkers.
:I0010: *Unable to consider inline option %r*
2006-04-26 10:48:09 +00:00
Used when an inline option is either badly formatted or can't be used inside
2006-08-10 14:46:20 +00:00
modules.
:I0011: *Locally disabling %s*
2008-02-07 08:56:27 +00:00
Used when an inline option disables a message or a messages category.
2006-08-10 14:46:20 +00:00
:I0012: *Locally enabling %s*
2008-02-07 08:56:27 +00:00
Used when an inline option enables a message or a messages category.
2007-03-07 09:15:39 +00:00
:I0013: *Ignoring entire file*
Used to inform that the file will not be checked
2006-08-10 14:46:20 +00:00
:F0001:
2008-02-07 08:56:27 +00:00
Used when an error occured preventing the analysis of a module (unable to find
it for instance).
2006-08-10 14:46:20 +00:00
:F0002: *%s: %s*
2006-04-26 10:48:09 +00:00
Used when an unexpected error occured while building the ASTNG representation.
2008-02-07 08:56:27 +00:00
This is usually accompanied by a traceback. Please report such errors !
2006-08-10 14:46:20 +00:00
:F0003: *ignored builtin module %s*
2006-04-26 10:48:09 +00:00
Used to indicate that the user asked to analyze a builtin module which has
2006-08-10 14:46:20 +00:00
been skipped.
2007-03-07 09:15:39 +00:00
:F0004: *unexpected infered value %s*
Used to indicate that some value of an unexpected type has been infered.
2006-04-26 10:48:09 +00:00
2006-08-10 14:46:20 +00:00
Main reports
~~~~~~~~~~~~
:R0001: Messages by category
:R0002: % errors / warnings by module
:R0003: Messages
:R0004: Global evaluation
2006-04-26 10:48:09 +00:00
2006-08-10 14:46:20 +00:00
Basic checker
-------------
2006-08-10 13:40:33 +00:00
checks for :
* doc strings
* modules / classes / functions / methods / arguments / variables name
* number of arguments, local variables, branchs, returns and statements in
2008-02-07 08:26:40 +00:00
functions, methods
2006-08-10 13:40:33 +00:00
* required module attributes
* dangerous default values as arguments
* redefinition of function / method / class
* uses of the global statement
2006-04-26 10:48:09 +00:00
2006-08-10 14:46:20 +00:00
Options
~~~~~~~
:required-attributes:
Required attributes for module, separated by a comma
:no-docstring-rgx:
Regular expression which should only match functions or classes name which do
not require a docstring
Default: __.*__
:module-rgx:
Regular expression which should only match correct module names
Default: (([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
:const-rgx:
Regular expression which should only match correct module level names
Default: (([A-Z_][A-Z1-9_]*)|(__.*__))$
:class-rgx:
Regular expression which should only match correct class names
Default: [A-Z_][a-zA-Z0-9]+$
:function-rgx:
Regular expression which should only match correct function names
Default: [a-z_][a-z0-9_]{2,30}$
:method-rgx:
Regular expression which should only match correct method names
Default: [a-z_][a-z0-9_]{2,30}$
:attr-rgx:
Regular expression which should only match correct instance attribute names
Default: [a-z_][a-z0-9_]{2,30}$
:argument-rgx:
Regular expression which should only match correct argument names
Default: [a-z_][a-z0-9_]{2,30}$
:variable-rgx:
Regular expression which should only match correct variable names
Default: [a-z_][a-z0-9_]{2,30}$
:inlinevar-rgx:
Regular expression which should only match correct list comprehension /
generator expression variable names
Default: [A-Za-z_][A-Za-z0-9_]*$
:good-names:
Good variable names which should always be accepted, separated by a comma
Default: i,j,k,ex,Run,_
:bad-names:
Bad variable names which should always be refused, separated by a comma
Default: foo,bar,baz,toto,tutu,tata
:bad-functions:
List of builtins function names that should not be used, separated by a comma
Default: map,filter,apply,input
2006-04-26 10:48:09 +00:00
Messages
~~~~~~~~
2007-03-07 09:15:39 +00:00
:E0100: *__init__ method is a generator*
Used when the special class method __init__ is turned into a generator by a
yield in its body.
2006-08-10 14:46:20 +00:00
:E0101: *Explicit return in __init__*
2007-03-07 09:15:39 +00:00
Used when the special class method __init__ has an explicit return value.
2006-08-10 14:46:20 +00:00
:E0102: *%s already defined line %s*
Used when a function / class / method is redefined.
:E0103: *%r not properly in loop*
Used when break or continue keywords are used outside a loop.
2007-03-07 09:15:39 +00:00
:E0104: *return outside function*
Used when a "return" statement is found outside a function or method.
:E0105: *yield outside function*
Used when a "yield" statement is found outside a function or method.
:E0106: *return with argument inside generator*
Used when a "return" statement with an argument is found outside in a
generator function or method (e.g. with some "yield" statements).
2006-08-10 14:46:20 +00:00
:W0101: *Unreachable code*
Used when there is some code behind a "return" or "raise" statement, which
will never be accessed.
:W0102: *Dangerous default value %s as argument*
Used when a mutable value as list or dictionary is detected in a default value
for an argument.
:W0104: *Statement seems to have no effect*
Used when a statement doesn't have (or at least seems to) any effect.
:W0105: *String statement has no effect*
Used when a string is used as a statement (which of course has no effect).
This is a particular case of W0104 with its own message so you can easily
2007-03-07 09:15:39 +00:00
disable it if you're using those strings as documentation, instead of
comments.
:W0106: *Unnecessary semicolon*
2006-08-10 14:46:20 +00:00
Used when a statement is endend by a semi-colon (";"), which isn't necessary
2007-03-07 09:15:39 +00:00
(that's python, not C ;).
:W0107: *Unnecessary pass statement*
2008-02-07 08:56:27 +00:00
Used when a "pass" statement that can be avoided is encountered.)
2006-08-10 14:46:20 +00:00
:W0122: *Use of the exec statement*
Used when you use the "exec" statement, to discourage its usage. That doesn't
mean you can not use it !
:W0141: *Used builtin function %r*
Used when a black listed builtin function is used (see the bad-function
option). Usual black listed functions are the ones like map, or filter , where
Python offers now some cleaner alternative like list comprehension.
:W0142: *Used * or ** magic*
Used when a function or method is called using `*args` or `**kwargs` to
2008-02-07 08:26:40 +00:00
dispatch arguments. This doesn't improve readability and should be used with
2007-03-07 09:15:39 +00:00
care.
2006-08-10 14:46:20 +00:00
:C0102: *Black listed name "%s"*
Used when the name is listed in the black list (unauthorized names).
:C0103: *Invalid name "%s" (should match %s)*
2006-08-10 13:40:33 +00:00
Used when the name doesn't match the regular expression associated to its type
2006-08-10 14:46:20 +00:00
(constant, variable, class...).
:C0111: *Missing docstring*
2006-08-10 13:40:33 +00:00
Used when a module, function, class or method has no docstring. Some special
2006-08-10 14:46:20 +00:00
methods like __init__ doesn't necessary require a docstring.
:C0112: *Empty docstring*
2006-08-10 13:40:33 +00:00
Used when a module, function, class or method has an empty docstring (it would
2007-03-07 09:15:39 +00:00
be too easy ;).
2006-08-10 14:46:20 +00:00
:C0121: *Missing required attribute "%s"*
Used when an attribute required for modules is missing.
2006-04-26 10:48:09 +00:00
2006-08-10 14:46:20 +00:00
Reports
~~~~~~~
:R0101: Statistics by type
2006-04-26 10:48:09 +00:00
2007-03-07 09:15:39 +00:00
Typecheck checker
-----------------
try to find bugs in the code using type inference
Options
~~~~~~~
:ignore-mixin-members:
Tells wether missing members accessed in mixin class should be ignored. A
mixin class is detected if its name ends with "mixin" (case insensitive).
Default: yes
2008-02-07 08:26:40 +00:00
:ignored-classes:
List of classes names for which member attributes should not be checked
(useful for classes with attributes dynamicaly set).
Default: SQLObject
2007-03-07 09:15:39 +00:00
:zope:
When zope mode is activated, consider the acquired-members option to ignore
access to some undefined attributes.
:acquired-members:
2008-02-07 08:56:27 +00:00
List of members which are usually get through zope's acquisition mecanism and
2007-03-07 09:15:39 +00:00
so shouldn't trigger E0201 when accessed (need zope=yes to be considered).
Default: REQUEST,acl_users,aq_parent
Messages
~~~~~~~~
:E1101: *%s %r has no %r member*
2008-02-07 08:56:27 +00:00
Used when a variable is accessed for an unexistant member.
2007-03-07 09:15:39 +00:00
:E1102: *%s is not callable*
2008-02-07 08:56:27 +00:00
Used when an object being called has been infered to a non callable object
2007-03-07 09:15:39 +00:00
:E1103: *%s %r has no %r member (but some types could not be inferred)*
2008-02-07 08:56:27 +00:00
Used when a variable is accessed for an unexistant member, but astng was not
2007-03-07 09:15:39 +00:00
able to interpret all possible types of this variable.
:E1111: *Assigning to function call which doesn't return*
2008-02-07 08:56:27 +00:00
Used when an assigment is done on a function call but the infered function
2007-03-07 09:15:39 +00:00
doesn't return anything.
:W1111: *Assigning to function call which only returns None*
2008-02-07 08:56:27 +00:00
Used when an assigment is done on a function call but the infered function
2007-03-07 09:15:39 +00:00
returns nothing but None.
Variables checker
-----------------
checks for
* unused variables / imports
* undefined variables
* redefinition of variable from builtins or from an outer scope
* use of variable before assigment
Options
~~~~~~~
:init-import:
Tells wether we should check for unused import in __init__ files.
:dummy-variables-rgx:
A regular expression matching names used for dummy variables (i.e. not used).
Default: _|dummy
:additional-builtins:
List of additional names supposed to be defined in builtins. Remember that
2008-02-07 08:56:27 +00:00
you should avoid to define new builtins when possible.
2007-03-07 09:15:39 +00:00
Messages
~~~~~~~~
:E0601: *Using variable %r before assignment*
2008-02-07 08:56:27 +00:00
Used when a local variable is accessed before it's assignment.
2007-03-07 09:15:39 +00:00
:E0602: *Undefined variable %r*
Used when an undefined variable is accessed.
:E0611: *No name %r in module %r*
Used when a name cannot be found in a module.
:W0601: *Global variable %r undefined at the module level*
Used when a variable is defined through the "global" statement but the
variable is not defined in the module scope.
:W0602: *Using global for %r but no assigment is done*
Used when a variable is defined through the "global" statement but no
2008-02-07 08:56:27 +00:00
assigment to this variable is done.
2007-03-07 09:15:39 +00:00
:W0603: *Using the global statement*
Used when you use the "global" statement to update a global variable. PyLint
2008-02-07 08:56:27 +00:00
just try to discourage this usage. That doesn't mean you can not use it !
2007-03-07 09:15:39 +00:00
:W0604: *Using the global statement at the module level*
Used when you use the "global" statement at the module level since it has no
2008-02-07 08:56:27 +00:00
effect
2007-03-07 09:15:39 +00:00
:W0611: *Unused import %s*
Used when an imported module or variable is not used.
:W0612: *Unused variable %r*
Used when a variable is defined but not used.
:W0613: *Unused argument %r*
Used when a function or method argument is not used.
:W0614: *Unused import %s from wildcard import*
2008-02-07 08:26:40 +00:00
Used when an imported module or variable is not used from a 'from X import *'
2007-03-07 09:15:39 +00:00
style import.
:W0621: *Redefining name %r from outer scope (line %s)*
2008-02-07 08:56:27 +00:00
Used when a variable's name hide a name defined in the outer scope.
2007-03-07 09:15:39 +00:00
:W0622: *Redefining built-in %r*
2008-02-07 08:56:27 +00:00
Used when a variable or function override a built-in.
2007-03-07 09:15:39 +00:00
:W0631: *Using possibly undefined loop variable %r*
2008-02-07 08:56:27 +00:00
Used when an loop variable (i.e. defined by a for loop or a list comprehension
2007-03-07 09:15:39 +00:00
or a generator expression) is used outside the loop.
2006-08-10 14:46:20 +00:00
Classes checker
---------------
2006-04-26 10:48:09 +00:00
checks for :
* methods without self as first argument
2006-08-10 14:46:20 +00:00
* overridden methods signature
2008-02-07 08:56:27 +00:00
* access only to existant members via self
2006-04-26 10:48:09 +00:00
* attributes not defined in the __init__ method
* supported interfaces implementation
* unreachable code
2006-08-10 14:46:20 +00:00
Options
~~~~~~~
:ignore-iface-methods:
List of interface methods to ignore, separated by a comma. This is used for
2008-02-07 08:56:27 +00:00
instance to not check methods defines in Zope's Interface base class.
2006-08-10 14:46:20 +00:00
Default: isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by
:defining-attr-methods:
List of method names used to declare (i.e. assign) instance attributes.
Default: __init__,__new__,setUp
2006-04-26 10:48:09 +00:00
Messages
~~~~~~~~
2008-02-07 08:56:27 +00:00
:E0202: *An attribute inherited from %s hide this method*
2006-04-26 10:48:09 +00:00
Used when a class defines a method which is hiden by an instance attribute
2006-08-10 14:46:20 +00:00
from an ancestor class.
:E0203: *Access to member %r before its definition line %s*
Used when an instance member is accessed before it's actually assigned.
:E0211: *Method has no argument*
2006-04-26 10:48:09 +00:00
Used when a method which should have the bound instance as first argument has
2006-08-10 14:46:20 +00:00
no argument defined.
:E0213: *Method should have "self" as first argument*
2008-02-07 08:56:27 +00:00
Used when a method has an attribute different the "self" as first argument.
This is considered as an error since this is a soooo common convention that
you should'nt break it!
2006-08-10 14:46:20 +00:00
:E0221: *Interface resolved to %s is not a class*
Used when a class claims to implement an interface which is not a class.
:E0222: *Missing method %r from %s interface*
2006-04-26 10:48:09 +00:00
Used when a method declared in an interface is missing from a class
2008-02-07 08:56:27 +00:00
implementing this interface
2006-08-10 14:46:20 +00:00
:W0201: *Attribute %r defined outside __init__*
Used when an instance attribute is defined outside the __init__ method.
:W0211: *Static method with %r as first argument*
Used when a static method has "self" or "cls" as first argument.
:W0212: *Access to a protected member %s of a client class*
Used when a protected member (i.e. class member with a name beginning with an
underscore) is access outside the class or a descendant of the class where
it's defined.
:W0221: *Arguments number differs from %s method*
Used when a method has a different number of arguments than in the implemented
interface or in an overridden method.
:W0222: *Signature differs from %s method*
Used when a method signature is different than in the implemented interface or
in an overridden method.
:W0223: *Method %r is abstract in class %r but is not overridden*
Used when an abstract method (ie raise NotImplementedError) is not overridden
in concrete class.
:W0231: *__init__ method from base class %r is not called*
Used when an ancestor class method has an __init__ method which is not called
by a derived class.
:W0232: *Class has no __init__ method*
Used when a class has no __init__ method, neither its parent classes.
:W0233: *__init__ method from a non direct base class %r is called*
Used when an __init__ method is called on a class which is not in the direct
ancestors for the analysed class.
:R0201: *Method could be a function*
Used when a method doesn't use its bound instance, and so could be written as
a function.
:C0202: *Class method should have "cls" as first argument*
Used when a class method has an attribute different than "cls" as first
argument, to easily differentiate them from regular instance methods.
:C0203: *Metaclass method should have "mcs" as first argument*
2008-02-07 08:56:27 +00:00
Used when a metaclass method has an attribute different the "mcs" as first
2006-08-10 14:46:20 +00:00
argument.
:F0202: *Unable to check methods signature (%s / %s)*
2006-04-26 10:48:09 +00:00
Used when PyLint has been unable to check methods signature compatibility for
2008-02-07 08:56:27 +00:00
an unexpected raison. Please report this kind if you don't make sense of it.
2006-08-10 14:46:20 +00:00
:F0220: *failed to resolve interfaces implemented by %s (%s)*
2008-02-07 08:56:27 +00:00
Used when a PyLint as failed to find interfaces implemented by a class
2006-08-10 14:46:20 +00:00
2006-04-26 10:48:09 +00:00
2006-08-10 14:46:20 +00:00
Design checker
--------------
checks for sign of poor/misdesign:
* number of methods, attributes, local variables...
* size, complexity of functions, methods
2006-04-26 10:48:09 +00:00
2006-08-10 14:46:20 +00:00
Options
~~~~~~~
:max-args:
Maximum number of arguments for function / method
Default: 5
:max-locals:
Maximum number of locals for function / method body
Default: 15
:max-returns:
Maximum number of return / yield for function / method body
Default: 6
:max-branchs:
2008-02-07 08:56:27 +00:00
Maximum number of branch for function / method body
2006-08-10 14:46:20 +00:00
Default: 12
:max-statements:
Maximum number of statements in function / method body
Default: 50
:max-parents:
Maximum number of parents for a class (see R0901).
Default: 7
:max-attributes:
Maximum number of attributes for a class (see R0902).
Default: 7
:min-public-methods:
Minimum number of public methods for a class (see R0903).
Default: 2
:max-public-methods:
Maximum number of public methods for a class (see R0904).
Default: 20
2006-04-26 10:48:09 +00:00
2006-08-10 14:46:20 +00:00
Messages
~~~~~~~~
:R0901: *Too many ancestors (%s/%s)*
Used when class has too many parent classes, try to reduce this to get a more
simple (and so easier to use) class.
:R0902: *Too many instance attributes (%s/%s)*
Used when class has too many instance attributes, try to reduce this to get a
more simple (and so easier to use) class.
2007-03-07 09:15:39 +00:00
:R0903: *Too few public methods (%s/%s)*
Used when class has too few public methods, so be sure it's really worth it.
2006-08-10 14:46:20 +00:00
:R0904: *Too many public methods (%s/%s)*
Used when class has too many public methods, try to reduce this to get a more
simple (and so easier to use) class.
:R0911: *Too many return statements (%s/%s)*
2008-02-07 08:56:27 +00:00
Used when a function or method has too many return statement, making it hard
2006-08-10 14:46:20 +00:00
to follow.
:R0912: *Too many branches (%s/%s)*
2007-03-07 09:15:39 +00:00
Used when a function or method has too many branches, making it hard to
follow.
2006-08-10 14:46:20 +00:00
:R0913: *Too many arguments (%s/%s)*
Used when a function or method takes too many arguments.
:R0914: *Too many local variables (%s/%s)*
Used when a function or method has too many local variables.
:R0915: *Too many statements (%s/%s)*
Used when a function or method has too many statements. You should then split
it in smaller functions / methods.
:R0921: *Abstract class not referenced*
Used when an abstract class is not used as ancestor anywhere.
:R0922: *Abstract class is only referenced %s times*
Used when an abstract class is used less than X times as ancestor.
:R0923: *Interface not implemented*
Used when an interface class is not implemented anywhere.
2006-04-26 10:48:09 +00:00
2008-02-07 08:56:27 +00:00
Imports checker
---------------
checks for
* external modules dependencies
* relative / wildcard imports
* cyclic imports
* uses of deprecated modules
Options
~~~~~~~
:deprecated-modules:
Deprecated modules which should not be used, separated by a comma
Default: regsub,string,TERMIOS,Bastion,rexec
:import-graph:
Create a graph of every (i.e. internal and external) dependencies in the
given file (report R0402 must not be disabled)
:ext-import-graph:
Create a graph of external dependencies in the given file (report R0402 must
not be disabled)
:int-import-graph:
Create a graph of internal dependencies in the given file (report R0402 must
not be disabled)
Messages
~~~~~~~~
:W0401: *Wildcard import %s*
Used when `from module import *` is detected.
:W0402: *Uses of a deprecated module %r*
Used a module marked as deprecated is imported.
:W0403: *Relative import %r*
Used when an import relative to the package directory is detected.
:W0404: *Reimport %r (imported line %s)*
Used when a module is reimported multiple times.
:W0406: *Module import itself*
Used when a module is importing itself.
:W0410: *__future__ import is not the first non docstring statement*
Python 2.5 and greater require __future__ import to be the first non docstring
statement in the module.
:R0401: *Cyclic import (%s)*
Used when a cyclic import between two or more modules is detected.
:F0401: *Unable to import %r (%s)*
Used when pylint has been unable to import a module.
Reports
~~~~~~~
:R0401: External dependencies
:R0402: Modules dependencies graph
Newstyle checker
----------------
checks for usage of new style capabilities on old style classes and
other new/old styles conflicts problems
* use of property, __slots__, super
* "super" usage
* raising a new style class as exception
Messages
~~~~~~~~
:E1001: *Use __slots__ on an old style class*
Used when an old style class use the __slots__ attribute.
:E1002: *Use super on an old style class*
Used when an old style class use the super builtin.
:E1003: *Bad first argument %r given to super class*
Used when another argument than the current class is given as first argument
of the super builtin.
:E1010: *Raising a new style class*
Used when a new style class is raised since it's not possible with python <
2.5.
:W1001: *Use of "property" on an old style class*
Used when PyLint detect the use of the builtin "property" on an old style
class while this is relying on new style classes features
:W1010: *Exception doesn't inherit from standard "Exception" class*
Used when a custom exception class is raised but doesn't inherit from the
builtin "Exception" class.
2006-08-10 14:46:20 +00:00
Exceptions checker
------------------
2006-04-26 10:48:09 +00:00
checks for
* excepts without exception filter
* string exceptions
Messages
~~~~~~~~
2006-08-10 14:46:20 +00:00
:E0701: *Bad except clauses order (%s)*
2006-04-26 10:48:09 +00:00
Used when except clauses are not in the correct order (from the more specific
to the more generic). If you don't fix the order, some exceptions may not be
2006-08-10 14:46:20 +00:00
catched by the most specific handler.
:E0702: *Raising %s while only classes, instances or string are allowed*
2006-04-26 10:48:09 +00:00
Used when something which is neither a class, an instance or a string is
2006-08-10 14:46:20 +00:00
raised (i.e. a `TypeError` will be raised).
:W0701: *Raising a string exception*
Used when a string exception is raised.
2008-02-07 08:26:40 +00:00
:W0702: *No exception type(s) specified*
2006-08-10 14:46:20 +00:00
Used when an except clause doesn't specify exceptions type to catch.
:W0703: *Catch "Exception"*
2008-02-07 08:26:40 +00:00
Used when an except catches Exception instances.
2006-08-10 14:46:20 +00:00
:W0704: *Except doesn't do anything*
Used when an except clause does nothing but "pass" and there is no "else"
clause.
:W0706: *Identifier %s used to raise an exception is assigned to %s*
Used when a variable used to raise an exception is initially assigned to a
value which can't be used as an exception.
2006-04-26 10:48:09 +00:00
2008-02-07 08:56:27 +00:00
Format checker
--------------
checks for :
* unauthorized constructions
* strict indentation
* line length
* use of <> instead of !=
Options
~~~~~~~
:max-line-length:
Maximum number of characters on a single line.
Default: 80
:max-module-lines:
Maximum number of lines in a module
Default: 1000
:indent-string:
String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
tab).
Default: ' '
Messages
~~~~~~~~
:W0311: *Bad indentation. Found %s %s, expected %s*
Used when an unexpected number of indentation's tabulations or spaces has been
found.
:W0312: *Found indentation with %ss instead of %ss*
Used when there are some mixed tabs and spaces in a module.
:W0331: *Use of the <> operator*
Used when the deprecated "<>" operator is used instead of "!=".
:W0332: *Use l as long integer identifier*
Used when a lower case "l" is used to mark a long integer. You should use a
upper case "L" since the letter "l" looks too much like the digit "1"
:W0333: *Use of the `` operator*
Used when the deprecated "``" (backtick) operator is used instead of the str()
function.
:C0301: *Line too long (%s/%s)*
Used when a line is longer than a given number of characters.
:C0302: *Too many lines in module (%s)*
Used when a module has too much lines, reducing its readibility.
:C0321: *More than one statement on a single line*
Used when more than on statement are found on the same line.
:C0322: *Operator not preceded by a space*
Used when one of the following operator (!= | <= | == | >= | < | > | = | \+= |
-= | \*= | /= | %) is not preceded by a space.
:C0323: *Operator not followed by a space*
Used when one of the following operator (!= | <= | == | >= | < | > | = | \+= |
-= | \*= | /= | %) is not followed by a space.
:C0324: *Comma not followed by a space*
Used when a comma (",") is not followed by a space.
:F0321: *Format detection error in %r*
Used when an unexpected error occured in bad format detection.Please report
the error if it occurs.
2007-03-07 09:15:39 +00:00
Miscellaneous checker
---------------------
checks for:
* warning notes in the code like FIXME, XXX
* PEP 263: source code with non ascii character but no encoding declaration
Options
~~~~~~~
:notes:
List of note tags to take in consideration, separated by a comma.
Default: FIXME,XXX,TODO
Messages
~~~~~~~~
:E0501: *Non ascii characters found but no encoding specified (PEP 263)*
Used when some non ascii characters are detected but now encoding is
specified, as explicited in the PEP 263.
:E0502: *Wrong encoding specified (%s)*
Used when a known encoding is specified but the file doesn't seem to be
actually in this encoding.
:E0503: *Unknown encoding specified (%s)*
Used when an encoding is specified, but it's unknown to Python.
:W0511:
Used when a warning note as FIXME or XXX is detected.
2006-08-10 14:46:20 +00:00
Metrics checker
---------------
does not check anything but gives some raw metrics :
* total number of lines
* total number of code lines
* total number of docstring lines
* total number of comments lines
* total number of empty lines
Reports
~~~~~~~
:R0701: Raw metrics
Similarities checker
--------------------
checks for similarities and duplicated code. This computation may be
memory / CPU intensive, so you should disable it if you experiments some
problems.
Options
~~~~~~~
:min-similarity-lines:
Minimum lines number of a similarity.
Default: 4
:ignore-comments:
Ignore comments when computing similarities.
Default: yes
:ignore-docstrings:
Ignore docstrings when computing similarities.
Default: yes
Messages
~~~~~~~~
:R0801: *Similar lines in %s files*
Indicates that a set of similar lines has been detected among multiple file.
2007-03-07 09:15:39 +00:00
This usually means that the code should be refactored to avoid this
duplication.
2006-04-26 10:48:09 +00:00
2006-08-10 14:46:20 +00:00
Reports
~~~~~~~
:R0801: Duplication
2006-04-26 10:48:09 +00:00