What kind of custom rules do you want to write?
Our excellent program manager, Joe Rohde, is trying to gather information on the kinds of custom rules customers want to write.
I am a program manager for our Code Analysis system. I want to know what kind of custom rules you would like to write. Ignore what you may or may not know about what's in FxCop already. If you could track anything - tell me what you want!
I don't care if it's things you know we can't do - except maybe 'find my bugs'. Tell your friends, tell anyone who has ever said: I wish this thing could...
The reason I want everything is both to help plan the rules we should just plain provide; and how to best provide an actual supported extensibility feature.
Please send what you would like to see to: JRohde@Microsoft.com
Thanks!
Joe
Provide Joe with feedback and help us plan our future extensibility.
Comments
Anonymous
July 04, 2007
Cool, thanks for the reference David...Anonymous
July 04, 2007
Does Joe have a blog? I prefer to avoid e-mail unless absolutely necessary. Or should I leave comments here?Anonymous
July 05, 2007
Joe doesn't have a blog. However, feel free to leave feedback on this post.Anonymous
July 05, 2007
The comment has been removedAnonymous
July 25, 2007
I would like to see a rule that highlights when an exception of type Exception is caught but then not re-thrown. We often catch exceptions in the business tier to add some context to the message and then throw a new exception with the original as the InnerException value so we can more easily track down the source of the problem. Thanks for asking!Anonymous
August 16, 2007
Here are static code analysis rules I've written: AssertValid checking to add. Code is generated to create AssertValid functions and test each pointer data member. Boolean members to add to class 'Bool'. This lets meaningful names be used as parameters, instead of 'true' and 'false'. Class members not in a section. Class members without a name. Code to move to a section. Files to rename to match the class name. Files with the same name, in different directories. Function-body code-blocks to add. Function-parameters with unknown words. Functions with an undocumented return value. Functions with multiple return statements. Functions without definitions. Globals to move to a class. Large '.obj' files. Local variables with unknown words. Multiple variables declared in the same statement. Names that appear in both the 'known' and 'misspelled' word lists. New and misspelled words found in comments and identifiers. Sections that are nested. Sections to merge. Sections to move, to be alphabetically sorted. System-class function-calls to update to library-class function-calls. Tokens to update to macros. Undocumented classes. Undocumented data. Undocumented functions. And more. The Reports check: Class hierarchy organization. Constructor error checking. Constructor initializer lists. Destructor error checking. That related code is in the same section. The Reports help: Create a classes organizational tree, which is displayed by the browser. Sort lint messages and remove duplicate messages, to make linting faster. Rename class-member data names to start with 'm_'. Rename class-member names to contain known words. Rename class-member names to end with their type. Rename classes. Rename function local variables. Rename function return-values to start with 'result_'. Rename function-parameters. Rename functions. The Reports: AssertValid checking.messages AssertValid.messages autoexp char.messages Check_constructor_error_checking.messages Check_constructor_initializer_lists.messages Check_that_related_code_is_in_the_same_section.messages Class Bool.messages Class hierarchy.messages Class members not in a section.messages Class members without a name.messages Class-member names used in more than one section.messages Classes organizational tree.messages Code to move to a section.messages File to rename to match the class name.messages Files with the same name.messages Function-body code-blocks to add.messages Function-parameters with unknown words.messages Functions with an undocumented return value.messages Functions with multiple return statements.messages Functions without definitions.messages Globals.messages Large obj files.messages Lint Local variables with unknown words.messages Move_code.messages Multiple variables declared in the same statement.messages Names that appear in both the 'known' and 'misspelled' word lists new and misspelled words found in comments.messages new and misspelled words found in library module # comments.messages new and misspelled words.messages Rename class-member data names to start with 'm_' - These names are used more than once.messages Rename class-member data names to start with 'm_'.messages.messages Rename class-member names - These names are used more than once.messages Rename class-member names to end with their type - These names are used more than once.messages Rename class-member names to end with their type.messages Rename class-member names.messages Rename function local variables.unsorted.messages Rename function return-value to start with 'result_'.messages Rename function-parameters.sorted.messages Rename Function-parameters.unsorted.messages Sections that are nested.messages Sections to merge.messages Sections to move, to be alphabetically sorted.messages spell_checking_Enabled System #include statements that do not use angle brackets.messages System objects to update to library objects.messages system-class function-calls.messages tokens_to_update_to_macros.messages Undocumented classes.messages Undocumented data.messages Undocumented functions.messages usertypeAnonymous
September 18, 2007
The comment has been removedAnonymous
September 18, 2007
The comment has been removed