By bjrady
via benrady.typepad.com
Published: Mar 05 2008 / 09:14
A recent discussion at SD West, revolving around Agile certification and the need for "Agility" metrics, ended up with me standing on a chair and ranting at the entire audience...



Comments
reido56 replied ago:
"although it's very useful to know that I've introduced a bug 20 minutes after creating it, what I really want is to know the very second that I type the offending line in my editor" -- how fascinating that the very expressiveness ("change whatever you want, whenever"!) of languages commonly labeled as "agile" pretty much precludes the technological possibility of static code analysis.
planetmcd replied ago:
I suppose it's fascinating if the only errors you make are as a result of a type mismatch or malformed method calls. Sometimes programmers make mistakes in logic, not type, also, perhaps the code doesn't integrate with code others have changed and committed. Static typing does nothing to prevent these. Not that static typing is bad. But its advantage is generally its compilability and thus performance, with the minor benefit that an IDE will have an easier time checking for type mismatch errors or bad method calls.
The author's point is that CI is not an end in itself, but is merely the best way we have to quickly get feedback on errors introduced to a code base based on conflicting code or logic errors, statically typed or not.
reido56 replied ago:
I said nothing about typing nor about the article's main point. I'm fully aware that continuous integration aids in catching errors other than type (in fact, where I work we use continuous integration for a statically typed language).
My comment only pertained to the wish expressed in what I quoted ("catch errors as I type them"). This goal is almost by definition impossible for a language whose execution can't be determined by just examining source (this examination is "static code analysis" because the code is analyzed without running it). In other words, a proponent of agile who wants something "agile" languages can't allow. That's the fascinating/amusing part.
bjrady replied ago:
Catching errors as you type them is completely possible. I do it all the time with Infinitest (infinitest.org). It just doesn't find integration errors, and CI is a workaround for that.
reido56 replied ago:
Automatically running unit tests? Great idea. It's still not static code analysis. Surely everyone realizes that any code that's using "eval()", for instance, simply can't be error-checked before execution? (Unit tests are testing via code execution of a unit.)
Voters For This Link (12)
Voters Against This Link (6)