PowerShell / PowerShell/PSScriptAnalyzer
Remove-Module PSScriptAnalyzer leaves behavior of removed module version
還沒有人認領這個 Issue。
- 主要語言
- C#
- 星號
- 2.2k
- 分支
- 415
- 平均合併
- 13 小時 1 分鐘
- 30 天內合併 PR
- 2
描述
Removing a version of PSScriptAnalyzer does not remove its behavior from the session. I don't know much about this, but it looks like we're missing code to clean up after a remove.
Version 1.10.0 and 1.11.0 are somewhat different. For example, in 1.11.0, the Settings parameter tab-completes the .psd1 file names in the Settings subdirectory. Also, the PSPlaceOpenBrace and PSPlaceCloseBrace rules do not trigger on a one-line function, such as:
function Test-Brace1 () {"Hello, World"}
However, if you import one version (Import-Module), remove that version (Remove-Module), and then import the other version, the result is the same as if you imported only the first version.
This is important, because the results of the different module versions are perceptibly different.
REPRO:
0. Start a new session, e.g. new console.
1. ipmo PSScriptAnalyzer -RequiredVersion 1.10.0 -Passthru
2. gmo | rmo
3. ipmo PSScriptAnalyzer -RequiredVersion 1.11.0 -Passthru
Now, test one of the differing features.
4. Invoke-ScriptAnalyzer -Settings <TAB> #Fails to tab complete, as in 1.10.0.
5. Invoke-ScriptAnalyzer -ScriptDefinition 'function Test-Brace1 () {"Hello, World"}' -Settings $home\Documents\WindowsPowerShell\Modules\PSScriptAnalyzer\1.11.0\Settings\CodeFormatting.psd1
This returns output that you shouldn't see any more in 1.11.0.
RuleName Severity ScriptName Line Message
-------- -------- ---------- ---- -------
PSPlaceOpenBrace Warning 1 There is no new line after open brace.
PSPlaceCloseBrace Warning 1 Close brace is not on a new line.
The same is true if you reverse the order of the versions.
0. Start a new session, e.g. new console.
1. ipmo PSScriptAnalyzer -RequiredVersion 1.11.0 -Passthru
2. gmo | rmo
3. ipmo PSScriptAnalyzer -RequiredVersion 1.10.0 -Passthru
Now, we have 1.10.0 with 1.11.0 behavior:
4. Invoke-ScriptAnalyzer -Settings <TAB> #Tab completes!
5. Invoke-ScriptAnalyzer -ScriptDefinition 'function Test-Brace1 () {"Hello, World"}' -Settings CodeFormatting
Version 1.10.0 should error on the one-liner, but it doesn't.
PS C:\> Invoke-ScriptAnalyzer -Settings CodeFormatting -ScriptDefinition 'function Test-Brace1 () {"Hello, World"}'
PS C:\>
Strange, I know. If you need more info, let me know. Thanks!
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
研究方向
先從重現中的 Import-Module 和 Remove-Module 序列開始,然後檢查在 PSScriptAnalyzer 1.10.0 和 1.11.0 之間切換後 Invoke-ScriptAnalyzer 的行為。比較設定的 Tab 補全以及 PSPlaceOpenBrace 和 PSPlaceCloseBrace 的結果;當移除一個版本後,該版本的行為不再留在工作階段中時,即表示完成。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- csharp, powershell
- 領域
- tooling
- Issue 類型
- 缺陷
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 活躍度
- 停滯
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100