PSScriptAnalyzer 是 PowerShell 模块和脚本的静态代码检查器。 本文概述了 PSScriptAnalyzer 中的重要更改。 有关更改的完整列表,请参阅 PSScriptAnalyzer CHANGELOG。
PSScriptAnalyzer 1.24.0 - 2025-03-18
重大变化
- 从 3 到 5.1 的最低所需 PowerShell 版本
新功能和更新
- 添加新选项(默认启用)以设置规则
UseCorrectCasing
的格式,以更正运算符、关键字和命令 -
PSAlignAssignmentStatement
:忽略具有单个键值对的哈希表 - 使用
RequiredResource
哈希表指定 PowerShell 模块版本 -
PSAvoidAssignmentToAutomaticVariable
:当参数具有包含变量表达式的属性时忽略 - 剪裁 Strings.resx 中字符串资源的不必要的尾随空格
- 使设置类型检测更可靠
- 将 foreach 分配添加到
AvoidAssignmentToAutomaticVariable
- 不要为每个记录器重复打印摘要
- 将退出代码
Invoke-ScriptAnalyzer -EnableExit
设置为诊断总数 -
Invoke-ScriptAnalyzer
:流式传输诊断而不是批处理 -
Invoke-ScriptAnalyzer
:每次调用仅打印摘要一次 -
Invoke-ScriptAnalyzer
:在报告的错误计数中包含分析错误
PSScriptAnalyzer 1.23.0 - 2024-10-09
用于更新生成管道的小型维护版本并修复两个问题:
- 修复类型定义 XML 中的属性名称
- 更新
PSUseConsistentWhitespace
以处理不按流顺序的重定向运算符
PSScriptAnalyzer 1.22.0 - 2024-03-05
PSScriptAnalyzer 适用于 Windows PowerShell 5.1 和 PowerShell 7。 使用 PowerShell 7 时所需的最低版本现在 7.2.11
。
新规则
-
PSAvoidUsingAllowUnencryptedAuthentication
规则来警告过时的身份验证方法。 -
PSAvoidExclaimOperator
规则来警告!
求反运算符的使用。
增强
- 为特定变量或参数启用
PSAvoidAssignmentToAutomaticVariable
抑制 - 升级到使用 .NET 6,因为 PowerShell 7.0 现已不受支持
- 将
PSUseSingularNouns
转换为可配置的规则,并将Windows
添加到允许列表 - 允许针对特定函数抑制
PSUseSingularNouns
- 将
ErrorView
添加到SpecialVars.cs
- 向
ToString()
和[CorrectionExtent]
类型添加[DiagnosticRecord]
方法 - 添加
PSNativeCommandUseErrorActionPreference
首选项变量 -
AvoidUsingPositionalParameter
- 检查命令是否具有参数,以避免在默认az
中 -
PSReviewUnusedParameter
- 添加 CommandsToTraverse 选项
PSScriptAnalyzer 1.21.0 - 2022-09-27
新规则
- 添加
AvoidMultipleTypeAttributes
规则以警告参数上的多个类型属性。 - 添加
AvoidSemicolonsAsLineTerminators
规则以警告以分号结尾的行。 - 添加
AvoidUsingBrokenHashAlgorithms
规则,警告使用不安全的哈希算法。
增强
- 返回建议,以对 规则使用
AvoidUsingPlainTextForPassword
-
Invoke-Formatter
- 接受来自管道的输入 - 使消息
UseCorrectCasing
更详细 - 通过
$FormatEnumerationLimit
和PSAvoidGlobalVars
从分析中排除自动变量PSUseDeclaredVarsMoreThanAssignments
-
PSAvoidUsingPositionalParameters
- 不要在 AZ CLI 上发出警告
PSScriptAnalyzer 1.20.0 - 2021-08-20
新规则
- 在 PowerShell 7 中使
UseSingularNouns
规则正常工作 -
UseConsistentWhitespace
- 创建选项以忽略哈希表内的赋值运算符
增强
- 将有关
process
别名Get-Process
的无帮助警告替换为有关滥用语法的警告 - 修复
FunctionInfo
UseShouldProcessCorrectly
回退 AST 属性分析 - 如果上一个标记是换行符,并且下一个标记不是换行符,则不要在左括号后增加缩进
-
UseConsistentWhitespace
- CheckOpenBrace 设置在左括号前面时不发出警告 - 实现
-IncludeSuppressions
参数 - 合并应用于同一诊断的多个抑制
PSScriptAnalyzer 1.19.1 - 2020-07-28
新规则
- 添加
AvoidUsingDoubleQuotesForConstantString
(默认禁用)以警告常量字符串使用双引号
修复
-
UseCorrectCasing
- 由于 PowerShell 引擎的运行空间相关性问题,CommandInfoParameters 属性引发时,请勿使用 CommandInfoCache -
ReviewUnusedParameter
- 使用$MyInvocation.BoundParameters
或$PSCmdlet.MyInvocation.BoundParameters
时不要触发 -
PipelineIndentationStyle.None
- 修复了导致哈希表中格式不正确的 bug -
UseUsingScopeModifierInNewRunspaces
- 修复了在 2 个不同的会话中使用同一变量名称时的ArgumentException
。 UseConsistentWhitespace
- 仅当前一个令牌在同一行上启动时才检查
- 修复使用内插字符串时 CheckParameter bug
以前的版本
有关以前版本的 PSScriptAnalyzer 中的更改的信息,请参阅 PSScriptAnalyzer CHANGELOG。