PSScriptAnalyzer 中的新增功能

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 更详细
  • 通过 $FormatEnumerationLimitPSAvoidGlobalVars 从分析中排除自动变量 PSUseDeclaredVarsMoreThanAssignments
  • PSAvoidUsingPositionalParameters - 不要在 AZ CLI 上发出警告

PSScriptAnalyzer 1.20.0 - 2021-08-20

新规则

  • 在 PowerShell 7 中使 UseSingularNouns 规则正常工作
  • UseConsistentWhitespace - 创建选项以忽略哈希表内的赋值运算符

增强

  • 将有关 process 别名 Get-Process 的无帮助警告替换为有关滥用语法的警告
  • 修复 FunctionInfoUseShouldProcessCorrectly 回退 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