在Visual Studio和VIM中执行编码风格

Enforcing coding styles in Visual Studio and VIM

本文关键字:执行 编码 风格 VIM Visual Studio      更新时间:2023-10-16

我和一个中等规模的开发团队一起工作,其中一半是Linux开发人员,在Ubuntu上使用VIM,在OSX上使用MacVIM,另一半是Windows开发人员,使用Visual Studio 2010或更高版本。

在过去,当处理诸如由于混合行结束而导致SVN操作失败的事情时,或者由于硬制表符与空格作为制表符的混合(有时是不同的长度,例如:4个空格vs 2个空格vs 8个空格,等等)而导致代码审查的更改时,浪费了相当多的时间,我想结束它。

计划是采用我们设计的通用编码风格,它几乎与Linux内核编码风格相同。对于所有开发人员,我们可以要求他们通过Linux内核开发人员使用的checkpatch.pl脚本运行他们的代码,但是我们的代码包括C, c++和c# ,所以我们需要将规则检查器脚本推广到ANSI C之外。

是否有一种通用的方法来实现一个规则集的VIM,另一个为Visual studio?我们想要生成一个检查整个文件的脚本,它可以连接到我们的版本控制系统,以便在提交完成之前在代码上运行,或者作为一个运行时脚本来强制编码类型的样式?

谢谢。

EditorConfig似乎可以在Vim, Visual Studio和许多其他编辑器和ide中做你想做的事情。

运行时"脚本"是最好的第一道防线。在这种情况下,它将是各种Vim和Visual Studio设置,以帮助执行您的代码风格。仅这一点就能解决相当多的问题。请记住,这不会捕获所有内容,但会鼓励使用您想要的编码风格。

我在Linux上工作过&以前在一个团队中使用Visual Studio(有时是我自己)。整个制表符/空格的问题把我逼疯了,因为会有大量的行,要么移位得太多,要么移位得不够。为了解决这个问题,我最终在Vim中使用了这三个设置(在Visual Studio中也设置了类似的值),从而在根处捕获了一类问题。

Vim

set expandtab
set shiftwidth=4  " Mainly for if/for/while/general {} block indentation.  4 spaces.
set softtabstop=-1 " Allows us to use the Tab key and have it act like shiftwidth.
Visual Studio

  • 按Tab键时插入空格
  • 在代码块内缩进4个空格

他们的关键是摆脱制表符,或者至少让两个系统使用相同的设置(即两个系统都使用具有相同值的制表符或空格替换为制表符)

注意事项:

  • 有人将文件从一个操作系统复制到另一个操作系统,然后将文件签入该机器上的SVN。SVN将盲目地提交,例如,来自UNIX系统的DOS行结束文件。您希望只在同一个系统上签出/提交文件。否则,在同一个操作系统上签出/编辑/提交文件应该不会出现问题,因为SVN可以在签出时转换行结尾。你可以通过将文件加载到Vim中来"修复"这个问题,然后将行尾转换为你想要的特定操作系统,输入":set fileformat=dos"(如果你想更改为windows风格),":set fileformat=unix"(对于unix风格),或者最后":set fileformat=mac"(对于mac)。
就代码风格而言,你可能已经知道,Vim和Visual Studio都提供了很多灵活性。虽然我无法提供Vim的具体设置,但是可以查看以下选项:
autoindent
cindent
cinoptions  (implied from cindent)
cinkeys     (implied from cindent)
comments    (default is probably fine, but here for thoroughness)

所以,你需要

set autoindent
在编辑C或c++文件时,应该自动设置

和cindent。cinoptions和cinkeys的默认值对我来说是可以的,但是我在过去和不同的组一起工作时调整过它们。

不要忘记在选定的行范围内使用'='命令来重新格式化代码!这是非常方便的!

我避免使用完全自动化的SVN后端方法,因为它可能比您预期的要花更长的时间才能把它做好,而且当它搞砸了,它可能也会比您预期的花费更多的时间。毕竟,你只是想提高效率,对吧?

纪律是关键!