Hacktoberfest 2026:維護者為十月標記出來的 issue,仍然開放、適合新手。 瀏覽 Hacktoberfest issue

When a line ends in an operator, automatically indent the next line since it is part of the same code statement

未關閉
#2,003 1 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

還沒有人認領這個 Issue。

評估

難度
4/5
預估耗時
3-5 天
新手友好度
35/100
Issue 類型
功能
描述清晰度
基本清楚
活躍度
停滯
技術堆疊
powershell
領域
tooling

研究方向

首先追蹤 PSScriptAnalyzer formatter 中現有的管線 | 縮排行為,以及行延續運算子的分類方式。將相同的規則擴充到 =、+ 和 - 等運算子,然後根據範例和現有的管線行為驗證格式化後的輸出。

由索引模型根據 Issue 內容生成。

描述

Area - Formatter Area-Code Formatting Issue-Enhancement

Summary of the new feature

As a user, when a line ends in a line continuation operator (=, +, -, etc.), I would like the next line to be indented so that it is clear both lines are part of the same statement, and that the 2nd line is not the start of a new code statement. This behaviour is already implemented for the pipe | operator, and it would be great if the other operators followed the same rules. This behaviour would also match the default behaviour of other languages, such as C# in Visual Studio. In VS Code, this behaviour is controlled for the pipe operator with the powershell.codeFormatting.pipelineIndentationStyle setting.

For example, when using the VS Code setting powershell.codeFormatting.pipelineIndentationStyle = IncreaseIndentationForFirstPipeline, the code is currently formatted like this:

$result =
Get-Process |
    Select-Object -First 1

I would prefer = to follow the same rules as | and have the code formatted like this:

$result =
    Get-Process |
    Select-Object -First 1

In this small example it may look silly to not just do:

$result = Get-Process |
    Select-Object -First 1

However, sometimes with fully qualified namespaces and descriptive variable names, the left-side of the equal operator may get very lengthy, such as:

[System.Collections.ArrayList] $listOfCustomersWithValidDriversLicenses = Get-CustomersFromCmdletWithAVeryLongName -Country Canada -AreaCode 123

This would look much better and prevent horizontal scrolling as:

[System.Collections.ArrayList] $listOfCustomersWithValidDriversLicenses = 
    Get-CustomersFromCmdletWithAVeryLongName -Country Canada -AreaCode 123

Currently, VS Code formats the code like this:

[System.Collections.ArrayList] $listOfCustomersWithValidDriversLicenses = 
Get-CustomersFromCmdletWithAVeryLongName -Country Canada -AreaCode 123

The current formatting makes it easy to overlook that the results returned from Get-CustomersFromCmdletWithAVeryLongName are being saved in a variable.

The example above is for the = operator, but I think it would make sense to do the same thing for +, -, and any other line continuation operators (i.e. that don't require a backtick ` to have the statement continue onto the next line).

Aside: I originally posted this issue in the vscode-powershell repo here, but I think this is the proper place for this feature request.

What is the latest version of PSScriptAnalyzer at the point of writing

The latest stable version of PSScriptAnalyzer is currently v1.22.0.

主要語言
C#
星號
2.2k
分支
415
平均合併
13 小時 1 分鐘
30 天內合併 PR
2

貢獻指南

開啟貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

PowerShell/PSScriptAnalyzer 的其他 Issue

查看 PowerShell/PSScriptAnalyzer 的全部 Issue

相似的 Issue

更多 C# Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。