One of things that we are doing for Orcas, is to basically do what we call a resolution scrub. This is where we print out every single possible resolution/warning and read over them to check for consistency, proper grammer and to see if they provide enough information for the user to both understand and fix the issue.
Unfortunately, we know that we are not there yet. An example of a change we are making is when we analyze the following:
public void writeString(string word)
public void writeXML(string xml)
In Visual Studio 2005/FxCop 1.35, the above type would fire the following four warnings with regards to the casing of name and name of its members (see the Framework Design Guidelines for more information):
1) Correct the casing of member name ‘writeString’.
2) Correct the casing of member name ‘writeXML’.
3) Correct the capitalization of member name ‘IoWriter.WriteXML(String):Void’.
4) Correct the capitalization of ‘Io’ in type name ‘IoWriter’.
As you can see, for what seem to be similar checks, there are three different ways to tell the user of the problem. On top of that, even though 2) and 3) are actually raised for two different issues (one for the casing of ‘write’ and one for the casing of ‘XML’), to the user, both seem to be finding the same problem. All four also fail to mention what the casing of the member and type names should be.
For Orcas, we will be changing the above to the following:
1) Correct the casing of ‘write’ in member name ‘IoWriter.writeString(String):Void’ by changing it to ‘Write’.
2) Correct the casing of ‘write’ in member name ‘IoWriter.writeXML(String):Void’ by changing it to ‘Write’.
3) Correct the casing of ‘XML’ in member name ‘IoWriter.writeXML(String):Void’ by changing it to ‘Xml’.
4) Correct the casing of ‘Io’ in type name ‘IoWriter’ by changing it to ‘IO’.
At least now they all have the same wording and all of them now tell the user how to actually fix the warning.
What do you think? Is this enough? Or would you like to see more information in the warning with regards to why, for example, ‘XML’ and ‘Io’ in particular are cased incorrectly?
Apart from above, what other warnings have you encountered that do not provide enough information? I’m particularly interested in warnings that do not tell the user; 1) why the problem was raised and/or 2) how to fix the problem.