{"action":"opened","issue":{"url":"https://api.github.com/repos/PowerShell/PSScriptAnalyzer/issues/208","labels_url":"https://api.github.com/repos/PowerShell/PSScriptAnalyzer/issues/208/labels{/name}","comments_url":"https://api.github.com/repos/PowerShell/PSScriptAnalyzer/issues/208/comments","events_url":"https://api.github.com/repos/PowerShell/PSScriptAnalyzer/issues/208/events","html_url":"https://github.com/PowerShell/PSScriptAnalyzer/issues/208","id":80349412,"number":208,"title":"The \"UseSingularNouns\" rule should only generate a warning for words that are plural but not singular.","user":{"login":"imfrancisd","id":11506276,"avatar_url":"https://avatars.githubusercontent.com/u/11506276?v=3","gravatar_id":"","url":"https://api.github.com/users/imfrancisd","html_url":"https://github.com/imfrancisd","followers_url":"https://api.github.com/users/imfrancisd/followers","following_url":"https://api.github.com/users/imfrancisd/following{/other_user}","gists_url":"https://api.github.com/users/imfrancisd/gists{/gist_id}","starred_url":"https://api.github.com/users/imfrancisd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/imfrancisd/subscriptions","organizations_url":"https://api.github.com/users/imfrancisd/orgs","repos_url":"https://api.github.com/users/imfrancisd/repos","events_url":"https://api.github.com/users/imfrancisd/events{/privacy}","received_events_url":"https://api.github.com/users/imfrancisd/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-05-25T02:27:02Z","updated_at":"2015-05-25T02:27:02Z","closed_at":null,"body":"# Suggestion\r\nThe \"UseSingularNouns\" rule should only generate a warning for words that are plural but not singular.\r\n\r\nIsPlural | IsSingular | UseSingularNouns\r\n-------- | ---------- | ----------------\r\nFalse    | False      | no warning\r\nFalse    | True       | no warning \r\nTrue     | False      | warning \r\nTrue     | True       | no warning\r\n\r\n# Before https://github.com/PowerShell/PSScriptAnalyzer/issues/139\r\nThe rule before #139 generated a warning for words that were both plural and singular.\r\n\r\nIsPlural | IsSingular | UseSingularNouns\r\n-------- | ---------- | ----------------\r\nFalse    | False      | no warning\r\nFalse    | True       | no warning \r\nTrue     | False      | warning \r\nTrue     | True       | warning (Why? The word is singular.)\r\n\r\n# After https://github.com/PowerShell/PSScriptAnalyzer/issues/139\r\nThe rule after #139 generates a warning even though the rule doesn't know if the word is plural or singular.\r\n\r\nIsPlural | IsSingular | UseSingularNouns\r\n-------- | ---------- | ----------------\r\nFalse    | False      | warning (Why? If the program can't figure it out, don't generate warnings.)\r\nFalse    | True       | no warning \r\nTrue     | False      | warning \r\nTrue     | True       | no warning\r\n\r\n# References\r\nThe \"UseSingularNouns\" rule can be traced back to:\r\n\r\n> Strongly Encouraged Development Guidelines\r\nhttps://msdn.microsoft.com/en-us/library/dd878270(v=vs.85).aspx\r\n\r\n> Use a Specific Noun for a Cmdlet Name (SD01)\r\n\r\n> Nouns used in cmdlet naming need to be very specific so that the user can discover your cmdlets. Prefix generic nouns such as \"server\" with a shortened version of the product name. For example, if a noun refers to a server that is running an instance of Microsoft SQL Server, use a noun such as \"SQLServer\". The combination of specific nouns and the short list of approved verbs enable the user to quickly discover and anticipate functionality while avoiding duplication among cmdlet names.\r\n\r\n> To enhance the user experience, the noun that you choose for a cmdlet name should be singular. For example, use the name Get-Process instead of Get-Processes. It is best to follow this rule for all cmdlet names, even when a cmdlet is likely to act upon more than one item.\r\n\r\nThe part about singular vs. plural nouns is purely to \"enhance the user experience\". If the rule can't figure out if something is singular or plural, then the rule should not generate a warning, but leave the decision of how to \"enhance the user experience\" to the cmdlet writer.\r\n"}}