<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/" version="2.0">
    <channel>
        <title>Jonathon Rossi</title>
        <link>http://jonorossi.com/blog/Default.aspx</link>
        <description>Ramblings of a software developer</description>
        <language>en-AU</language>
        <copyright>Jonathon Rossi</copyright>
        <managingEditor>jono@jonorossi.com</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <image>
            <title>Jonathon Rossi</title>
            <url>http://jonorossi.com/blog/images/RSS2Image.gif</url>
            <link>http://jonorossi.com/blog/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/jonorossi" type="application/rss+xml" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">jonorossi</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
            <title>Compiling for .NET 2.0 with Csc 3.5 under NAnt</title>
            <category>.NET</category>
            <category>C#</category>
            <category>Castle Project</category>
            <link>http://jonorossi.com/blog/archive/2009/07/06/compiling-for-.net-2.0-with-csc-3.5-under-nant.aspx</link>
            <description>&lt;p&gt;The Castle Project dropped support for .NET 2.0 on the trunk last year, however as project leader of DynamicProxy I decided we would continue to support DynamicProxy on .NET 2.0 until downstream projects (e.g. NHibernate) no longer support it.&lt;/p&gt;
&lt;p&gt;Castle Core has had a reference to System.Core for quite some time, however it is conditionally compiled with support for .NET 2.0, Silverlight and Mono.&lt;/p&gt;
&lt;p&gt;Up until recently we had been making sure we didn't use any C# 3.0 features in DynamicProxy so we could still build for .NET 2.0 with the .NET 2.0 compiler, however this has always been a little annoying.&lt;/p&gt;
&lt;p&gt;I worked out that changing the frameworkdirectory attribute on the net-2.0 framework element in NAnt.exe.config will make NAnt use Csc 3.5. You just need to change 'v2.0.50727' to 'v3.5'.&lt;/p&gt;
&lt;p&gt;With this change we can now use the var keyword, lambda expressions, object initializers and anonymous types.&lt;/p&gt;&lt;img src="http://jonorossi.com/blog/aggbug/31.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=TbIpMcFLeRg:sCjOxvHvlxE:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?i=TbIpMcFLeRg:sCjOxvHvlxE:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=TbIpMcFLeRg:sCjOxvHvlxE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=TbIpMcFLeRg:sCjOxvHvlxE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?i=TbIpMcFLeRg:sCjOxvHvlxE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=TbIpMcFLeRg:sCjOxvHvlxE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?i=TbIpMcFLeRg:sCjOxvHvlxE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>Jonathon Rossi</dc:creator>
            <guid>http://jonorossi.com/blog/archive/2009/07/06/compiling-for-.net-2.0-with-csc-3.5-under-nant.aspx</guid>
            <pubDate>Mon, 06 Jul 2009 12:52:35 GMT</pubDate>
            <wfw:comment>http://jonorossi.com/blog/comments/31.aspx</wfw:comment>
            <comments>http://jonorossi.com/blog/archive/2009/07/06/compiling-for-.net-2.0-with-csc-3.5-under-nant.aspx#feedback</comments>
            <wfw:commentRss>http://jonorossi.com/blog/comments/commentRss/31.aspx</wfw:commentRss>
            <trackback:ping>http://jonorossi.com/blog/services/trackbacks/31.aspx</trackback:ping>
        </item>
        <item>
            <title>Castle NCover and NDepend NAnt targets</title>
            <category>Castle Project</category>
            <link>http://jonorossi.com/blog/archive/2009/06/08/castle-ncover-and-ndepend-nant-targets.aspx</link>
            <description>&lt;p&gt;I forgot to mention the new targets in the previous posts. If you want to generate either the NCover or NDepend reports like the ones available from TeamCity use these targets.&lt;/p&gt;
