1) suppose I have a bug to fix, how deep should I, on average, go to get to the cause? How many files do I need to jump through to determine a trivial flow of data from a to b?
2) there’s a straightforward feature or edge case, how easy is it to add it?
3) (for dynamic languages) is it possible to get the full list of usages for a particular function/method I’m changing?
4) is it possible to correctly identify and eliminate a portion of code that has been unused for a while?
5) are there areas no one knows how they work and everybody is afraid of touching because nobody is sure what would break and how?
I use these things to determine the code quality. Perceived cleanliness doesn’t affect the quality.