title: How can I analyze Python code to identify problematic areas?
body: <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>