0

I'm not sure how possible it even is but as a programmer I have a sense of risk involved when I'm making changes to a code base.

I've never seen a tool which basically tells me, as I'm coding, how far reaching my changes potentially are.

Examples off the top of my head (which are probably debatable but this is just to be less abstract):

  • Adding a property to a POCO is a "green" change
  • Making a field readonly is a "green" change
  • Adding a constructor when Unity DI is present is a "yellow" change
  • Modifying conditional logic in a public method which has usages that span multiple assemblies is a "red" change

Is it possible? If yes, to which extent?

(Note this question is not a request for a specific tool.)

1
  • You may be interested in how Visual Studio determines which unit tests are affected by the changes to the code happened since the last time the tests were run. Search for Test Impact Analysis. Dec 31, 2014 at 22:23

1 Answer 1

3

Does anything like this exist, or is it even possible?

Sure, there are tools that try to determine impact of a change across your codebase.

No, they aren't foolproof. They're not foolproof because languages invariably allow things to escape their control. Things like reflection, working with files/databases, concurrency... all of these are things that cannot be dealt with via static analysis. If they could be (quickly) then the compiler would do it or we'd use these tools more frequently. Some languages allow more/more useful checks at the expense of flexibility. On the other side is dynamic languages where this sort of thing would be highly impractical.

In practice, this is what unit tests do. They provide a quick, reusable set of regression checks to let you know clearly that your change has impacted stuff (or not). People have even attempted to automatically generate those, but that only tends to get the edge case sort of checks, not the meaty "does this work?" checks that humans know.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.