Поделиться через


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 removed

  • Anonymous
    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        usertype

  • Anonymous
    September 18, 2007
    The comment has been removed

  • Anonymous
    September 18, 2007
    The comment has been removed