O tienes un programa que realize análisis estáticos del código para indicar código que no se usa o usas un buscador eficiente (tipo Agent Ransack o similar) y vas clase por clase y función por función buscando usos...
La opción ideal es la primera. Puedes consultar un listado de analizadores estáticos
aquí.
Por cierto, de entre todos los analizadores únicamente te servirán aquellos que sean capaces de encontrar código sin uso o dead code.
un saludo.