¿Cómo puedo analizar el código de Python para identificar áreas problemáticas?

Tengo un repositorio de origen grande dividido en varios proyectos. Me gustaría producir un informe sobre el estado del código fuente, identificando las áreas problemáticas que deben abordarse.

Específicamente, me gustaría llamar rutinas con una alta complejidad ciclomática, identificar repeticiones y quizás ejecutar un análisis estático similar a una pelusa para detectar construcciones sospechosas (y por lo tanto, probablemente erróneas).

¿Cómo puedo hacer para construir un informe de este tipo?

Respuestas a la pregunta(8)

Su respuesta a la pregunta