<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mike Conley&#039;s Blog &#187; static analysis</title>
	<atom:link href="http://mikeconley.ca/blog/tag/static-analysis/feed/" rel="self" type="application/rss+xml" />
	<link>http://mikeconley.ca/blog</link>
	<description>The personal blog of a Toronto based software developer, musician, sound designer, and theatre enthusiast.</description>
	<lastBuildDate>Tue, 10 Jan 2012 13:58:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>The Achilles&#8217; Heel of Light-Weight Code Review</title>
		<link>http://mikeconley.ca/blog/2009/10/08/the-achilles-heel-of-light-weight-code-review/</link>
		<comments>http://mikeconley.ca/blog/2009/10/08/the-achilles-heel-of-light-weight-code-review/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 18:29:19 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Code Reviews]]></category>
		<category><![CDATA[code review]]></category>
		<category><![CDATA[context]]></category>
		<category><![CDATA[light-weight]]></category>
		<category><![CDATA[pcr]]></category>
		<category><![CDATA[peer review]]></category>
		<category><![CDATA[reviewboard]]></category>
		<category><![CDATA[static analysis]]></category>

		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=835</guid>
		<description><![CDATA[So I had my weekly meeting with my supervisor, and fellow students Zuzel and Jon Pipitone.  Something interesting popped up, and I thought I&#8217;d share it. If it wasn&#8217;t already clear, I dig code review.  I think it really helps get a team of developers more in tune with what&#8217;s going on in their repository, [...]]]></description>
			<content:encoded><![CDATA[<p>So I had my weekly meeting with <a href="http://www.third-bit.com">my supervisor</a>, and fellow students <a href="http://zuzelvp47uoft.wordpress.com/">Zuzel</a> and <a href="http://skoolr.blogspot.com/">Jon Pipitone</a>.  Something interesting popped up, and I thought I&#8217;d share it.</p>
<p>If it wasn&#8217;t already clear, <a href="http://mikeconley.ca/blog/2009/10/06/research-question-idea-3/">I dig code review</a>.  I think it really helps get a team of developers more in tune with what&#8217;s going on in their repository, and is an easy way to weed out mistakes and bad design in small chunks of code.</p>
<p>But there&#8217;s a fly in the soup.</p>
<p>This semester, <a href="http://www.markusproject.org">the MarkUs project</a> has been using <a href="http://www.review-board.org/">ReviewBoard</a> to review <em>all </em>commits to the repository.  We&#8217;ve caught quite a few things, and we&#8217;ve been learning a lot.</p>
<p>Now for that fly:</p>
<p>A developer recently found a typo in our code base.  An I18n variable was misspelled in one of our Views as I18n.t(:no_students_wihtou_a_group_message).  One of our developers saw this, fixed the typo, and submitted the diff for review.</p>
<p>I was one of the reviewers.  And I gave it the green light.  It made sense &#8211; I18n.t(:no_students_wihtou_a_group_message) is clearly wrong, and I18n.t(:no_students_without_a_group_message) is clearly what was meant here.</p>
<p>So the review got the &#8220;Ship It&#8221;, and the code was committed.  What we didn&#8217;t catch, however, was that the locale string was actually named &#8220;no_student_without_a_group_message&#8221; in the translation file, not &#8220;no_students_without_a_group_message&#8221;.  <em>So the fix didn&#8217;t work.</em></p>
<p>This is important:  the diff looked good, but the bug remained because we didn&#8217;t have more information on the context of the bug.  We had no information about I18n.t(:no_students_without_a_group_message) besides the fact that I18n.t(:no_students_wihtou_a_group_message) looked wrong.</p>
<p>Which brings me back to the conversation we had yesterday:  while it seems plausible that code review helps catch defects in small code blocks, does the global defect count on the application actually decrease?  Since ReviewBoard doesn&#8217;t have any static analysis tools to <em>check</em> what our diffs are doing, isn&#8217;t it plausible that while our diffs look good, we&#8217;re not preventing ourselves from adding new bugs into the code base?</p>
<p>So, the question is:  does light-weight code review actually decrease the defect count across an application <em>as a whole</em>?</p>
<p>If not, can we augment these code review tools so that they&#8217;re more sensitive to the <em>context </em>of the diffs that are being reviewed?</p>
]]></content:encoded>
			<wfw:commentRss>http://mikeconley.ca/blog/2009/10/08/the-achilles-heel-of-light-weight-code-review/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

