dotnet jb cleanupcode生成冗余类型声明,环境配置不一致求排查规则
问题:dotnet jb cleanupcode 与 Rider/CI 代码风格规则不一致
我执行dotnet jb cleanupcode时,会将以下代码:
UserEntity[] users = [ new() { Name = "Example User 1", }, new() { Name = "Example User 2", }, ];
修改为:
UserEntity[] users = [ new UserEntity { Name = "Example User 1", }, new UserEntity { Name = "Example User 2", }, ];
但Rider和CI环境执行相同命令时,均建议保留第一种new()的写法。显然本地与CI/IDE的规则配置不一致,但我找不到导致冗余类型声明的对应规则,请问可能是.editorconfig或Roslyn中的哪些规则引发的?
可能的规则排查方向
JetBrains Rider 相关的 .editorconfig 规则
jetbrains_csharp_style_implicit_object_creation_when_type_is_apparent:该规则控制当目标类型可明确推断时,是否允许使用隐式的new()语法。若本地配置设为never,会强制要求显式写出类型(如new UserEntity());而CI/Rider环境若设为always,则会建议保留new()。jetbrains_csharp_style_implicit_creation_in_array_initializer:专门针对数组初始化场景的隐式对象创建规则。如果本地将其设为never,会强制数组内的对象初始化必须显式声明类型,与你遇到的修改行为完全匹配。
Roslyn 分析器规则
IDE0090:规则名称为“Use 'new()' instead of 'new Type()'”,默认行为是建议在目标类型可推断时使用new()。若本地.editorconfig中该规则被禁用(如dotnet_diagnostic.IDE0090.severity = none),或被反向配置,可能导致cleanupcode工具不遵循隐式创建的建议,但这种情况较少见——因为JetBrains的cleanupcode工具通常优先遵循自身的规则集。
额外检查点
- 确认本地与CI环境使用的
.editorconfig文件是否一致,比如本地是否加载了子目录中的配置文件,覆盖了根目录的规则。 - 检查
dotnet jb cleanupcode命令是否指定了特定的配置文件路径,导致与Rider默认加载的配置不一致。
内容的提问来源于stack exchange,提问作者allinonemovie
相关产品推荐
相关产品推荐

