<p>I have a large source repository split across multiple projects. I would like to produce a report about the health of the source code, identifying problem areas that need to be addressed.</p>

<p>Specifically, I'd like to call out routines with a high cyclomatic complexity, identify repetition, and perhaps run some lint-like static analysis to spot suspicious (and thus likely erroneous) constructs.</p>

<p>How might I go about constructing such a report?</p>

For static analysis there is
pylint
and
pychecker
. Personally I use pylint as it seems to be more comprehensive than pychecker.
For cyclomatic complexity you can try
this perl program
, or this
article
which introduces a python program to do the same