&lt;p&gt;If you run "nant coverage" it will enable running nunit-console under NCover to produce the coverage XML log files, and run a build. The target will also generate the summary coverage report.&lt;/p&gt;
&lt;p&gt;Using "nant ndepend" will run a build and generate the report from the artifacts.&lt;/p&gt;&lt;img src="http://jonorossi.com/blog/aggbug/30.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=u9iRK-NXaBs:yCu2mMZ4EzI:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?i=u9iRK-NXaBs:yCu2mMZ4EzI:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=u9iRK-NXaBs:yCu2mMZ4EzI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=u9iRK-NXaBs:yCu2mMZ4EzI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?i=u9iRK-NXaBs:yCu2mMZ4EzI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=u9iRK-NXaBs:yCu2mMZ4EzI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?i=u9iRK-NXaBs:yCu2mMZ4EzI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>Jonathon Rossi</dc:creator>
            <guid>http://jonorossi.com/blog/archive/2009/06/08/castle-ncover-and-ndepend-nant-targets.aspx</guid>
            <pubDate>Mon, 08 Jun 2009 11:01:44 GMT</pubDate>
            <wfw:comment>http://jonorossi.com/blog/comments/30.aspx</wfw:comment>
            <comments>http://jonorossi.com/blog/archive/2009/06/08/castle-ncover-and-ndepend-nant-targets.aspx#feedback</comments>
            <wfw:commentRss>http://jonorossi.com/blog/comments/commentRss/30.aspx</wfw:commentRss>
            <trackback:ping>http://jonorossi.com/blog/services/trackbacks/30.aspx</trackback:ping>
        </item>
        <item>
            <title>NDepend for the Castle Project</title>
            <category>Castle Project</category>
            <link>http://jonorossi.com/blog/archive/2009/06/08/ndepend-for-the-castle-project.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://jonorossi.com/blog/images/jonorossi_com/blog/WindowsLiveWriter/CodeCoverageforCastleProject_48A/ndepend_logo_2.png"&gt;&lt;img height="63" border="0" align="right" width="193" style="border: 0px none ;" alt="ndepend_logo" src="http://jonorossi.com/blog/images/jonorossi_com/blog/WindowsLiveWriter/CodeCoverageforCastleProject_48A/ndepend_logo_thumb.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;I'd like to start by thanking Patrick Smacchia from &lt;a href="http://www.ndepend.com/"&gt;NDepend&lt;/a&gt; for the free open source licence of NDepend Professional for use at the Castle Project.&lt;/p&gt;
&lt;p&gt;I have finally got around to changing the build scripts to have NDepend running in our build so we can generate the NDepend code analysis report.&lt;/p&gt;
&lt;p&gt;You can view the report in the artifacts of one of the &lt;a href="http://www.castleproject.org:8090/viewType.html?buildTypeId=bt9&amp;amp;tab=buildTypeStatusDiv"&gt;coverage/NDepend builds&lt;/a&gt;, or with this &lt;a href="http://www.castleproject.org:8090/repository/download/bt9/.lastSuccessful/NDepend/NDependReport.html"&gt;direct link&lt;/a&gt; to the last successful build.&lt;/p&gt;
&lt;p&gt;As you can see for yourself the report contains heaps of valuable information. I am yet to get a chance to blog about several things I have realised while playing with NDepend, which I plan to do in the next few weeks when I get some more time.&lt;/p&gt;
&lt;p&gt;For now, you can take a look at the report for yourself.&lt;/p&gt;&lt;img src="http://jonorossi.com/blog/aggbug/28.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=B9HZftoQVYI:mS9lqS0VkIA:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?i=B9HZftoQVYI:mS9lqS0VkIA:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=B9HZftoQVYI:mS9lqS0VkIA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=B9HZftoQVYI:mS9lqS0VkIA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?i=B9HZftoQVYI:mS9lqS0VkIA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=B9HZftoQVYI:mS9lqS0VkIA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?i=B9HZftoQVYI:mS9lqS0VkIA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>Jonathon Rossi</dc:creator>
            <guid>http://jonorossi.com/blog/archive/2009/06/08/ndepend-for-the-castle-project.aspx</guid>
            <pubDate>Sun, 07 Jun 2009 16:13:11 GMT</pubDate>
            <wfw:comment>http://jonorossi.com/blog/comments/28.aspx</wfw:comment>
            <comments>http://jonorossi.com/blog/archive/2009/06/08/ndepend-for-the-castle-project.aspx#feedback</comments>
            <wfw:commentRss>http://jonorossi.com/blog/comments/commentRss/28.aspx</wfw:commentRss>
            <trackback:ping>http://jonorossi.com/blog/services/trackbacks/28.aspx</trackback:ping>
        </item>
        <item>
            <title>Code Coverage for the Castle Project</title>
            <category>Castle Project</category>
            <link>http://jonorossi.com/blog/archive/2009/06/08/code-coverage-for-the-castle-project.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://jonorossi.com/blog/images/jonorossi_com/blog/WindowsLiveWriter/CodeCoveragefortheCastleProject_1F36/ncover_logo_2.png"&gt;&lt;img height="90" border="0" align="right" width="246" src="http://jonorossi.com/blog/images/jonorossi_com/blog/WindowsLiveWriter/CodeCoveragefortheCastleProject_1F36/ncover_logo_thumb.png" alt="ncover_logo" style="border: 0px none ;" /&gt;&lt;/a&gt; I'd like to start by thanking the guys from &lt;a href="http://www.ncover.com/"&gt;NCover&lt;/a&gt; for the free open source licence of NCover Complete for use at the Castle Project.&lt;/p&gt;
