ReSharper代码清理/格式化代码功能与版本控制系统

8
ReSharper代码清理功能(启用“重新排序成员”和“格式化代码”)非常好。您可以使用XML定义布局模板,然后通过简单的按键组合根据模板中设置的规则重新组织整个源文件(或文件夹/项目/解决方案)。
无论如何,您认为这可能会对像Subversion、CVS、Git等VCS造成问题吗?是否存在引起许多不必要冲突的可能性?
谢谢。
9个回答

16

是的,这绝对会引起问题。除了要手动解决冲突外,当您检入已经重新格式化的文件时,版本控制系统会将几乎每一行都标记为已更改。这将使您或团队成员难以回顾历史记录并查看什么时候发生了变化。

话虽如此,如果每个人都以相同的方式自动格式化代码(即,您将该XML模板分发给团队),那么它可能会很好地运作。问题只会在不是每个人都在做相同事情时出现。


10
在这些情况下,我的建议是分成两个步骤。首先清理代码,然后再进行修改。使用两个不同的提交信息。这样可以轻松撤销所做的更改,并且知道如何修复问题。在多个提交中提交太多内容是一个好的实践,我认为这样可以更容易地让他人知道做了什么以及为什么要这样做。 - Kenny Mann

7
  • 只需一次重新格式化整个解决方案
  • 并确保每位开发人员都使用Resharper
  • 并确保格式选项被共享和版本化(代码样式共享选项)

7

我希望有一款IDE或编辑器,可以根据基线格式规则保存源代码,但允许每个开发人员以自己喜欢的格式显示和编辑代码。这样我就可以将我的左大括号放在下一行的开头,而不是你们这些异教徒认为应该放在当前行的结尾。

我猜我要等很长时间。


2
它肯定会导致冲突,因此如果有多人并行操作文件,请确保不要重新格式化整个文件。

2
您可以使用StyleCop来执行一组全面的标准,这几乎迫使每个人都使用相同的布局样式。然后,您只需要开发一个与此匹配的ReSharper代码样式规范,并将其分发给团队即可。
我仍在等待其他人完成此任务,并且希望JetBrains能够解决所有不完全支持的琐碎细节,以便允许ReSharper基本上保证完全符合StyleCop的要求。

0
可能写一个脚本来检查源代码控制历史中的每个版本,并应用代码清理是个不错的主意,然后将其提交到一个新的存储库中。以后可以使用该存储库进行所有工作。

0

我们正在开发一些与源代码重构相关的工具。我们称之为Xmerge,现在已经成为Plastic的一部分。这只是一个初步的尝试,因为我们正在研究更高级的解决方案。请点击这里查看。


0

这肯定会引起冲突。

如果您想在多用户环境中使用此功能,则需要配置Resharper将您的代码格式化为一组标准,无论用户是否使用Resharper都要强制执行这些标准。

这样,您就可以使用该工具来确保自己的代码符合标准,而不是将您的偏好应用于整个代码库。


0

我同意之前的回答,即冲突是可能甚至很有可能发生的。

如果您计划重新格式化代码,那么请确保不要将重新格式化的提交与更改实际代码功能的提交混合在一起。这样人们就可以跳过简单的重新格式化提交。另外,最好确保每个人都知道即将进行重新格式化,以便他们在该领域有正在进行的工作时提出异议。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接