Products, the Universe and Everything

The Riverblade Developer's Blog

Beth demonstrating Visual Lint at the ACCU Conference 2008  Anna taking part in a discussion panel at the European Software Conference 2007 

Welcome to our developer's blog. We hope that this forum provides an insight into us, our products and how we develop them. Please feel free to write to us if you have anything to add to any of the posts here.

Current Entries | Archives |

Our complementary copies of VS2005 have arrived!
Saturday, December 24, 2005

Earlier this week a little mouse told me (actually someone posted the news in the Lounge!) that Microsoft had started shipping the complementary copies of Visual Studio 2005 Professional and SQL Server 2005 Standard we received vouchers for at the launch event in London on 14th November.

It turns out they were right, and our copies arrived on Friday morning!

Visual Studio 2005 Professional and SQL Server 2005 Standard, all packaged up in a cute little presentation box...

As well as DVDs containing Visual Studio 2005 Professional, SQL Server 2005 Standard and the MSDN Library, the box also contained vouchers for a free copy of BizTalk Server 2006 Developer Edition (which is still in Beta at the moment) and an Exam voucher valid for a number of certification programmes and upgrades.

As we've been using Beta 1 and 2 for several months now there aren't any real surprises - we are more keen to see it to confirm whether some of the issues we've seen with Beta 2 have been fixed. So far, this is what we've found:

  • The nasty bug affecting calls to EnvDTE::Commands::AddNamedCommand with user-defined bitmaps seems to have been fixed. Although we managed to find a workaround for the bug (adding the command without an image, and setting the Picture and Mask properties of the CommandBarButton directly) with Beta 2 the bitmaps were displayed correctly on our toolbar but not shown on commands attached to the menubar. With VS2005 RTM, the commands appear in both locations, indicating that our conditional bodge was not required.

  • Repeated installation and uninstallation of add-ins no longer leaves empty toolbars floating around As we repeatedly install and uninstall add-ins we are testing we saw this a lot with Beta 2.

  • One oddity we didn't spot with Beta 2 which is still present in the RTM is that add-ins registered under HKLM\Software\Microsoft\VisualStudio\8.0\Addins key cannot have their startup load behaviour changed within the IDE. Whenever you change such a property, press OK to close the Add-in Manager and re-open it the previous setting is still selected.

    What seems to be happening is that the IDE is expecting the load behaviour of add-ins to be stored within HKEY_CURRENT_USER rather than HKEY_LOCAL_MACHINE. That makes sense, but it is an undocumented change in behaviour we will have to work around. We are likely to change the way our add-ins are registered as a result.

  • One highly annoying change in VS2005 is the way the Visual C++ automation model publishes details of the active include folder paths. Although this was broken in Beta 2, we assumed it was a bug - but it turns out to be a major change of behaviour - VS2005 does not even implement the properties required to access the VCPlatform interface which exposes these settings. Although we do now have a workaround (which we will be publishing in the forthcoming release of Visual Lint) it is not at all obvious and deserves a complete discussion in its own right.

  • We've noted some difficulties with the VS2005 project conversion wizard when add-ins were loaded - in particular a nasty error message which stopped the conversion completely. After several hours of investigation we were able to confirm that this was caused by an add-in reading the configuration of the IDE while the wizard was running - something it really didn't seem to like. Just to make it interesting the IDE does not provide any way to determine whether a project conversion is underway, incidentally, so the add-in code has got to be pretty savvy to know what it can and can't do at any given time.

  • Contrary to the published information regarding the product, the Class Designer does not work on Visual C++ projects. Why oh why do parts of Microsoft assume the whole world uses C# and VB.NET exclusively? Get real guys, please. Incidentally, if you want to add your voice to this, there's a topic running on it in the MSDN forums at

  • A number of random and unexpected crashes, usually when doing something innocuous. Grrr....
Of course, so far we've barely scratched the surface, so I expect we'll find much more yet...

Posted by Anna at 11:26 | Get Link


Visual Lint has been released
Monday, December 19, 2005

We are pleased to announce that Visual Lint is now available.

This is a maintenance release, and includes the following changes:

  • Added an "Order" column to the Analysis Results Displays so it can be sorted by the order messages are generated by PC-Lint. This assists in interpreting messages such as 830 ("Location cited in prior message") which relate to the preceeding message.

  • Corrected the icons in the Analysis Results Display.

  • Trailing backslashes are now stripped from the Intermediate File Folder configuration (which are used to locate tlh/.tli files), as their presence will cause PC-Lint to fail.

  • Lint messages which are not associated with a source file (e.g. Fatal Errors generated during the analysis process) are now parsed and displayed correctly.

  • Lint messages 200-399 are now correctly identified as Fatal Errors.

  • Analysis results for the file displayed in the active window are now automatically displayed when the solution finishes loading.

  • The Lint Analysis Results pane of the Output Window is now cleared when a file without analysis results is activated irrespective of whether the IDE is in Design or Run mode.

  • The URL of the online store in the registration page/dialog has been corrected.

  • Balloon tips are now only displayed if the host instance of Visual Studio is the foreground window.
You can download the new version on the Downloads page. As well as the MSI installer for the add-in, we have also provided a self extracting zip file which updates only the affected files. If you have a installation, all you should need to do is run it, giving it the Visual Lint installation folder (none of the changes should require re-registering the DLL, incidentally).


Posted by Anna at 06:43 | Get Link


Back-porting, the fun way
Sunday, December 18, 2005

The timing is nothing short of hilarious. Just a couple of days after MS pulled Visual Studio 6.0 from MSDN, I'm merrily having a go at back-porting Visual Lint (a complex project by any standards - it consists of 51,000 lines of code, has 3 custom tool windows, a custom output window pane, two thread pools and a lot of COM event handling) to see if it will run under Visual Studio 6.0 as well. I must be mad...

We decided to take a look at this a couple of months ago after a long look at the download stats for ResOrg - half of which are still for the Visual Studio 6.0 version (I talked about this a while ago in the blog entry Platforms, Platforms, Platforms. Although VS 6.0 is missing most of the UI we need, I'm pretty sure that can be circumvented to some extent - although whether it's enough to make a it useable under Visual Studio 6.0 is entirely another question. There's only one way to find out, of course...

For safety reasons this is all happening in a branch from the main project, so we've the added fun of keeping the branch up to date with changes from the main development trunk. Fortunately, that's not too onerous - just a bit of a pain.

To make it more interesting we've set ourselves a goal of making a single binary work on all of our target platforms (Visual Studio 6.0, 2002, 2003 and 2005) as the last thing we want to do is have to maintain two codebases. To achieve this, we've had to abstract our access to all of the Visual Studio automation interfaces we use (VS 6.0 and VS.NET have radically different interfaces). That's been quite a slog, believe me!

However, as of this morning that's all complete and the add-in's internal object model is now happily working with VS 6.0. It's actually a bit more than that - in actual fact all the major commands and functions are working (we've even got background lint analysis running) - but of course with no UI so you can't see the results yet.

The next stage is of course to integrate a basic UI. For sanity's sake we'll implement that via modeless dialogs first before we even consider attempting deeper integration with the IDE (we do have some leads to follow up, but that is likely to be a major effort).

One word of caution. A great deal of work needs to be done before we could even consider releasing this functionality publicly (a lot depends on what we discover as we work through the UI) so please don't start asking about release dates yet. If we do decide it is practical to release a version of Visual Lint which supports Visual Studio 6.0, you'll hear it here first (or on Gimpel's message board, of course!).

That's for another day though - first we're taking a break for a week or so. Happy Christmas!

Posted by Anna at 19:03 | Get Link