&lt;p&gt;I have finally got around to changing the build scripts to have NCover running in our build so we can generate code coverage reports.&lt;/p&gt;
&lt;p&gt;You can view the summary report in the artifacts of one of the &lt;a href="http://www.castleproject.org:8090/viewType.html?buildTypeId=bt9&amp;amp;tab=buildTypeStatusDiv"&gt;coverage builds&lt;/a&gt;, or with this direct link to the &lt;a href="http://www.castleproject.org:8090/repository/download/bt9/.lastSuccessful/coverage-reports/symbolmodule.html"&gt;symbol module report for the last successful build&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As you can see for yourself Castle's sequence point code coverage is currently at 61.2%. As for individual projects here are just a few:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;ActiveRecord: 65.6% &lt;/li&gt;
    &lt;li&gt;Core: 31.7% &lt;/li&gt;
    &lt;li&gt;DynamicProxy: 86.4% &lt;/li&gt;
    &lt;li&gt;MicroKernel: 67.3% &lt;/li&gt;
    &lt;li&gt;MonoRail Framework: 49.6% &lt;/li&gt;
    &lt;li&gt;Windsor: 79.5% &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Interestingly, Castle Core has the lowest code coverage of any project coming in at 31.7%, while it is at the base of all Castle projects, however it is very stable and solid.&lt;/p&gt;
&lt;p&gt;As expected, NVelocity has the highest maximum cyclomatic complexity by far because of several very long and complex methods.&lt;/p&gt;
&lt;p&gt;I am yet to set up the build to generate the full HTML coverage report which displays the source code with annotated coverage information.&lt;/p&gt;&lt;img src="http://jonorossi.com/blog/aggbug/29.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=DREHh7OZduY:N0ZfxL2tnxg:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?i=DREHh7OZduY:N0ZfxL2tnxg:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=DREHh7OZduY:N0ZfxL2tnxg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=DREHh7OZduY:N0ZfxL2tnxg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?i=DREHh7OZduY:N0ZfxL2tnxg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=DREHh7OZduY:N0ZfxL2tnxg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?i=DREHh7OZduY:N0ZfxL2tnxg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>Jonathon Rossi</dc:creator>
            <guid>http://jonorossi.com/blog/archive/2009/06/08/code-coverage-for-the-castle-project.aspx</guid>
            <pubDate>Sun, 07 Jun 2009 14:44:02 GMT</pubDate>
            <wfw:comment>http://jonorossi.com/blog/comments/29.aspx</wfw:comment>
            <comments>http://jonorossi.com/blog/archive/2009/06/08/code-coverage-for-the-castle-project.aspx#feedback</comments>
            <wfw:commentRss>http://jonorossi.com/blog/comments/commentRss/29.aspx</wfw:commentRss>
            <trackback:ping>http://jonorossi.com/blog/services/trackbacks/29.aspx</trackback:ping>
        </item>
        <item>
            <title>TeamCity Duplicates Finder Source Code Permissions</title>
            <category>TeamCity</category>
            <link>http://jonorossi.com/blog/archive/2009/05/16/teamcity-duplicates-finder-source-code-permissions.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://jonorossi.com/blog/images/jonorossi_com/blog/WindowsLiveWriter/TeamCity_FE06/TeamCity_ViewVCSFileContentPermission_2.png"&gt;&lt;img height="142" border="0" align="right" width="260" src="http://jonorossi.com/blog/images/jonorossi_com/blog/WindowsLiveWriter/TeamCity_FE06/TeamCity_ViewVCSFileContentPermission_thumb.png" alt="TeamCity's View VCS File Content Permission" style="border: 0px none ;" /&gt;&lt;/a&gt;I set up the .NET Duplicates Finder feature of TeamCity yesterday for Castle, and was later told that a guest (set up as the project viewer role) could not see the source code in the report. TeamCity was displaying "You do not have enough permissions to view this file content" instead of the source code.&lt;/p&gt;
&lt;p&gt;I remembered today that the roles in TeamCity were made configurable in 4.5 and adding the 'View VCS file content' permission to the project viewer role now allows everyone to see the source code in the report.&lt;/p&gt;
&lt;p&gt;This report provides some interesting results and is well worth setting up. One caveat is the requirement of a Visual Studio solution file which TeamCity uses to search for the source code.&lt;/p&gt;&lt;img src="http://jonorossi.com/blog/aggbug/27.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=VI6NTjSxhx8:uKGDbUDam_U:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?i=VI6NTjSxhx8:uKGDbUDam_U:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=VI6NTjSxhx8:uKGDbUDam_U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=VI6NTjSxhx8:uKGDbUDam_U:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?i=VI6NTjSxhx8:uKGDbUDam_U:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jonorossi?a=VI6NTjSxhx8:uKGDbUDam_U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jonorossi?i=VI6NTjSxhx8:uKGDbUDam_U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>Jonathon Rossi</dc:creator>
            <guid>http://jonorossi.com/blog/archive/2009/05/16/teamcity-duplicates-finder-source-code-permissions.aspx</guid>
            <pubDate>Fri, 15 May 2009 22:18:07 GMT</pubDate>
            <wfw:comment>http://jonorossi.com/blog/comments/27.aspx</wfw:comment>
            <comments>http://jonorossi.com/blog/archive/2009/05/16/teamcity-duplicates-finder-source-code-permissions.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://jonorossi.com/blog/comments/commentRss/27.aspx</wfw:commentRss>
            <trackback:ping>http://jonorossi.com/blog/services/trackbacks/27.aspx</trackback:ping>
        </item>
    </channel>
</rss>
