After a while, I can guess where bad code comes from. Code that is hastily written by someone experienced is very different than code assembled by the inexperienced and without good guidance. Feature creep also has an obvious quality. Trying to turn these things into simple metrics is very much a mistake.