<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
	>
<channel>
	<title>Comments for Goanna Static Analysis by Red Lizard Software</title>
	<atom:link href="http://redlizards.com/blog/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://redlizards.com/blog</link>
	<description>The Blog of the Goanna Team</description>
	<pubDate>Mon, 06 Feb 2012 22:30:06 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on CamlP4 for unit testing by Paul</title>
		<link>http://redlizards.com/blog/uncategorized/camlp4-for-unit-testing/comment-page-1/#comment-14331</link>
		<dc:creator>Paul</dc:creator>
		<pubDate>Wed, 22 Dec 2010 04:58:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.redlizards.com/blog/?p=290#comment-14331</guid>
		<description>The macro registers a test in a hashtable.  The tests are, in fact, oUnit tests.  We build a testing application that runs all the oUnit tests in the table.  The infrastructure to run the tests is the most complicated bit here.

The macro itself isn't very long.  Still interested?</description>
		<content:encoded><![CDATA[<p>The macro registers a test in a hashtable.  The tests are, in fact, oUnit tests.  We build a testing application that runs all the oUnit tests in the table.  The infrastructure to run the tests is the most complicated bit here.</p>
<p>The macro itself isn&#8217;t very long.  Still interested?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CamlP4 for unit testing by Guillaume Yziquel</title>
		<link>http://redlizards.com/blog/uncategorized/camlp4-for-unit-testing/comment-page-1/#comment-14317</link>
		<dc:creator>Guillaume Yziquel</dc:creator>
		<pubDate>Tue, 21 Dec 2010 19:55:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.redlizards.com/blog/?p=290#comment-14317</guid>
		<description>Would you care to publish this syntax extension? Seems very useful, and more convenient to me than oUnit.</description>
		<content:encoded><![CDATA[<p>Would you care to publish this syntax extension? Seems very useful, and more convenient to me than oUnit.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Why Static Analysis is Not Another Episode of CSI by Andy</title>
		<link>http://redlizards.com/blog/uncategorized/why-static-analysis-is-not-another-episode-of-csi/comment-page-1/#comment-12283</link>
		<dc:creator>Andy</dc:creator>
		<pubDate>Wed, 10 Nov 2010 18:58:20 +0000</pubDate>
		<guid isPermaLink="false">http://redlizards.com/blog/?p=564#comment-12283</guid>
		<description>Many savvy organizations now have a criteria that high or critical bugs (static analysis or otherwise) must be fixed before the next continuous integration cycle/nightly build/etc.  By giving developers the chance to find, fix and verify static analysis bugs before check-in, they have the ability to root out problems before they affect the team.</description>
		<content:encoded><![CDATA[<p>Many savvy organizations now have a criteria that high or critical bugs (static analysis or otherwise) must be fixed before the next continuous integration cycle/nightly build/etc.  By giving developers the chance to find, fix and verify static analysis bugs before check-in, they have the ability to root out problems before they affect the team.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Unicode support by Paul</title>
		<link>http://redlizards.com/blog/uncategorized/unicode-support/comment-page-1/#comment-11608</link>
		<dc:creator>Paul</dc:creator>
		<pubDate>Tue, 26 Oct 2010 04:51:54 +0000</pubDate>
		<guid isPermaLink="false">http://redlizards.com/blog/?p=560#comment-11608</guid>
		<description>I've just confirmed that the latest build of Goanna Studio for VS2010 successfully analyzes a project on the Chinese-language version of Windows 7 x64.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve just confirmed that the latest build of Goanna Studio for VS2010 successfully analyzes a project on the Chinese-language version of Windows 7 x64.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Experiments with F# by Paul</title>
		<link>http://redlizards.com/blog/uncategorized/experiments-with-f/comment-page-1/#comment-9033</link>
		<dc:creator>Paul</dc:creator>
		<pubDate>Mon, 16 Aug 2010 02:19:33 +0000</pubDate>
		<guid isPermaLink="false">http://redlizards.com/blog/?p=501#comment-9033</guid>
		<description>Yes, that approach works.  Having to cast the list from the C# to the F# world is pretty clumsy, though.  The resulting code is about the same length.</description>
		<content:encoded><![CDATA[<p>Yes, that approach works.  Having to cast the list from the C# to the F# world is pretty clumsy, though.  The resulting code is about the same length.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Experiments with F# by Same Passer By</title>
		<link>http://redlizards.com/blog/uncategorized/experiments-with-f/comment-page-1/#comment-8985</link>
		<dc:creator>Same Passer By</dc:creator>
		<pubDate>Fri, 13 Aug 2010 15:40:22 +0000</pubDate>
		<guid isPermaLink="false">http://redlizards.com/blog/?p=501#comment-8985</guid>
		<description>And it ate my left and right angle brackets.  You need to specify the type for cast:

Seq.iter ignore (System.Linq.Enumerable.Cast&#60;YourType&#62;(enumerable))</description>
		<content:encoded><![CDATA[<p>And it ate my left and right angle brackets.  You need to specify the type for cast:</p>
<p>Seq.iter ignore (System.Linq.Enumerable.Cast&lt;YourType&gt;(enumerable))</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Experiments with F# by Same Passer By</title>
		<link>http://redlizards.com/blog/uncategorized/experiments-with-f/comment-page-1/#comment-8984</link>
		<dc:creator>Same Passer By</dc:creator>
		<pubDate>Fri, 13 Aug 2010 15:39:27 +0000</pubDate>
		<guid isPermaLink="false">http://redlizards.com/blog/?p=501#comment-8984</guid>
		<description>But "seq" is just the F# name for C# IEnumerable, right?  For instance, the following works:

Seq.iter ignore (new System.Collections.Generic.List())

Since you apparently have only an IEnumerable, you will have to use something like:

Seq.iter ignore (System.Linq.Enumerable.Cast(enumerable))

So not perfect, but that should still be better than manually using the enumerator!</description>
		<content:encoded><![CDATA[<p>But &#8220;seq&#8221; is just the F# name for C# IEnumerable, right?  For instance, the following works:</p>
<p>Seq.iter ignore (new System.Collections.Generic.List())</p>
<p>Since you apparently have only an IEnumerable, you will have to use something like:</p>
<p>Seq.iter ignore (System.Linq.Enumerable.Cast(enumerable))</p>
<p>So not perfect, but that should still be better than manually using the enumerator!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Experiments with F# by Paul</title>
		<link>http://redlizards.com/blog/uncategorized/experiments-with-f/comment-page-1/#comment-8926</link>
		<dc:creator>Paul</dc:creator>
		<pubDate>Wed, 11 Aug 2010 02:06:38 +0000</pubDate>
		<guid isPermaLink="false">http://redlizards.com/blog/?p=501#comment-8926</guid>
		<description>Seq.iter works on F# collections, not .Net collections; it comes from Microsoft.FSharp.Collections.Seq. The projsIter comes from an instance of EnvDTE.Projects, which implements IEnumerable.  Like I said ... maddening.

Certainly, if I were doing this sort of thing more than once, I'd create a function to confine the ugliness to one location.</description>
		<content:encoded><![CDATA[<p>Seq.iter works on F# collections, not .Net collections; it comes from Microsoft.FSharp.Collections.Seq. The projsIter comes from an instance of EnvDTE.Projects, which implements IEnumerable.  Like I said &#8230; maddening.</p>
<p>Certainly, if I were doing this sort of thing more than once, I&#8217;d create a function to confine the ugliness to one location.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Experiments with F# by Passer By</title>
		<link>http://redlizards.com/blog/uncategorized/experiments-with-f/comment-page-1/#comment-8900</link>
		<dc:creator>Passer By</dc:creator>
		<pubDate>Tue, 10 Aug 2010 16:18:10 +0000</pubDate>
		<guid isPermaLink="false">http://redlizards.com/blog/?p=501#comment-8900</guid>
		<description>Presumably you can wrap:

let expandedProjs = new System.Collections.Generic.List() in
while projsIter.MoveNext() do
expandedProjs.AddRange(ProjectUtil.expandProject(projsIter.Current :?&#62; EnvDTE.Project))
done;

in something prettier?  Or, given that projsIter came from some x that is Enumerable, you could probably use Seq.iter on x.  Then again, why bother making expandedProjs a .NET list in the first place, appending by side effect?  Just Seq.collect on x?

Maybe this doesn't fit in the code well though, just a thought.  Also, I rarely use "regular" .NET classes when writing F# code, so what I've written above might not work out of the box.</description>
		<content:encoded><![CDATA[<p>Presumably you can wrap:</p>
<p>let expandedProjs = new System.Collections.Generic.List() in<br />
while projsIter.MoveNext() do<br />
expandedProjs.AddRange(ProjectUtil.expandProject(projsIter.Current :?&gt; EnvDTE.Project))<br />
done;</p>
<p>in something prettier?  Or, given that projsIter came from some x that is Enumerable, you could probably use Seq.iter on x.  Then again, why bother making expandedProjs a .NET list in the first place, appending by side effect?  Just Seq.collect on x?</p>
<p>Maybe this doesn&#8217;t fit in the code well though, just a thought.  Also, I rarely use &#8220;regular&#8221; .NET classes when writing F# code, so what I&#8217;ve written above might not work out of the box.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Goanna 1.2 released by Ansgar</title>
		<link>http://redlizards.com/blog/development/goanna-12-released/comment-page-1/#comment-8410</link>
		<dc:creator>Ansgar</dc:creator>
		<pubDate>Sat, 20 Mar 2010 00:39:50 +0000</pubDate>
		<guid isPermaLink="false">http://redlizards.com/blog/?p=420#comment-8410</guid>
		<description>Most of the checks cover common ground such as uninitialised variables, null pointers, and common programming weaknesses. However, that doesn't mean that will give the same warning for the same piece of code, usually because they all use different techniques. There has been &lt;a href="http://www.sciencedirect.com/science?_ob=ArticleURL&#38;_udi=B75H1-4T0WSXB-2&#38;_user=10&#38;_coverDate=07%2F21%2F2008&#38;_rdoc=1&#38;_fmt=high&#38;_orig=search&#38;_sort=d&#38;_docanchor=&#38;view=c&#38;_searchStrId=1405361723&#38;_rerunOrigin=google&#38;_acct=C000050221&#38;_version=1&#38;_urlVersion=0&#38;_userid=10&#38;md5=1e1a4b044851a61f38f0b4da22fae682" rel="nofollow"&gt;published research&lt;/a&gt; that found that only a small fraction of all warnings of  any given tool gives are shared with all other tools. And that at least half of them are unique to that particular tool. So, it might be better to compare approaches. Our approach is to use model checking, which is essentially a graph search algorithm to explore all paths. That said, many tools try to specialise by providing particular classes of checks. A few of the classes we currently support are array bounds checks, c++ copy control and usage, and memory and pointer usage.</description>
		<content:encoded><![CDATA[<p>Most of the checks cover common ground such as uninitialised variables, null pointers, and common programming weaknesses. However, that doesn&#8217;t mean that will give the same warning for the same piece of code, usually because they all use different techniques. There has been <a href="http://www.sciencedirect.com/science?_ob=ArticleURL&amp;_udi=B75H1-4T0WSXB-2&amp;_user=10&amp;_coverDate=07%2F21%2F2008&amp;_rdoc=1&amp;_fmt=high&amp;_orig=search&amp;_sort=d&amp;_docanchor=&amp;view=c&amp;_searchStrId=1405361723&amp;_rerunOrigin=google&amp;_acct=C000050221&amp;_version=1&amp;_urlVersion=0&amp;_userid=10&amp;md5=1e1a4b044851a61f38f0b4da22fae682" rel="nofollow">published research</a> that found that only a small fraction of all warnings of  any given tool gives are shared with all other tools. And that at least half of them are unique to that particular tool. So, it might be better to compare approaches. Our approach is to use model checking, which is essentially a graph search algorithm to explore all paths. That said, many tools try to specialise by providing particular classes of checks. A few of the classes we currently support are array bounds checks, c++ copy control and usage, and memory and pointer usage.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

