Thursday 17 February 2011

Rapid-Dev - Release Update

A new version of Rapid-Dev is available for download. the exact details can be found here, however to summarize there are 2 main changes:

  1. Added support for MSTest 2010 testing framework.
  2. Improved our tracking to include more user action on the source code.

Also we dealt with the limitation of working on a single IDE at a given time, and now it supports working simultaneously with several open IDE’s (just not the same solution).

Like always we are seeking to get feedback on how to improve Rapid-Dev including any trouble you encounter, things you would like to see next and any other idea/thought you might have. so feel free to leave a comment here or at the product blog or just drop me a mail.

Tuesday 8 February 2011

Exporting Code Metrics VS 2010

At last Microsoft released a Power-Tool to enable generating Visual Studio 2010 code metrics analysis using a command line.

the tool can be downloaded from here:

Visual Studio Code Metrics PowerTool 10.0

The output is stored into an XML file which is than can be processed to generate a nice visible report.

Next steps would be to create an xsl that can be used by various build servers (like cc.net).

and integrate this into the crap4Net tool so it can process that format.

This is going to be be useful.

Sunday 6 February 2011

Recent adventures with C++

Its been sometime since I've seriously worked with native interop and I can say I don’t really miss some of the joys in doing so. Here’s a problem that took us a better part of the day to figure out

Windows std::string are not backward compatible between 2010 and 2005.

It all started when i got asked to help debug a really weird issue involving some interop code from .net to c++. The problem manifested as memory violation crash in a simple call to a method accepting an std::string.

First we suspected that we didn't marshal the .net string to an std::string properly but after some digging and other attempt we discovered that was not it.

So we started to trim and trim down the code trying to achieve the minimal example that will recreate the crash. and while doing so we noticed that it doesn’t behave consistently.

The funkiest point was when we found out that when using short strings (under 16 bytes) everything seemed to work fine, but when the string got bigger than that it started to crash again.

To cut a short story short after a day (and some) we located the problem to be an inconsistent implementation of std::string class in a way that caused software that is compiled under 2010 in Release mode (only) not to work against dll compiled in VS 2005.

Working in debug or using the same development environment didn’t result in such a crash.

As i said Joy.

P.S.

the 16 byte seem to be some inner optimization that std does in order to work faster with short strings.

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Walgreens Printable Coupons