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 | | |


Visual Lint 2.5.0.127 has been released
Saturday, February 06, 2010

This is the first public Visual Lint 2.5 build, so there is a somewhat longer changelist than usual:

General
  • Added support for Visual Studio 2010. Note that as a result of some rather nasty regressions in the Visual Studio 2010 automation interfaces (even at Beta 2) this support is not yet complete and further changes are expected to be required once the Visual Studio 2010 RTM build is available.

  • Revised the add-in startup/connection sequence and add-in menubar configuration mechanism for compatibility with Visual Studio 2010 (these changes should be transparent to the user).

  • Removed support for Visual Lint Free Edition. Available product editions in Visual Lint 2.5 are Standard, Professional and Enterprise Editions.

  • Issue category export files generated by Visual Lint are now formatted in a human readable form [Visual Lint Professional and Enterprise Editions].

  • Project specific analysis configuration (.vloptions) files are now formatted in a human readable form [Visual Lint Enterprise Edition].

  • For diagnostic purposes, the contents of the "Visual Lint Status"pane in the Output Window are now logged to the folder CSIDL_COMMON_APPDATA\Riverblade\Visual Lint. Logfiles are automatically deleted after 30 days.


User Interface
  • When licence key data is pasted into the first (registered user) edit control in the Registration Key Dialog, it is now parsed to determine if the data extends over multiple lines. If so, the second non-empty line of text is automatically entered into the licence key control.

  • Added a "Host IDE/toolchain" drop list to the "PC-lint" options page. Although this is always disabled when hosted in most environments, it will soon be required to support multi-targetting in Visual Studio 2010, as well as for some non-Visual Studio environments.

  • Added a "View History" button to the Analysis Status Display. Minor improvements to the corresponding "View Analysis History" context menu command.

  • Added a "Do not ask me again" option to product edition prompts in registered installations and to the Manual Analysis save prompt.

  • The elapsed time indicator on the Manual Analysis Dialog is now hidden until the first update.

  • The confirmation text shown after a key is entered now shows the actual name of the host, not just "Visual Studio".

  • Removed the old "one click activate" display option in the Analysis Status Display.

  • Corrected the file filters used for the File Open dialogs in the Advanced Solution Configuration dialog.

  • A Visual Lint icon is now displayed in the Visual Studio splash screen [Visual Studio 2002/2003/2005/2008 only].

  • Corrected "PC-Lint" to "PC-lint" throughout.

  • Renamed the "Visual C++" options page to "PC-lint" for clarity.


Analysis
  • Added support for "Post Analysis" Events to the Advanced Solution Configuration dialog. When enabled, the specified application will be run when the analysis of a solution completes. This setting is defined on a per solution basis and persisted to the corresponding .vloptions file stored in the solution folder.

  • When a Visual C++ project file is parsed, the default settings for for-loop compliance (false for VS2002/2003; true for VS2005 and later) and C++ exceptions (always true) are now set correctly.

  • For loop compliance settings are now read from project files and written to the corresponding project indirect files directly where possible. As a result, the "for loop compliance" option on the "Command Line" page is now used only when Visual Lint has been configured to allow PC-lint to write project indirect files.

  • Added limited support for the $(TargetDir) variable within project configurations by aliasing it to $(OutDir) [VS2002-VS2008].

  • Minor corrections to the analysis results parser.

  • The scheduler no longer attempts to populate the analysis queue if an analysis tool has not yet been defined.

  • Analysis tasks (and in particular IncrediBuild analysis tasks, which often deal with high volumes of data) now respond to shutdown requests faster.

  • The IncrediBuild post-task analysis results processing timeout can now be configured via a registry entry (HKCU\Software\Riverblade\Visual Lint\Settings\Analysis\IncrediBuild).

  • Added "tuning" options relating to analysis (both IncrediBuild and local) to the "Diagnostic" options page.


Installer
  • Corrected a bug in the code used in the installer to detect whether a trial licence is available.

  • Revised copyright dates in the installer etc. to "2004-2010".

  • Added Visual Studio 2010 Beta 2 to the list of supported IDEs in the readme file packaged within the installer.

  • Added Windows 7 to the list of supported operating systems in the installer Readme text and Getting Stated Guide.

  • Various minor updates to the Getting Started Guide.

  • The Visual Lint installer now adds a shortcut to the Getting Started Guide to the Start Menu.

  • When an expired trial installation is uninstalled, an uninstallation feedback page is now displayed.

  • Trial started/ended and Uninstall feedback request pages are now opened with a query string giving details of the product/OS version etc.

  • Corrected a bug in the remove commands sequence during uninstallation.


Reports
  • Minor revisions to the stylesheets used to generate HTML reports.

  • Changes to the method used to generate file and project reports during Incredibuild analysis, for efficiency.

  • Added the name of the licenced user to the footer of generated reports.


