Hi Alix,
In fact, I was reminded this spring that code churn metrics had been in our backlog for a long time, so I spent some time looking closely at them. I came away distinctly skeptical. First, in the main
paper I read (sorry, I can't a non-paywall version now) I couldn't find any reference to Unit Testing. It seems to me that a well-unit tested system could withstand a higher level of churn. But I have no way of knowing whether or not unit testing was used at all, much less, heavily in the project (Windows Server 2003) under examination or what the numbers looked like for unit-tested, versus non-unit-tested sections of the code.
Beyond that, the basis of the measurement seems suspect to me in today's world of feature branches, (and PR analysis, and peer review) and merging with squashed commits. Okay sure, if you're still on CVS this might still be relevant, but for modern shops... well, you'd have to convince me.
Beyond that, how are these metrics actionable? If I have a section of code with a high churn rate, I should... sit on my hands and stop committing? Do a peer review (already part of our workflow, at least)? If the peer review does find something, checking in a change is just going to make the numbers worse! (Okay, now I'm being a PITA, but you get the point. :-D)
In fact, that paper I referred to was a retrospective statistical analysis. IMO, it didn't provide any guidance, or even hints about what to do with code churn numbers in an ongoing project. What if churn is high because the requirements keep changing, not because (as was supposed) the coders are having a hard time getting the logic right?