What tools and techniques do you use for exploring and learning an unknown code base?
I am thinking of tools like
ctags, unit-tests, functional test, class-diagram generators, call graphs, code metrics like
sloccount, and so on. I'd be interested in your experiences, the helpers you used or wrote yourself and the size of the code base with which you worked.
I realize that becoming acquainted with a code base is a process that happens over time, and familiarity can mean anything from "I'm able to summarize the code" to "I can refactor and shrink it to 30% of the size". But how to even begin?