microsoft / vscode-dotnettools

This is a feedback repository to capture issues logged for the C# Dev Kit and related extensions from Visual Studio Code
Other
221 stars 10 forks source link

csharp_prefer_braces not used by formatter #1375

Open jdonkervliet opened 3 weeks ago

jdonkervliet commented 3 weeks ago

Type: Bug

Issue Description

When formatting code with csharp_prefer_braces = true set in .editorconfig, braces are not automatically added.

Steps to Reproduce

Add csharp_prefer_braces = true to the .editorconfig file

Expected Behavior

When formatting a C# source file, braces are added automatically in cases where they are preferred.

Actual Behavior

No braces are added.

Environment information

VSCode version: 1.92.1 C# Extension: 2.39.29 Using OmniSharp: false

Dotnet Information .NET SDK: Version: 8.0.206 Commit: bb12410699 Workload version: 8.0.200-manifests.f6879a9a Runtime Environment: OS Name: Windows OS Version: 10.0.22621 OS Platform: Windows RID: win-x64 Base Path: C:\Program Files\dotnet\sdk\8.0.206\ .NET workloads installed: There are no installed workloads to display. Host: Version: 8.0.6 Architecture: x64 Commit: 3b8b000a0e .NET SDKs installed: 7.0.317 [C:\Program Files\dotnet\sdk] 8.0.206 [C:\Program Files\dotnet\sdk] .NET runtimes installed: Microsoft.AspNetCore.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 8.0.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.NETCore.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 6.0.33 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 8.0.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.WindowsDesktop.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 6.0.33 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 8.0.6 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Other architectures found: x86 [C:\Program Files (x86)\dotnet] registered at [HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x86\InstallLocation] Environment variables: Not set global.json file: Not found Learn more: https://aka.ms/dotnet/info Download .NET: https://aka.ms/dotnet/download
Visual Studio Code Extensions |Extension|Author|Version|Folder Name| |---|---|---|---| |ansible|redhat|24.8.3|redhat.ansible-24.8.3| |auto-close-tag|formulahendry|0.5.15|formulahendry.auto-close-tag-0.5.15| |auto-rename-tag|formulahendry|0.1.10|formulahendry.auto-rename-tag-0.1.10| |autodocstring|njpwerner|0.6.1|njpwerner.autodocstring-0.6.1| |bash-debug|rogalmic|0.3.9|rogalmic.bash-debug-0.3.9| |better-comments|aaron-bond|3.0.2|aaron-bond.better-comments-3.0.2| |better-toml|bungcip|0.3.2|bungcip.better-toml-0.3.2| |black-formatter|ms-python|2024.2.0|ms-python.black-formatter-2024.2.0| |cmake|twxs|0.0.17|twxs.cmake-0.0.17| |cmake-tools|ms-vscode|1.18.44|ms-vscode.cmake-tools-1.18.44| |codesnap|adpyke|1.3.4|adpyke.codesnap-1.3.4| |conda-cheatsheet|jojoee|1.2.8|jojoee.conda-cheatsheet-1.2.8| |cpptools|ms-vscode|1.21.6|ms-vscode.cpptools-1.21.6-win32-x64| |cpptools-extension-pack|ms-vscode|1.3.0|ms-vscode.cpptools-extension-pack-1.3.0| |cpptools-themes|ms-vscode|2.0.0|ms-vscode.cpptools-themes-2.0.0| |csdevkit|ms-dotnettools|1.9.55|ms-dotnettools.csdevkit-1.9.55-win32-x64| |csharp|ms-dotnettools|2.39.29|ms-dotnettools.csharp-2.39.29-win32-x64| |debugpy|ms-python|2024.10.0|ms-python.debugpy-2024.10.0-win32-x64| |dotnet-interactive-vscode|ms-dotnettools|1.0.5229040|ms-dotnettools.dotnet-interactive-vscode-1.0.5229040| |EditorConfig|EditorConfig|0.16.4|editorconfig.editorconfig-0.16.4| |even-better-toml|tamasfe|0.19.2|tamasfe.even-better-toml-0.19.2| |gc-excelviewer|GrapeCity|4.2.60|grapecity.gc-excelviewer-4.2.60| |git-graph|mhutchie|1.30.0|mhutchie.git-graph-1.30.0| |githistory|donjayamanne|0.6.20|donjayamanne.githistory-0.6.20| |intellicode-api-usage-examples|VisualStudioExptTeam|0.2.8|visualstudioexptteam.intellicode-api-usage-examples-0.2.8| |Ionide-fsharp|Ionide|7.21.0|ionide.ionide-fsharp-7.21.0| |isort|ms-python|2023.10.1|ms-python.isort-2023.10.1| |java|redhat|1.33.0|redhat.java-1.33.0-win32-x64| |jinja|wholroyd|0.0.8|wholroyd.jinja-0.0.8| |jinjahtml|samuelcolvin|0.20.0|samuelcolvin.jinjahtml-0.20.0| |jupyter|ms-toolsai|2024.7.0|ms-toolsai.jupyter-2024.7.0-win32-x64| |jupyter-keymap|ms-toolsai|1.1.2|ms-toolsai.jupyter-keymap-1.1.2| |jupyter-renderers|ms-toolsai|1.0.19|ms-toolsai.jupyter-renderers-1.0.19| |Kotlin|mathiasfrohlich|1.7.1|mathiasfrohlich.kotlin-1.7.1| |latex-workshop|James-Yu|10.1.0|james-yu.latex-workshop-10.1.0| |live-server|ms-vscode|0.4.14|ms-vscode.live-server-0.4.14| |makefile-tools|ms-vscode|0.10.26|ms-vscode.makefile-tools-0.10.26| |markdown-all-in-one|yzhang|3.6.2|yzhang.markdown-all-in-one-3.6.2| |markdowntable|TakumiI|0.12.0|takumii.markdowntable-0.12.0| |pdf|tomoki1207|1.2.2|tomoki1207.pdf-1.2.2| |powershell|ms-vscode|2024.2.2|ms-vscode.powershell-2024.2.2| |python|ms-python|2024.12.3|ms-python.python-2024.12.3-win32-x64| |python-environment-manager|donjayamanne|1.2.4|donjayamanne.python-environment-manager-1.2.4| |python-extension-pack|donjayamanne|1.7.0|donjayamanne.python-extension-pack-1.7.0| |r|REditorSupport|2.8.4|reditorsupport.r-2.8.4| |r-debugger|RDebugger|0.5.4|rdebugger.r-debugger-0.5.4| |regex|chrmarti|0.4.0|chrmarti.regex-0.4.0| |remote-containers|ms-vscode-remote|0.380.0|ms-vscode-remote.remote-containers-0.380.0| |remote-explorer|ms-vscode|0.4.3|ms-vscode.remote-explorer-0.4.3| |remote-server|ms-vscode|1.5.2|ms-vscode.remote-server-1.5.2| |remote-ssh|ms-vscode-remote|0.113.1|ms-vscode-remote.remote-ssh-0.113.1| |remote-ssh-edit|ms-vscode-remote|0.86.0|ms-vscode-remote.remote-ssh-edit-0.86.0| |remote-wsl|ms-vscode-remote|0.88.2|ms-vscode-remote.remote-wsl-0.88.2| |shell-format|foxundermoon|7.2.5|foxundermoon.shell-format-7.2.5| |shellcheck|timonwong|0.37.1|timonwong.shellcheck-0.37.1-win32-x64| |shellman|Remisa|5.7.0|remisa.shellman-5.7.0| |terraform|hashicorp|2.32.2|hashicorp.terraform-2.32.2-win32-x64| |todo-tree|Gruntfuggly|0.0.226|gruntfuggly.todo-tree-0.0.226| |vsc-python-indent|KevinRose|1.18.0|kevinrose.vsc-python-indent-1.18.0| |vscode-coverage-gutters|ryanluker|2.11.1|ryanluker.vscode-coverage-gutters-2.11.1| |vscode-django|batisteo|1.15.0|batisteo.vscode-django-1.15.0| |vscode-docker|ms-azuretools|1.29.2|ms-azuretools.vscode-docker-1.29.2| |vscode-dotnet-pack|ms-dotnettools|1.0.13|ms-dotnettools.vscode-dotnet-pack-1.0.13| |vscode-dotnet-runtime|ms-dotnettools|2.1.1|ms-dotnettools.vscode-dotnet-runtime-2.1.1| |vscode-gradle|vscjava|3.16.4|vscjava.vscode-gradle-3.16.4| |vscode-icons|vscode-icons-team|12.8.0|vscode-icons-team.vscode-icons-12.8.0| |vscode-java-debug|vscjava|0.58.0|vscjava.vscode-java-debug-0.58.0| |vscode-java-dependency|vscjava|0.24.0|vscjava.vscode-java-dependency-0.24.0| |vscode-java-pack|vscjava|0.29.0|vscjava.vscode-java-pack-0.29.0| |vscode-java-test|vscjava|0.42.0|vscjava.vscode-java-test-0.42.0| |vscode-jupyter-cell-tags|ms-toolsai|0.1.9|ms-toolsai.vscode-jupyter-cell-tags-0.1.9| |vscode-jupyter-slideshow|ms-toolsai|0.1.6|ms-toolsai.vscode-jupyter-slideshow-0.1.6| |vscode-maven|vscjava|0.44.0|vscjava.vscode-maven-0.44.0| |vscode-proto3|zxh404|0.5.5|zxh404.vscode-proto3-0.5.5| |vscode-pylance|ms-python|2024.8.1|ms-python.vscode-pylance-2024.8.1| |vscode-remote-extensionpack|ms-vscode-remote|0.25.0|ms-vscode-remote.vscode-remote-extensionpack-0.25.0| |vscode-sqlite|alexcvzz|0.14.1|alexcvzz.vscode-sqlite-0.14.1| |vscode-todo-highlight|wayou|1.0.5|wayou.vscode-todo-highlight-1.0.5| |vscode-yaml|redhat|1.15.0|redhat.vscode-yaml-1.15.0| |vscodeintellicode|VisualStudioExptTeam|1.3.1|visualstudioexptteam.vscodeintellicode-1.3.1| |vstuc|visualstudiotoolsforunity|1.0.3|visualstudiotoolsforunity.vstuc-1.0.3|;

