PowerShell / PowerShell/PSScriptAnalyzer
-Fix adding UTF-8 BOM to files
まだ誰も着手していません。
- 主要言語
- C#
- スター
- 2.2k
- フォーク
- 414
- 平均マージ
- 13時間 1分
- マージ済み PR(30日)
- 2
説明
Steps to reproduce
Create a file with a fixable violation
Function Test-Function {
param (
[String]
$Password
)
$Password
}
Run Invoke-ScriptAnalyzer -Path ./file.ps1 -Fix to fix the violation
Expected behavior
The violation is fixed but the BOM isn't added to the file. It should preserve whatever is there already.
Actual behavior
The violation is fixed but there is a UTF-8 BOM character added to the file
# Before
$ hexdump -C file.ps1
00000000 46 75 6e 63 74 69 6f 6e 20 54 65 73 74 2d 46 75 |Function Test-Fu|
00000010 6e 63 74 69 6f 6e 20 7b 0a 20 20 20 20 70 61 72 |nction {. par|
00000020 61 6d 20 28 0a 20 20 20 20 20 20 20 20 5b 53 74 |am (. [St|
00000030 72 69 6e 67 5d 0a 20 20 20 20 20 20 20 20 24 50 |ring]. $P|
00000040 61 73 73 77 6f 72 64 0a 20 20 20 20 29 0a 0a 20 |assword. ).. |
00000050 20 20 20 24 50 61 73 73 77 6f 72 64 0a 7d 0a | $Password.}.|
0000005f
# After running -Fix
# hexdump -C file.ps1
00000000 ef bb bf 46 75 6e 63 74 69 6f 6e 20 54 65 73 74 |...Function Test|
00000010 2d 46 75 6e 63 74 69 6f 6e 20 7b 0a 20 20 20 20 |-Function {. |
00000020 70 61 72 61 6d 20 28 0a 20 20 20 20 20 20 20 20 |param (. |
00000030 5b 53 65 63 75 72 65 53 74 72 69 6e 67 5d 0a 20 |[SecureString]. |
00000040 20 20 20 20 20 20 20 24 50 61 73 73 77 6f 72 64 | $Password|
00000050 0a 20 20 20 20 29 0a 0a 20 20 20 20 24 50 61 73 |. ).. $Pas|
00000060 73 77 6f 72 64 0a 7d 0a |sword.}.|
00000068
Note the ef bb bf (UTF-8 BOM) present. I tried explicitly ignoring the rule UseBOMForUnicodeEncodedFile as well but the BOM is still added.
Environment data
> $PSVersionTable
Name Value
---- -----
PSVersion 7.2.0
PSEdition Core
GitCommitId 7.2.0
OS Linux 5.14.16-201.fc34.x86_64 #1 SMP Wed Nov 3 13:57:29 UTC 2021
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
> (Get-Module -ListAvailable PSScriptAnalyzer).Version | ForEach-Object { $_.ToString() }
1.20.0
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず、PowerShell 7.2 で Invoke-ScriptAnalyzer -Path ./file.ps1 -Fix を実行して問題を再現し、前後のファイルバイトを調べます。ファイルの書き込みを担う -Fix の経路を追跡します。完了とは、UseBOMForUnicodeEncodedFile が無視される場合も含め、ファイルに既に存在する UTF-8 BOM の状態を保持したまま違反が修正されていることを意味します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- powershell
- 領域
- tooling
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- 明確に書かれている
- 初心者へのやさしさ
- 45/100