Como posso analisar o código Python para identificar áreas problemáticas?

Eu tenho um grande repositório de origem dividido em vários projetos. Eu gostaria de produzir um relatório sobre o funcionamento do código-fonte, identificando áreas problemáticas que precisam ser abordadas. Especificamente, gostaria de chamar rotinas com alta complexidade ciclomática, identificar...