Bug Fixes
  • Corrected a crash which could occur on IDE shutdown if reports had been generated during a session. The crash was caused by a COM threading model related bug in a third party component (TeeChart.ocx) [Visual Lint Enterprise Edition].

  • Fixed a potential crash when a project is unloaded.

  • When a project is added to or removed from the workspace in Visual C++ 6.0 or eMbedded Visual C++ 4.0, the displays and analysis queue are now updated correctly when the workspace file is saved.

  • If a single project is loaded without a solution under Visual Studio .NET 2002 or later, the active project configuration will now be loaded correctly.

  • The "Projects" droplist in the Analysis Status Display now correctly updates the icon of a project when its"Enable Background Analysis" property is toggled.

  • The Analysis Status Display is now correctly populated by the solution load task if an analysis tool has not yet been defined.

  • Analysis Status Display context menu commands which are not functional while a project is loading are now disabled if such a project is selected.

  • Corrected the visual display of the droplists in the Analysis Results and Analysis History displays (the text '--- All projects ---' was previously being cut into mid-way by the current analysis status of the project).

  • Visual Lint now uses a single COM container interface to support all IDEs. In consequence, when registered from the "Customize" dialog in Visual C++ 6.0 or eMbedded Visual C++ 4.0, the other COM interfaces within the add-in will no longer be listed in the dialog as possible add-ins (this is a workaround for a bug in legacy versions of Visual Studio) [VC6/eVC4].

  • The "Use IncrediBuild" command handler no longer unnecessarily checks whether xgconsole (the IncrediBuild XGE interfaces console interface) is available when switching to local analysis tasks.

  • Corrected a bug which affected the analysis of projects with names containing illegal filesystem characters.

  • Corrected a bug in the handling of user macros within Visual Studio property sheet (.vsprops) files [VS2002-VS2008].

  • Corrected a bug in the handling of solution files located by UNC paths.

  • Corrected a bug in the VS2010 integration which was preventing the Visual Lint toolbar from being displayed by default the first time the IDE is loaded after installation [VS2010].

  • Corrected a bug affecting the "one .vloptions file per project" option in the Advanced Solution Configuration Dialog [Visual Lint Enterprise Edition].

Posted by Anna at 09:45 | Get Link

 

Visual Lint 2.0.10.124 has been released
Tuesday, January 19, 2010

The following changes are included:
  • Corrected a bug in the project file reader which caused Visual Studio inherited property sheet (.vsprops) files referenced via relative paths of the form "\foldername\filename.ext" to be located incorrectly.

  • Added support for the new "ShowSourceInOutput" attribute introduced in IncrediBuild 3.50 in the XGE XML interfaces used by Visual Lint to perform grid analysis tasks.

    As the introduction of this new attribute is a breaking change (omitting it results in changed behaviour which prevents Visual Lint from cross referencing analysis results for individual tasks back to the initiating objects), this change is required if grid analysis is to be run with IncrediBuild 3.50 onwards.

  • Corrected a bug in the IncrediBuild interfacing task which could cause no threads to be allocated for analysis results processing on single core machines.

  • Updated the PC-lint 9 message database to include changes (messages 83 and 457) and new messages (1084-1085, 1096-1111 and 1574) included in the updated msg.txt file for PC-lint 9.00d.
Note that this is likely to be the final Visual Lint 2.0 build as a Visual Lint 2.5 release candidate is currently being tested. As Visual Lint 2.5 will accept Visual Lint 2.0 licences directly existing v2.0 licences can be used without modification.

Posted by Anna at 16:48 | Get Link

 

Breaking change in IncrediBuild 3.50 RC
Monday, January 04, 2010

Just after Christmas we discovered a breaking change in IncrediBuild 3.50 RC (released on 24th December) which affects the Visual Lint/IncrediBuild integration. As this behaviour was not present in the 3.50 beta, we unfortunately weren't aware of it until a customer stumbled on it during the holiday.

Fortunately the original (pre 3.50) behaviour can be reinstated by adding the attribute "ShowSourceInOutput" to the generated XML configuration file used to instruct xgconsole (the IncrediBuild console grid engine) to initiate the analysis. Visual Lint has now been modified to add this attribute when running with IncrediBuild 3.50 or later, so if you are affected by this issue (which manifests as an "IncrediBuild analysis failed" task dialog shown after the analysis completes) you can download an updated build from:

http://www.riverblade.co.uk/products/visual_lint/downloads/VisualLintAddinSetup.exe

[Update: Replaced link with one to the latest formal build which incorporates this change]

Posted by Anna at 15:21 | Get Link

 

All Quiet on the ResOrg Front? Not Exactly...
Thursday, December 17, 2009

When I first released ResOrg 1.2 to CodeProject back in 2001, I had no idea how useful (or otherwise) other developers would find it. All I knew was that for me it helped with a real pain point. Quite frankly, I was thoroughly sick of converting resource.h files to spreadsheets and back just to identify conflicts and renumber resource IDs.

The ResOrg 1.x application

