Experiment with pylint to check source code.
authorJoel Rosdahl <joel@rosdahl.net>
Sun, 25 Sep 2005 10:12:42 +0000 (10:12 +0000)
committerJoel Rosdahl <joel@rosdahl.net>
Sun, 25 Sep 2005 10:12:42 +0000 (10:12 +0000)
check.py [new file with mode: 0755]
misc/pylintrc [new file with mode: 0644]

diff --git a/check.py b/check.py
new file mode 100755 (executable)
index 0000000..8350d03
--- /dev/null
+++ b/check.py
@@ -0,0 +1,7 @@
+#! /usr/bin/env python
+
+import sys
+from pylint import lint
+
+sys.path.insert(0, "src/packages")
+lint.Run(["--rcfile", "misc/pylintrc", "kofoto.commandline"])
diff --git a/misc/pylintrc b/misc/pylintrc
new file mode 100644 (file)
index 0000000..7fe49b2
--- /dev/null
@@ -0,0 +1,308 @@
+# lint Python modules using external checkers.                            
+#                                                                                
+#     This is the main checker controling the other ones and the reports         
+#     generation. It is itself both a raw checker and an astng checker in order  
+#     to:                                                                        
+#     * handle message activation / deactivation at the module level             
+#     * handle some basic but necessary stats'data (number of classes, methods...)
+#                                                                                 
+# This checker also defines the following reports:                                    
+#   * R0001: Total errors / warnings                                              
+#   * R0002: % errors / warnings by module                                        
+#   * R0003: Messages                                                             
+#   * R0004: Global evaluation                                                    
+# 
+[MASTER]
+# Add <file or directory> to the black list. It should be a base name, not a
+# path. You may set this option multiple times.
+ignore=.svn
+
+# Pickle collected data for later comparisons.
+persistent=yes
+
+# Set the cache size for astng objects.
+cache-size=500
+
+
+
+[REPORTS]
+# Tells wether to display a full report or only the messages
+reports=yes
+
+# Use HTML as output format instead of text
+html=no
+
+# Use a parseable text output format, so your favorite text editor will be able
+# to jump to the line corresponding to a message.
+parseable=no
+
+# Colorizes text output using ansi escape codes
+color=no
+
+# 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]".
+files-output=no
+
+# Python expression which should return a note less than 10 (10 is the highest
+# note).You have access to the variables errors warning, statement which
+# respectivly contain the number of errors / warnings messages and the total
+# number of statements analyzed. This is used by the global evaluation report
+# (R0004).
+evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
+
+# Add a comment according to your evaluation note. This is used by the global
+# evaluation report (R0004).
+comment=no
+
+# Include message's id in output
+include-ids=no
+
+
+
+# checks for                                                              
+#     * unused variables / imports                                               
+#     * undefined variables                                                      
+#     * redefinition of variable from builtins or from an outer scope            
+#     * use of variable before assigment                                         
+#     
+[VARIABLES]
+# Enable / disable this checker
+enable-variables=yes
+
+# Tells wether we should check for unused import in __init__ files.
+init-import=no
+
+# List of variable names used for dummy variables (i.e. not used).
+dummy-variables=_,dummy
+
+# List of additional names supposed to be defined in builtins. Remember that you
+# should avoid to define new builtins when possible.
+additional-builtins=
+
+
+
+# checks for :                                                            
+#     * doc strings                                                              
+#     * modules / classes / functions / methods / arguments / variables name     
+#     * number of arguments, local variables, branchs, returns and statements in
+# functions, methods                                                       
+#     * required module attributes                                             
+#     * dangerous default values as arguments                                    
+#     * redefinition of function / method / class                                
+#     * uses of the global statement                                             
+#                                                                                 
+# This checker also defines the following reports:                                    
+#   * R0101: Statistics by type                                                   
+# 
+[BASIC]
+# Enable / disable this checker
+enable-basic=yes
+
+# Required attributes for module, separated by a comma
+required-attributes=
+
+# Regular expression which should only match functions or classes name which do
+# not require a docstring
+no-docstring-rgx=__.*__
+
+# Minimal length for module / class / function / method / argument / variable
+# names
+min-name-length=3
+
+# Regular expression which should only match correct module names
+module-rgx=([a-z_][a-z0-9_]*)$
+
+# Regular expression which should only match correct class names
+class-rgx=[A-Z_][a-zA-Z0-9]+$
+
+# Regular expression which should only match correct function names
+function-rgx=[a-z_][A-za-z0-9_]*$
+
+# Regular expression which should only match correct method names
+method-rgx=[a-z_][A-Za-z0-9_]*$
+
+# Regular expression which should only match correct argument names
+argument-rgx=[a-z_][A-Za-z0-9_]*$
+
+# Regular expression which should only match correct variable names
+variable-rgx=[a-z_][A-Za-z0-9_]*$
+
+# Good variable names which should always be accepted, separated by a comma
+good-names=i,j,k,_
+
+# Bad variable names which should always be refused, separated by a comma
+bad-names=foo,bar,baz,fie,fum,gazonk
+
+# List of builtins function names that should not be used, separated by a comma
+bad-functions=map,filter,apply,input
+
+
+
+# checks for sign of poor/misdesign:                                      
+#     * number of methods, attributes, local variables...                        
+#     * size, complexity of functions, methods                                   
+#     
+[DESIGN]
+# Enable / disable this checker
+enable-design=yes
+
+# Maximum number of arguments for function / method
+max-args=5
+
+# Maximum number of locals for function / method body
+max-locals=15
+
+# Maximum number of return / yield for function / method body
+max-returns=6
+
+# Maximum number of branch for function / method body
+max-branchs=12
+
+# Maximum number of statements in function / method body
+max-statements=50
+
+# Maximum number of parents for a class (see R0901).
+max-parents=7
+
+# Maximum number of attributes for a class (see R0902).
+max-attributes=7
+
+# Minimum number of public methods for a class (see R0903).
+min-public-methods=2
+
+# Maximum number of public methods for a class (see R0904).
+max-public-methods=20
+
+
+
+# checks for :                                                            
+#     * methods without self as first argument                                   
+#     * overriden methods signature                                              
+#     * access only to existant members via self                                 
+#     * attributes not defined in the __init__ method                            
+#     * supported interfaces implementation                                      
+#     * unreachable code                                                         
+#     
+[CLASSES]
+# Enable / disable this checker
+enable-classes=yes
+
+# 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.
+ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by
+
+# Tells wether missing members accessed in mixin class should be ignored. A
+# mixin class is detected if its name ends with "mixin" (case insensitive).
+ignore-mixin-members=yes
+
+
+
+# checks for                                                              
+#     * external modules dependencies                                            
+#     * relative / wildcard imports                                                         
+#     * cyclic imports                                                           
+#     * uses of deprecated modules
+#                                                                                 
+# This checker also defines the following reports:                                    
+#   * R0401: External dependencies                                                
+#   * R0402: Modules dependencies graph                                           
+# 
+[IMPORTS]
+# Enable / disable this checker
+enable-imports=yes
+
+# Deprecated modules which should not be used, separated by a comma
+deprecated-modules=regsub,string,TERMIOS,Bastion,rexec
+
+# Create a graph of every (i.e. internal and external) dependencies in the given
+# file (report R0402 must not be disabled)
+import-graph=
+
+# Create a graph of external dependencies in the given file (report R0402 must
+# not be disabled)
+ext-import-graph=
+
+# Create a graph of internal dependencies in the given file (report R0402 must
+# not be disabled)
+int-import-graph=
+
+
+
+# checks for                                                              
+#     * excepts without exception filter                                         
+#     * string exceptions                                                        
+#     
+[EXCEPTIONS]
+# Enable / disable this checker
+enable-exceptions=yes
+
+
+
+# checks for similarities and duplicated code. This computation may be
+#     memory / CPU intensive, so you should disable it if you experiments some
+#     problems.
+#                                                                                 
+# This checker also defines the following reports:                                    
+#   * R0801: Duplication                                                          
+# 
+[SIMILARITIES]
+# Enable / disable this checker
+enable-similarities=yes
+
+# Minimum lines number of a similarity.
+min-similarity-lines=4
+
+# Ignore comments when computing similarities.
+ignore-comments=yes
+
+
+
+# checks for :                                                            
+#     * unauthorized constructions                                               
+#     * strict indentation                                                       
+#     * line length                                                              
+#     * use of <> instead of !=
+#     
+[FORMAT]
+# Enable / disable this checker
+enable-format=yes
+
+# Maximum number of characters on a single line.
+max-line-length=80
+
+# Maximum number of lines in a module
+max-module-lines=1000
+
+# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 tab).
+indent-string='    '
+
+
+
+# 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                                              
+#                                                                                 
+# This checker also defines the following reports:                                    
+#   * R0701: Raw metrics                                                          
+# 
+[METRICS]
+# Enable / disable this checker
+enable-metrics=yes
+
+
+
+# checks for:                                                             
+#     * warning notes in the code like FIXME, XXX                                
+#     * PEP 263: source code with non ascii character but no encoding declaration
+#     
+[MISCELLANEOUS]
+# Enable / disable this checker
+enable-miscellaneous=yes
+
+# List of note tags to take in consideration, separated by a comma. Default to
+# FIXME, XXX, TODO
+notes=FIXME,XXX,TODO