Extension version: 1.9.55 VS Code version: Code 1.92.1 (eaa41d57266683296de7d118f574d0c2652e1fc4, 2024-08-07T20:16:39.455Z) OS version: Windows_NT x64 10.0.22621 Modes: Remote OS version: Linux x64 5.15.153.1-microsoft-standard-WSL2

System Info |Item|Value| |---|---| |CPUs|12th Gen Intel(R) Core(TM) i7-12700H (20 x 2688)| |GPU Status|2d_canvas: enabled
canvas_oop_rasterization: enabled_on
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
skia_graphite: disabled_off
video_decode: enabled
video_encode: enabled
vulkan: disabled_off
webgl: enabled
webgl2: enabled
webgpu: enabled
webnn: disabled_off| |Load (avg)|undefined| |Memory (System)|31.68GB (6.53GB free)| |Process Argv|--crash-reporter-id 7061c408-96d4-4b10-8abc-4f4f692bbee9| |Screen Reader|no| |VM|0%| |Item|Value| |---|---| |Remote|WSL: Ubuntu| |OS|Linux x64 5.15.153.1-microsoft-standard-WSL2| |CPUs|12th Gen Intel(R) Core(TM) i7-12700H (20 x 0)| |Memory (System)|15.46GB (12.50GB free)| |VM|0%|
A/B Experiments ``` vsliv368:30146709 vspor879:30202332 vspor708:30202333 vspor363:30204092 vscod805:30301674 binariesv615:30325510 vsaa593:30376534 py29gd2263:31024239 c4g48928:30535728 azure-dev_surveyone:30548225 vscrpc:30673769 962ge761:30959799 pythongtdpath:30769146 welcomedialog:30910333 pythonnoceb:30805159 asynctok:30898717 pythonregdiag2:30936856 pythonmypyd1:30879173 h48ei257:31000450 pythontbext0:30879054 accentitlementsc:30995553 dsvsc016:30899300 dsvsc017:30899301 dsvsc018:30899302 cppperfnew:31000557 dsvsc020:30976470 pythonait:31006305 dsvsc021:30996838 bdiig495:31013172 pythoncenvpt:31062603 a69g1124:31058053 dvdeprecation:31068756 dwnewjupyter:31046869 2f103344:31071589 impr_priority:31102340 refactort:31108082 pythonrstrctxt:31112756 flighttreat:31119336 wkspc-onlycs-t:31111718 wkspc-ranged-c:31118571 ```
JoeRobich commented 3 weeks ago

Hi @jdonkervliet,

csharp_prefer_braces is a code style (or linting) rule. It does not control the formatter. You can make locations in your code which go against your chosen style light up by additionally specifying a severity. For instance you can make not using braces a warning by setting csharp_prefer_braces = true:warning.

For more information about code style rules: https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/

For a list of formatter options: https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/csharp-formatting-options