PSScriptAnalyzer icon indicating copy to clipboard operation
PSScriptAnalyzer copied to clipboard

Show documentation on custom rules

Open mcgurdan opened this issue 6 years ago • 17 comments

I have noticed the new support for Show documentation for pops up as a suggested correction. However, when using custom rules this uses this github repo and results in a 404 (e.g. https://github.com/PowerShell/PSScriptAnalyzer/blob/development/RuleDocumentation/Measure-PascalCase.md). Is it possible to use a custom url for this feature? This would allow us to direct the documentation at our own internal spaces.

mcgurdan avatar Dec 10 '18 13:12 mcgurdan

We would need to either abuse an existing property in DiagnosticRecord or create a new property or optional constructor parameter (which would require a new version of PSSA), I think the latter is the better option unless there is an unused property. After this we would also need a PR each in PowerShellEditorServices and powershell-vscode... Feel free to submit a PR for that

bergmeister avatar Dec 10 '18 15:12 bergmeister

It would be great to have this customization. I have been looking for customizing this url.

jegannathanmaniganadan avatar Jan 04 '19 12:01 jegannathanmaniganadan

It’s fairly trivial to extend, I’ll try to find the time

mcgurdan avatar Jan 08 '19 22:01 mcgurdan

Awesome, go for it. Please note that at the moment, only the Windows build images work (a PR is open to fix the Ubuntu build), therefore it is normal that 1 of the 4 build matrix elements will be read resulting in the build appearing to be red, please ignore that for moment

bergmeister avatar Jan 08 '19 22:01 bergmeister

Perfect! Looking forward on this

jegannathanmaniganadan avatar Feb 01 '19 10:02 jegannathanmaniganadan

If someone can brief me about the changes we expect, I can give it a try. At least the main script that needs a change.

jegannathanmaniganadan avatar Feb 14 '19 10:02 jegannathanmaniganadan

Sorry, I'll pick this up today

mcgurdan avatar Jun 27 '19 07:06 mcgurdan

Cc @rkeithhill Just FYI as we'll need also a PRs in PSES and the vscode extension

bergmeister avatar Jun 27 '19 07:06 bergmeister

So I have a working solution for this, however, it might not be for everyone unfortunately. As @bergmeister mentioned, in order to make this change, it involves making changes to PSES and VSCode, which in turn would probably then call for an extension to the diagnostic records here to include a custom URL, in an ideal world this is how I would it (however, I just don't have the time),

In the interest of time I opted for the solution below, maybe this will be of some use to someone else.

  1. We (myself and my colleagues) use an internal wiki space for documentation
  2. I have specifically named all of our internal rules to match our naming schema Verb-PrefixNoun
  3. I have updated the CodeAction.js found in "$env:USERPROFILE.vscode\extensions\ms-vscode.powershell-2019.5.0\out\src\features\CodeActions.js"
  4. The update is for the function showRuleDocumentation
  • The function already makes use if (ruleId.startsWith("PS")) -> I simply extended this logic to something similar where if the ruleId matches our Prefix we update pssaDocBaseURL to point our internal wiki (I removed it from being a Const).

Now, VSCode goes to this GitHub for all PSScriptAnalyzer rules and our Wiki for internal rules!

I know this is a little, hacky but fairly simple to implement at build time for us (we use chocolatey). Hope this helps anyone that might be interested.

mcgurdan avatar Jun 28 '19 10:06 mcgurdan

Nice!

jegannathanmaniganadan avatar Sep 21 '19 21:09 jegannathanmaniganadan

This 'working solution' is a really bad hack and I strongly recommend against using it. The ms-vscode.powershell has been a bit quiet in the last months with releases but generally expect a release every other month. Every release will break your 'solution' because the extension will be auto-updated in the background without you noticing and replace the code with new code and the path will change as well (and so will code). All you would've needed for a proper solution is adding a new optional property to DiagnosticRecord and making a small change in the extension to pick up this new property or just simply adding a setting in the extension itself only...

bergmeister avatar Sep 22 '19 17:09 bergmeister

Someone make the change to DiagnosticRecord and I'd be happy to plumb this change through PSES and the extension.

rkeithhill avatar Sep 22 '19 17:09 rkeithhill

@bergmeister If this is similar to https://github.com/PowerShell/PSScriptAnalyzer/pull/1144 ? Then I can submit a PR

jegannathanmaniganadan avatar Sep 23 '19 15:09 jegannathanmaniganadan

Yes, you'd add a property to DiagnosticRecord and then translate that property similar to how it was done in that referenced PR.

bergmeister avatar Sep 23 '19 16:09 bergmeister

Its a year since this has been commented. Has anyone started this, seems a quick thing.

simonsabin avatar Nov 06 '20 21:11 simonsabin

Hi, is someone working on this issue. I have also the same scenario, where I need to customize the documentation link.

Shruti-MS avatar Jan 29 '23 02:01 Shruti-MS

@Shruti-MS No, but you could follow the above guidance and we'd be happy to accept a PR

bergmeister avatar Feb 01 '23 17:02 bergmeister