首页
/ CSharpier 1.0.0 发布:C代码格式化工具的重大升级

CSharpier 1.0.0 发布:C代码格式化工具的重大升级

2025-06-27 04:52:50作者:宣海椒Queenly

CSharpier 是一个开源的 C# 代码格式化工具,它可以帮助开发者自动保持代码风格的一致性。该项目最近发布了 1.0.0 版本,带来了多项重要改进和新功能,标志着项目已经成熟稳定。

XML 文件格式化支持

1.0.0 版本最显著的新特性是增加了对 XML 文件的格式化支持。CSharpier 现在默认会尝试格式化以下类型的 XML 文件:

  • .csproj 项目文件
  • .props 属性文件
  • .targets 目标文件
  • .xml 通用 XML 文件
  • .config 配置文件

对于 XML 文件,CSharpier 默认使用 2 个空格作为缩进大小,这与 C# 代码默认的 4 空格缩进不同。如果遇到无效的 XML 文件,CSharpier 会将其视为警告而非错误。

性能大幅提升

Timothy Makkison 对 CSharpier 的性能进行了重大优化。基准测试显示,新版本在速度和内存使用方面都有显著改进:

  • 测试用例执行时间从 233.3ms 降至 64.72ms
  • 复杂场景执行时间从 433.7ms 降至 137.83ms
  • 内存分配从 101.41MB 降至 18.33MB(测试用例)
  • 内存分配从 182.44MB 降至 30.78MB(复杂场景)

这些优化使得 CSharpier 在处理大型代码库时更加高效。

配置变更

TabWidth 重命名为 IndentSize

为了与 .editorconfig 保持一致,配置选项 TabWidth 已更名为 IndentSize。这个名称更准确地反映了默认使用空格而非制表符进行缩进的行为。

CLI 命令重构

CLI 接口经过重新设计,现在使用命令式结构,使参数与命令的对应关系更加清晰。主要命令包括:

  • dotnet csharpier format .:格式化代码
  • dotnet csharpier check .:检查代码格式

这种改变提高了 CLI 的可用性和一致性。

工具命名变更

1.0.0 版本对工具名称进行了简化:

  • 工具命令从 dotnet-csharpier 改为 csharpier
    • 本地工具用法不变:dotnet csharpier --version
    • 全局工具新用法:csharpier --version
  • 程序集/可执行文件名从 dotnet_csharpier 改为 CSharpier

文件忽略规则改进

CSharpier 现在支持更智能的文件忽略机制:

  1. 会考虑 .gitignore 文件中的规则
  2. 如果存在 .csharpierignore 文件,其中的规则优先级更高
  3. 同一目录中的 .gitignore 优先级高于上级目录的 .gitignore
  4. .csharpierignore 中的规则采用与 .gitignore 相同的优先级逻辑

其他重要改进

日志格式支持

新增 --log-format 参数,支持两种日志格式:

  • 默认的控制台格式
  • MsBuild 格式(可在 Visual Studio 错误列表中跳转)

EditorConfig 支持增强

现在支持通过 --config-path 参数指定 .editorconfig 文件路径,提供了更灵活的配置方式。

文件系统监控优化

CSharpier 服务器模式不再为所有文件创建监控,改用临时空内容根目录,解决了某些系统文件监控资源耗尽的问题。

代码格式化质量改进

1.0.0 版本修复了多个代码格式化问题,包括但不限于:

  1. 全局语句中局部作用域块前的多余空行
  2. 括号表达式的不一致缩进
  3. 属性访问器上特性的不必要换行
  4. 注释掉的流畅接口方法链被错误压缩
  5. 泛型调用链中的注释导致的不必要换行
  6. 特性前注释导致的意外换行
  7. 大型 switch 表达式后方法调用的单行保持问题
  8. 单参数 lambda 表达式的不一致格式化
  9. XML 注释后的多余空行
  10. 原始字符串中非内容行的缩进处理

这些改进使得 CSharpier 的格式化结果更加一致和符合预期。

总结

CSharpier 1.0.0 是一个重要的里程碑版本,不仅增加了 XML 格式化支持,还大幅提升了性能,改进了配置系统和 CLI 体验,并修复了大量格式化问题。对于追求代码风格一致性的 C# 开发团队来说,升级到这个版本将带来更好的开发体验和更高的生产力。

登录后查看全文
热门项目推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
178
262
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
866
513
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
183
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
265
305
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
398
371
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
598
57
GitNextGitNext
基于可以运行在OpenHarmony的git,提供git客户端操作能力
ArkTS
10
3