我与一个中等规模的开发人员团队合作,其中一半是Linux开发人员在Ubuntu上使用VIM,在OSX上使用MacVIM,另一半是使用Visual Studio 2010或更高版本的Windows开发人员。 / p>
过去浪费了相当多的时间,因为SVN操作因混合行尾而导致失败,或者由于硬标签与空格混合而导致代码审查发生变化(有时候是不同的长度,即:4个空格对2个空格对比8个空格等),我想结束它。
计划是调整我们设计的通用编码风格,几乎与Linux Kernel coding style相同。对于所有开发人员,我们可以要求他们通过Linux内核开发人员使用的checkpatch.pl
script运行他们的代码,但我们的代码包括 C,C ++和C#,因此我们需要概括规则检查器脚本超越ANSI C.
是否有通用的方法来实现VIM的规则集,而另一个是Visual Studio的规则集?我们想要生成一个检查整个文件的脚本,这些文件可以挂钩到我们的版本控制系统中,以便在提交完成之前在代码上运行,也可以作为运行时脚本强制执行样式作为编码器类型?
谢谢。
答案 0 :(得分:4)
EditorConfig似乎在Vim,Visual Studio和a lot of other editors and IDEs中完全符合您的要求。
答案 1 :(得分:3)
运行时“脚本”是最好的第一道防线。在这种情况下,将有各种Vim和Visual Studio设置来帮助强制执行您的代码样式。仅这一点就会遇到很多问题。请记住,这不会捕捉所有内容,但会鼓励您想要的编码风格。
我在Linux& Visual Studio在一个团队之前(有时是我自己)。整个Tabs / Spaces问题让我疯狂,因为批发的线路组要么转移要么不够。为了解决这个问题,我最终在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字符,或者至少让两个系统都使用相同的设置(即使用具有相同值的Tab或替换为Tabs的SPACE)
需要注意的事项:
就代码风格而言,正如您可能已经知道的那样,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后端方法,因为它可能需要比预期更长的时间,并且当它搞砸了,它可能需要比你预期更多的时间。毕竟,你真的只想提高效率,对吗?
前面的纪律是关键!