The standalone ResOrg application then grew to include a Visual C++ 6.0 add-in and then to support a rudimentary form of multi-file analysis. When Visual Studio .NET 2002 was released, Nick Hodapp (then the Visual C++ Product Manager) contacted a number of other add-in authors and I and offered us all free copies of the new version in exchange for us porting our code to the new version. ResOrg.NET (as it was termed was basically the same as ResOrg, but added a simple toolwindow which allowed you to view and edit the properties of a single resource symbol file:

The ResOrg.NET 1.x toolwindow. With hindsight, this was rather limited in scope - the new Symbol Files Display (keep reading...) is far more capable.

As the automation model of VS2002 was very different (and far more complex) than that of VC6 that port was a little painful, to say the least; ResOrg ended up with two builds and two installers - one for VC6, and one for VS2002 onwards. Although the VC6 version hasn't been updated in ages (v1.6.1 was released in December 2004) various breaking changes in subsequent Visual Studio versions meant minor updates to ResOrg.NET have continued sporadically ever since.

For example, when Visual Studio 2005 was released, it proved to be completely allergic to the MFC ActiveX control used to implement the ResOrg.NET toolwindow, and I was forced to convert it to an ATL only implementation in v1.6.2.2. That then caused yet more issues when Visual Studio 2008 was released, as it proved to be incompatible with ATL windowing code built with versions of Visual Studio prior to Visual Studio 2005*. As the ResOrg.NET code was by then built with Visual Studio .NET 2003, the logical thing to do was port the code to Visual Studio 2008.

* When Visual Studio 2008 came out it was released as a process with Data Execution Prevention (DEP) enabled. In consequence, any add-ins for VS2008 which use ATL for user interface code (which ResOrg 1.x does for its toolwindow) and which were built with ATL 7.1 or earlier will not run in VS2008 since these versions of ATL use a technique for message thunking which triggers DEP and shuts down the process. Although this was corrected in ATL 8, it does mean that add-ins for VS2008 onwards must be built with later versions of Visual Studio (this same issue caused us to shift the builds for Visual Lint from VS2003 to VS2008).

It was at that point that things went quite horribly wrong. ResOrg 1.x is an MFC based codebase, and unfortunately the versions of MFC shipped since Visual Studio 2005 come with extra baggage (specifically SXS activation runtime checks*) not present in previous versions. Murphy's Law being what it is, although the app itself worked OK the new code would crash randomly in the add-in, and we were unable to identify a workaround. As a result the port failed and the build was reverted to VS2003 - but obviously without VS2008 support.

* Look up STATUS_SXS_EARLY_DEACTIVATION and STATUS_SXS_INVALID_DEACTIVATION for details. It's a very poorly documented area, unfortunately.

Although we have since released some minor fixes there it has largely lain since. Almost.

When we discovered the SXS issue and realised that we had hit a brick wall it became obvious that a radical rethink was in order. Several months earlier we had started the process of reimplementing the whole product in ATL/WTL (which Visual Lint uses, so we know it works well with VS2008), and although that process was making steady progress the amount to time we were able to give to it until then had been quite limited. By the time we discovered the SXS issue the core functionality was in place but the new version (by now designated ResOrg 2.0) didn't yet have a usable user interface.

That in itself proved to be a major undertaking, and as we are having to fit in work on it around Visual Lint development (itself quite intensive at the moment as we've a major release for that scheduled for January) it tends to be a bit of a side project. However, it is now sufficiently advanced that it is now about time we started talking about what we've been up to. All being well, we aim to be able to release a public build by the time VS2010 is released in March. We're not at beta yet, but not a huge distance from it.

The first ResOrg 2.0 release will offer an equivalent level of functionality to 1.6, but we are taking the opportunity to refresh the displays a little. The ResOrg 2.0 add-in will include two toolwindows - one a Symbols Display comparable to the previous version (although it is now a docking window rather than a popup frame), and the second a higher level "Symbol Files" display which shows the status of all projects/symbol files at all times. This display is effectively a more usable superset of the ResOrg.NET toolwindow in 1.x, and although it is currently still being developed, the screenshot below should give you a flavour of how it will look:

The ResOrg 2.0 add-in, running within Visual Studio 2008

ResOrg 2.0 also includes the standalone application as previously. At the moment it looks rather like its predecessor, but the intention is to replace the "Workspace" docking view with the contents of the "Symbol Files" toolwindow shown above when it is completed:

The ResOrg 2.0 application as it currently stands. The workspace view on the left will soon be replaced by a docked 'Symbol Files' Display equivalent to that in the add-in.

The ResOrg 2.0 app is itself largely complete (the only major bits missing are multi-file conflict checking and a rework of the "projects" display to match the new "Symbol Files" toolwindow in the add-in), and the add-in itself is about half way done. Support for the new Visual C++ .vcxproj project file format (a major change in itself - .vcxproj files look nothing like their predecessors) is already in place, courtesy of Visual Lint.

The plan is to have at least a beta of it by the time Visual Studio 2010 is formally launched in March. We hope that the new version will meet the expectations of existing users of ResOrg 2.0. We're working quite hard to make sure we don't lose any functionality in moving the code from MFC to WTL, and we are hopeful that the end result will be well worth waiting for.

Posted by Anna at 12:28 | Get Link

 

So what's happening with Visual Studio 2010 support, then?
Tuesday, December 15, 2009

Last night we had an enquiry asking whether Visual Lint supports Visual Studio 2010 Beta 2 (a very good question). As we last blogged about this subject back in June (see Visual Studio 2010 Support for Visual Lint and LintProject Professional) and a lot has happened since then I thought it was about time for an update.

The short version is that "They changed too much,* and it doesn't really work very well yet, but we will have something out early next year regardless".

* At least as far as the internal interfaces go - the bugs we tend to find in a new version of Visual Studio are not generally the ones you will encounter if you actually use it to compile code.

The long version is, well, quite long - so please bear with me while I elaborate.

First of all, if you are interested in the sort of issues we face when a new version of Visual Studio is approaching release you could do far worse than to take a look at Carlos Quintero's blog. Carlos is the author of MZ-Tools, and one of the most prolific add-in authors out there when it comes to identifying, reporting (and blogging about) issues in the automation interfaces for new versions of the IDE.

Some time ago I realised that Visual Studio releases broadly come in two flavours - the ones where Microsoft try to change everything (e.g. Visual C++ 5.0, Visual Studio .NET 2002 and Visual Studio 2005) and those where they consolidate the changes in the previous release (e.g Visual C++ 6.0, Visual Studio .NET 2003 and Visual Studio 2008). Visual Studio 2010 - which sports not only a new and vastly more complex C++ project file format (.vcxproj) but also a new intellisense engine and WPF based editing environment - was always destined to be in the former camp.

In short, we were expecting this release to be a bit of a pain from an integrator's perspective, and - although we'd love to have been proved wrong here - we've unfortunately been dead right on that. When Beta 1 landed, it was effectively unusable from an add-in perspective (even Visual Studio 2005 Beta 1 didn't quite manage that feat) and although we were able to do some groundwork towards supporting the new IDE, it wasn't something we were happy to release, even to our beta testers.

Furthermore, because of the volume of changes that were obviously going to be needed to support Visual Studio 2010 we had to take the decision to only implement VS2010 support in our development branch (i.e. in Visual Lint 2.5) and as a result Visual Lint 2.0 does not (and will not) support it (that's the bad news; the good news comes at the end).

What's interesting is that the previous CTPs (none of which had the new editor) worked fine with our development versions, so I'm pretty convinced that the breaks we saw in Beta 2 were entirely down to the new editor implementation. We filed our bug reports, crossed our fingers and hoped Beta 2 would resolve these issues.

For some of them it did - and we now have internal builds of Visual Lint which basically work in VS2010:

Visual Lint 2.5 running in VS2010 Beta 2

The one glaring problem remaining is menu/toolbar interfacing (one of the areas badly affected by the new editor) which is still thoroughly broken in Beta 2. Although we've been experimenting with moving the menu/toolbar interfacing for this IDE from the add-in to an associated VSPackage (the deepest and most complex level of integration available in Visual Studio) that's still not entirely satisfactory - but we are making progress so we may end up going that way anyway, despite the additional complexity it introduces.

The good news bit: Although our beta testers already have builds of Visual Lint 2.5 with VS2010 support, since we are planning to release Visual Lint 2.5 early next year the Visual Studio 2010 integration will become publicly available then. Visual Lint 2.0 will be a free update to existing Visual Lint 2.0 customers as it will accept existing v2.0 licence keys directly.

So, we will certainly have something out well in advance of the Visual Studio 2010 launch in March. How complete the Visual Lint (and ResOrg, but more of that later) integration for Visual Studio 2010 is depends on what Microsoft are able to deliver post-Beta 2, of course.

Posted by Anna at 10:37 | Get Link

 

ResOrg.NET 1.6.4.4 has been released
Monday, December 14, 2009

The changes in this build include:
  • Added support for Unicode resource (.rc) files.

  • Corrected the line ending for files renumbered via the ResOrg.NET Explorer toolwindow.

  • The Symbols Display now responds to the mouse wheel. Our thanks to Hans Dietrich for submitting this change.

  • Fixed symbols may now be entered with either upper or lower case. Our thanks to Hans Dietrich for submitting this change.

  • Corrected a layout bug in the about box and removed the photo.

Posted by Anna at 14:25 | Get Link

 

Visual Lint 2.0.9.121 has been released
Friday, December 04, 2009

The following changes are included in this build:
  • Corrected a bug in the parsing of quoted preprocessor symbols within project files.

  • XBox 360 project configurations are now interpreted correctly [VS2002/VS2003/VS2005/VS2008].

  • "Excluded from Build" properties in VC6/eVC4 project files are now read correctly.

  • Corrected a potential crash in the Analysis Status Display. The crash manifested on some installations when a solution was loaded.

  • Visual Studio environment variables in the IntermediateFilesFolder property of a project configuration being analysed will now be expanded correctly.

  • Revised the layout of the Configuration Wizard "Select Files" page to make it more obvious that the filename controls apply to both "Create a new configuration file" and "Use an existing configuration file" options.

  • Updated the version of TeeChart8.ocx packaged within the installer to 8.0.0.6.

  • Corrected a grammatical error in the "Visual Lint Prerequisites" page within the installer.

  • The "Copy -> Issue Item Text Only" command on the Analysis Results Display context menu is now correctly disabled when no issues are selected.

Posted by Anna at 11:00 | Get Link

 

LintProject Professional 2.0.5.13 has been released
Tuesday, December 01, 2009

The following changes are included in this build:
  • Added a /include switch to the command line. When used, it will analyse only those files matching the specified wildcard.

  • Files which are "excluded from build" in the current configuration will no longer be analysed (to override this behaviour, use "/include=*" on the command line) [VC6/eVC4/VS2002/VS2003/VS2005/VS2008/VS2010].

  • XBox 360 project configurations are now interpreted correctly [VS2002/VS2003/VS2005/VS2008].

  • Visual Studio environment variables in the IntermediateFilesFolder property of a project configuration being analysed will now be expanded correctly.

  • Fixed a bug in the reading of include folders for Borland C++ Builder 5.0/6.0.

  • Fixed a bug in the calculation of the total issue count in a solution.

  • If a configuration is not specified on the command line, the first one found will now be assumed.

  • Added .cc and .cxx to the list of C/C++ implementation file extensions recognised by LintProject Professional.

  • Corrected a minor bug in the handling of project file paths.

  • Updated the version of TeeChart8.ocx packaged within the installer to 8.0.0.6.

Posted by Anna at 11:03 | Get Link

 

StackOverflow DevDays 2009 London
Thursday, October 29, 2009

DevDays is a new conference, and one which promises to be one to watch.

When we arrived the doors hadn't yet opened and there was a crowd of people milling around outside waiting. Although there was no one there we recognised that changed fairly quickly after the doors opened, and by the time the first session started there was a small contingent of ACCU folks milling around. At this point plans for "which pub should we go to afterwards" were of course hatched, but more of that later.

The day started with a humourous video centred around the recording of a StackOverflow podcast by Joel Spolsky and Jeff Atwood which portrayed Joel as the nasty guy, bossing his team around and generally acting as a PHB.* He doesn't act it well, but it was quite funny.

* If you don't get the reference, you really need to read Dilbert.

I particularly liked the scenes of Jeff Atwood looking increasingly bored while waiting for Joel to come back online (he'd wandered off to yell at his staff and force them to run laps around the building...). Cue various cuts to Atwood filing his nails, grooming cats, indulging in onscreen doodling etc.

Once the intro movie was over, the main man took the stage for the keynote, replete with paper Union Flag baseball cap and mug.


Keynote - Joel Spolsky (Fog Creek)

Joel takes the stage at DevDays 2009 London


Joel's keynote focused on the tricky balance between simplicity and power in software applications. As that is something which is particularly relevant to ISVs such as ourselves (who by definition do not have access to the huge resources of the large corporates) I was interested to hear what he had to say on this subject

He started with a foray into the indesirability of modal user interfaces. As Joel put it: "Your computer is just a source of stupid idiotic decisions you don't want to have to make...". It's all too easy for the developer to absolve responsibility for a dificult decision by devolving it to the user (who wants the application to just take care of it and not bug him with stupid questions).

The problem is of course that as software applications evolve, features are added - which implies complexity and difficult decisions. As Joel put it, the fundamental problem with giving people features is that you confront them with choices...and too many choices can often cause them to freeze in their tracks.

Hence, the trick is to find the right balance between power and simplicity. Although companies such as 37Signals have founded their business ethos on simplicity ("do less than your competitors, but do them well and simply") the fact remains that there is a direct corrolation between sales and features. For any organisation reliant on product sales, the pressure to add more features is a very hard one to resist.

Hence you need to give users the power to achieve what they want to be able to achieve, but try to do it in a way which is simple to use. That implies usability - and as complex, elegant user interfaces take much more work to get right than simple or less elegant ones it is something that very few get right.

This is almost exactly the dilemma we've faced since the beginning in the development of Visual Lint. This is a product which just oozes complexity by its very nature,* but needs to be presented in a straightforward, simple manner.

* Try setting PC-lint up manually and you'll see what I mean. The array of choices you have to make are truly bewildering, and no matter how you do it, another dev will always find an edge case your setup can't easily handle.

Although there is still always more we can do (most notably in the area of configuration) I hope that we've largely succeeded in this.


Python - Michael Sparks

Michael gave a worked introduction to Python and its capabilities by describing how to use it to develop a spelling corrector.

As a developer who now works mostly with compiled languages it was interesting to see the interactive capabilities of Python (although I was nodding off a bit at times, probably due to the early start we had to make it to the venue for registration).

I really should look at Python in more detail. For now it's filed in my "useful to know about" bucket alongside Erlang.


Fogbugz 7 - Joel Spolsky

In this session Joel gave a quick hands on overview of some of the new capabilities in Fogbugz 7. Most notable was the addition of source control integration (based on Mercurial in the hosted versions, but apparently configur ble to others as well) and code review to Fogbubgz. It was an impressive demo, all in all - although I'm not sure that such an overt sales pitch was right for the event.


Android for Developers - Reto Meier (Google)

This was an interesting overview of Google's Android OS from a developer perspective. I was particularly impressed by the way the SDK promotes interop ("mashup") between applications.

I still don't have any particular afinity for Java, though - or for SDKs which effectively force you to use only a particular language. This is one mistake that MS didn't make with .NET (and to a lesser extent Win32 itself), I feel.


jQuery - Remy Sharp

jQuery is a Javascript library. Although this is not really my area (I'm more of a desktop user interfaceI developer), I found it interesting nevertheless. Beth on the other hand was quite rapt with attention...

In essence jQuery provides a simple means to implemeng basic in-browser operations such as operating on all rows of a table, all whilst maintaining browser independence.

Very impressive. I'm sure we'll be using this on our site before too long.


StackOverflow - Joel Spolsky

Although this was in effect another of Joel's sales pitches (and a very effective one, I might add), it was an interesting one at that.

Joel first described some of the spin-offs from StackOverflow such as StackExchange which uses the SO engine to implement a Q&A site (e.g. a support forum) before moving onto StackOverflow Jobs, which I think has the potential to be huge.

The idea is simple: Provide a jobs forum associated with StackOverflow where technical specialists and the companies who need them can connect, without agencies and recruiters getting in the way. Indeed, agencies and recruiters will be banned from the site.

This is different from Joel's existing job forum in one signifcant fact - it leverages the StackOverflow brand. That alone could become crucial over time, since potential employers will be able to measure the suitability of a candidate by their performance on SO, and (presumably) the community will be able to rate job openings and/or the associated organisation.

This isn't free of course. Although developers can create a CV for free, if you want it to show up in searches by hiring managers it will cost you $99 per year.

Either way, it will be interesting to see how this develops, particularly as the prevalent client-agency-candidate model is so broken in the tech sector in the UK. If Joel can make money innovating in this space good luck to him.

Joel then passed the microphone to Jeff Atwood who started by admitting that his knowledge of the UK is limited to impressions gleaned from Austin Powers and apologised for any odd impressions he may have of us!

Jeff talked about his blog and the inception and development of StackOverflow. Jeff made the point that to succeed you have to be able to get up on the stage. and not be afraid of failing, and failing publicly (indeed, the StackOverflow motto is "Failure is always an option"). That's something I never really appreciated until we started Riverblade.

He also talked at length about professional pride and the importance of written and verbal communication. I can certainly agree with that - I personally find it incredibly frustrating when I have to work with developers who are poor communicators, but you have to balance that against the fact that technology tends to attract introverted personality types (we can't all be a Joel...). As ever, balance is important.


Nokia Platform - Pekka Kosonen (Nokia)

Pekka's talk was a bit of a counterpoint to the earlier Android session.

Pekka began by acknowledging that development for Nokia platforms is far harder than it really should be. Their acquisition of Trolltech and its Qt framework may change that in time, but given the tone of the session (albeit a lighthearteds one) I suspect they are feeling self-conscious about it and realise they have some catching up to do.

I'm reasonably familiar with Qt already (mainly as a result of meeting them at ACCU), so that wasn't a surprise. However the remote device/remote compile functionality they have looked interesting.


iPhone Development - Phil Nash (Slides)

Phil is the author of vConqr (a "Risk" clone for the iPhone) and as he is an ACCU regular there was a small contingent of us cheering him on during this session.

In this session he described what you need to get started in iPhone development, and what the overall experience is like. He illustrated this by building a simple iPhone app to animate between two images.

Objective-C: You'll either love it or hate it.

I have to say that although it was interesting the session served to reinforce my view of Objective-C as ugly, weird and generally "just WTF were they thinking?". Still, I'm glad I saw it for myself.


Humanity: Epic Fail - Jon Skeet

Jon Skeet taking advice from Tony the Pony (just don't ask!).This was a lighthearted look at why things often don't work the way we expect, and (more importantly!) who we can blame for it:
  1. Users ("but it'll be simple!")

  2. Architects ("I'll abstract the world away")

  3. Developers ("but it works on my machine...")
Although having someone to blame when things don't work the way we expect does makes us feel better, the fact is that people are complicated and as a result so are the things they do and the systems that they expect to interact with interact with. Unnecessary complexity is just a part of the human condition.

Simple examples of this include written language (e.g. collation, character set etc.), date/time (e.g. the completely unnecessary ambiguity in the 12 hour clock, timezones, daylight saving time and month/day transpositions in shortform date formats. I can certainly sympathise with this - I've tangled with timezones and daylight savings time and what I found isn't at all pretty.

There are actually good reasons for all of this, and at one time I'm sure it all made sense. To the people who came up with it, at least. As a result you can't really blame the users too much, except when they expect everything to be perfect and simple.

We can however blame architects and developers. Although we can't avoid complexity, we can plan for it.

Concrete examples of this include learning some of the corner cases you may encounter if you stray outside your local box, and trying not to make duff assumptions (like "we don't need to worry about DST").


How not to design a scripting language - Paul Biggar

Paul started his session by asking the question "What is a scripting language?" (surprisingly, there is no objective definition) before moving on to some of the problems they typically have (notably speed and interpreter portability) and some techniques for avoiding the worst of them at the language design stage.

Of particular interest from my perspective was the observation that scripting languages tend to be interpreted, it is not possible to tell what the code is until it is executed - whic makes an in-depth static analysis of the type we are accustomed to with PC-lint very, very difficult.


Yahoo! Developer Tools - Christian Heilmann

This session gave an overview of some of the Yahoo Javascript libraries for web development (e.g. YQL, OpenTables and YML). It also yielded what has to be the best quote of the day: "The biggest problem we have is that every browser is a bastard".

The YUI library is a full framework for building sites, born out of necessity within Yahoo, and based on the design patterns library. The whole aim is of course to hide the grottiness of individual browsers.

I was particularly impressed with YQL (Yahoo Query Language), which is effectively a meta language for consuming web APIs, using SQL style queries.


Close

After the event closed a few of us wandered off to find somewhere to have a drink and something to eat. The Churchill Arms in Kensington Church Street (just down from Notting Hill tube) proved to be an ideal venue to digest the days events over a pint or two of ESB and an excellent Thai meal. It's quite some years since I've been there, and if anything the only thing that's changed is that it is now even more busy than I remember!

Overall, a very interesting and informative event (I mean, just how often do you get to say "hi" to Joel Spolsky in person...?). Suffice it to say that we'll definitely be back for DevDays 2010.

Posted by Anna at 08:13 | Get Link

 

Visual Lint 2.0.8.117 has been released
Friday, September 04, 2009

The following changes are included in this build:
  • Added a "Show files in the lnt subfolder" checkbox to the "Configure Std.lnt" page in the Configuration Wizard. This allows the user to specify whether indirect files located only in the lnt folder within the PC-lint installation should be shown, or whether only those files which the PC-lint installer copied to the installation folder itself should be visible. The option is automatically selected if no suitable indirect files are found in the installation folder.

  • If the options.lnt file is not located in the PC-lint installation folder, a -i directive for the folder in question is now automatically added to the command line (before that for the installation folder) so that references to local indirect files are resolved correctly.

  • Fixed a bug in the "Goto Reference" context menu command in the Analysis Results Display which could cause it to perform the wrong action.

  • The Analysis Status Display now reports project status as "Complete" if there are excluded files in the project but all other files have been analysed.

  • Corrected a bug in the analysis results parser which was causing Internal Errors in the range 200-299 to be incorrectly categorised as Fatal Errors.

  • Corrected a bug in the Analysis Status Display which could cause the add-in to become unresponsive.

  • Fixed a potential crash when a project file containing an environment variable defined in terms of itself is encountered.

  • Fixed a potential crash when a project was unloaded.

  • Corrected a bug which was preventing the "for-loop compliance" property of Intel C++ Compiler projects from being read correctly.

  • Fixed a potential deadlock when the "Excluded from build" property of a file is changed in an unregistered installation.

  • Fixed a potential deadlock if a file analysis task was stopped while signalling completion to the scheduler.

  • Corrected a couple of minor bugs in the evaluation of project environment variables.

  • If the IDE include paths differ in case only (as will be the case if KB971092 has been installed), an "Include Folder Mismatch" warning will no longer be displayed.

  • The "OK" button in the registration key dialog is now disabled until a key has been entered.

  • Updated the installer with new runtime library redistributables - see KB971092 for details.

  • Corrected a typo in the licence file.

Posted by Anna at 11:31 | Get Link

 

Introducing support for Borland/CodeGear C++ Builder in LintProject Professional
Wednesday, August 19, 2009

A couple of months ago I wrote about our long term plans with for support for non-Microsoft project file formats in both Visual Lint and LintProject Professional (see Non-Microsoft Platforms, Visual Lint and LintProject Professional. At the time, we presented as an example Texas Instruments Code Composer Studio 3.x (.pjt) project files, and described what we were doing to add support for them to LintProject Professional.

Since then we have been building on that foundation by implementing project file parsers for the various Borland/CodeGear C++ Builder project and project group (the C++ Builder equivalent of a Visual C++ workspace or solution) file formats.

The reasoning behind this is simple - although PC-lint can parse most C++ code without any issues, to do well so it needs to be given not only compiler/library options files but also indirect files containing preprocessor and additional include folder definitions for each project configuration to be analysed. In all but the most trivial cases, this requires that the project files be parsed - and since each compiler vendor has its own ideas about what such a project file should look like (and frequently changes them in subtle or not-so-subtle ways...) this is a decidedly non-trivial problem.

In the Visual C++ world PC-lint has for some time been able to handle basic project files (.dsp and more recently .vcproj) and generate the corresponding project indirect ("project.lnt") files for you. Having said that, when we were originally developing Visual Lint it quickly became apparent that this support was limited in some areas (e.g. it doesn't read for-loop compliance options or inherited property sheets files) and this led us to write parsers for these Visual C++ project file format. As a result, Visual Lint is able to generate far more accurate project.lnt files than PC-lint alone - a fact that can in many cases easily be seen in the analysis results produced.

The same is true for C++ Builder. Although PC-lint can in fact read C++ Builder 5.0/6.0 project (.bpr) files, its ability to do so is quite limited. Furthermore, it cannot handle the newer C++ Builder 2007/2009 formats* at all.

* Being MSBuild based, these are far more complex than their predecessors - as is the the new .vcxproj project file format used by Visual Studio 2010. Again, this cannot be read by PC-lint itself - but LintProject Professional already has a parser for it.

As a result, the adoption of PC-lint within the C++ Builder developer community seems to have been marginal at best (I know I'm sticking my neck out here, but that's the distinct impression we get from speaking to C++ Builder developers who have tried to use it).

The good news is that this work has now borne fruit - from LintProject Professional 2.0.4.12 onwards the various C++ Builder project and project group file formats are directly supported:

LintProjectPro help screen lists the available project file formats

We are pretty confident that this version should be able to handle the majority of C++ Builder project files, but of course any edge cases and oddities can be dealt with through the normal support/release cycle (as we already do for Visual C++ project files).

Note that we have not (yet!) tested this build with the forthcoming C++ Builder 2010, but as the file format for this version is (apparently) identical to that of C++ Builder 2009 we are not anticipating any significant issues in doing so.

In the longer term our plan is actually to be able to make a version of Visual Lint available which can handle C++ Builder projects directly - either as a standalone GUI (the most likely option, since it will let us target project file formats for embedded IDEs as well) or even (if resources permit) as a native C++ Builder plug-in. That's still some way off though, and in the meantime we hope that LintProject Professional will prove to be an effective way to use PC-lint static analysis with C++ Builder projects.

We look forward to working further with developers within the C++ Builder community. Our thanks in particular go to those who have helped us extensively in the development of this exciting new capability for LintProject Professional.

Posted by Anna at 12:44 | Get Link

 

LintProject Professional 2.0.4.12 has been released
Tuesday, August 18, 2009

The following changes are included in this build:
  • Visual C++ 2008 project (.vcproj) files created using the "Create Project from Existing Code" wizard are now parsed correctly (such project files are created with UTF-8 encoding instead of the usual Windows-1252, and it seems that MSXML does not correctly support loading an XML stream with a UTF-8 byte-order mark from a Unicode string) [from Visual Lint 2.0.7.113].

  • Added support for reading XML format analysis results generated using the env-xml.lnt indirect file.

  • Added support for Borland C++ Builder 5.0/6.0 project group (.bpg), project (.bpr) and package (.bpk) files. The PC-lint environment file env-xml.lnt is used by default with these files.

  • Added support for Borland C++ Builder 2006 project project group (.groupproj) and project (.bdsproj) files. The PC-lint environment file env-xml.lnt is used by default with these files.

  • Added support for CodeGear C++ Builder 2007/2009 project group (.groupproj) and project (.cbproj) files. The PC-lint environment file env-xml.lnt is used by default with these files.

  • Solution/workspace configurations specified on the command line are now case-independent.

  • Added -fpa to the generated command line. This is necessary for limited compatibility with env-cb.lnt, which contains a +fpa option which causes a "Type any key to terminate" message to be output to the console on the completion of analysis of each file.

  • The PC-Lint environment options (env-*.lnt) file used is now displayed on the console. If the file is not available an error will be raised.

  • Added a new option (/env) to allow the env-*.lnt file to be specified on the command line.

  • If the env file specified (or selected by default) is not found in the PC-lint LintProject Professional will try to copy it from the "lnt" subfolder within the PC-lint installation.

  • The project name shown in reports is now always that specified in the project file, rather than the name of the file itself.

  • Fixed a bug which could cause project status to be momentarily shown as "Underway (100%)" in analysis reports.

  • Further improvements to the analysis results parser.

  • Corrected a bug in the analysis results parser which was causing Internal Errors in the range 200-299 to be incorrectly categorised as Fatal Errors.

  • Minor improvements to the console output during analysis.

Posted by Anna at 12:49 | Get Link

 

Visual Lint 2.0.7.113 has been released
Monday, June 22, 2009

The following changes are included in this version:
  • PC-lint analysis results generated without an environment file (i.e. no env-vc*.lnt file) can now be parsed correctly.

  • Project indirect (.lnt) files generated by previous versions of Visual Lint will now be automatically re-generated.

  • When a lint issue without an associated source line number is displayed in the Analysis Results Display, the line number is now shown as blank rather than 0.

  • Added a "Copy | Issue Text Only" command to the Analysis Results Display context menu. This is identical to the existing "Copy" command (now renamed "Copy | Full (with Source File Info)" but omits the source file information.

  • Local analysis tasks now only report progress when the scheduler is not busy performing other tasks. This should improve performance on n-core high performance systems with "noisy" codebases.

  • Visual Studio automation model interface pointers are now cached in the context of the calling thread. This reduces the use of the Global Interface Table, and hence simplifies thread synchonisation.

  • Corrected a bug which was affecting Intel C++ Compiler support in Visual Lint Enterprise Edition.

  • Added support for Intel C++ Compiler 11.0 projects, which use a different project file format to previous versions.

  • Modified the IncrediBuild version checking code for compatibility with IncrediBuild 3.4.

  • Visual C++ 2008 project (.vcproj) files created using the "Create Project from Existing Code" wizard are now parsed correctly. Such project files are created with UTF-8 encoding instead of the usual Windows-1252, and it seems that MSXML does not correctly support loading an XML stream with a UTF-8 byte-order mark from a Unicode string.

  • Fixed a bug in the "Delete Analysis Results" menu command in the Solution Explorer.

  • If hosted under VS2008 and running on XP, new installations no longer create a linked window frame to contain the Analysis Status, Results and Message Lookup Displays. This avoids a recently identified shutdown crash which appears to be specific to this combination of operating system and development environment.


Posted by Anna at 10:53 | Get Link

 
Powered By Blogger TM blogKomm ... comments without popups