...
This definition of a repair differs from a refactor, which we define as a modification of the code that changes no behavior. That is, the refactored code behaves on both expected and unexpected inputs the same as the un-refactored code. If code can be automatically refactored to comply with a rule without changing its behavior on any inputs, that rule is automatically repairable (even though any such modification would be a refactor rather than a repair).
An automated repair tool does not need to know the developer's intent of any lines of code when repairing them. But it can be informed about idiosyncratic general details about the source code's conventions. One example would be whether assertions are disabled in production code. Knowing of such details is necessary if the repair tool must make code changes involving assertions.
The Detectable and Repairable questions are combined into a single Remediation Cost metric value that ranges from 1 to 3,
...