# Style guides

> 原文：[https://docs.gitlab.com/ee/development/contributing/style_guides.html](https://docs.gitlab.com/ee/development/contributing/style_guides.html)

*   [Editor/IDE styling standardization](#editoride-styling-standardization)
*   [Pre-commit static analysis](#pre-commit-static-analysis)
*   [Ruby, Rails, RSpec](#ruby-rails-rspec)
    *   [Creating new RuboCop cops](#creating-new-rubocop-cops)
*   [Database migrations](#database-migrations)
*   [JavaScript](#javascript)
*   [SCSS](#scss)
*   [Go](#go)
*   [Shell commands (Ruby)](#shell-commands-ruby)
*   [Shell scripting](#shell-scripting)
*   [Markdown](#markdown)
*   [Documentation](#documentation)
*   [Python](#python)
*   [Misc](#misc)

# Style guides[](#style-guides "Permalink")

## Editor/IDE styling standardization[](#editoride-styling-standardization "Permalink")

在将文件保存到本地之前，我们使用[EditorConfig](https://editorconfig.org/)自动应用某些样式标准. 默认情况下，大多数编辑器/ IDE 都会自动接受`.editorconfig`设置. 如果您的编辑器/ IDE 不自动支持`.editorconfig` ，建议您进行调查以查看是否存在插件. 例如，这里是[vim](https://github.com/editorconfig/editorconfig-vim)的[插件](https://github.com/editorconfig/editorconfig-vim) .

## Pre-commit static analysis[](#pre-commit-static-analysis "Permalink")

强烈建议您安装[Overcommit](https://github.com/sds/overcommit) ，以便在本地提交之前自动检查静态分析违规.

在您的 GitLab 源目录中运行：

```
make -C tooling/overcommit 
```

Then before a commit is created, Overcommit will automatically check for RuboCop (and other checks) offenses on every modified file.

这样可以节省您的时间，因为您不必等待配置项检测到相同的错误.

过量提交依赖于预提交钩子，以防止违反其规则集的提交. 如果您想覆盖此行为，可以通过传递 ENV 变量`OVERCOMMIT_DISABLE`来完成. 即`OVERCOMMIT_DISABLE=1 git rebase master`在禁用 Git 钩子的同时进行 rebase.

## Ruby, Rails, RSpec[](#ruby-rails-rspec "Permalink")

我们的代码库样式由[RuboCop](https://github.com/rubocop-hq/rubocop)定义和执行.

您可以使用`bundle exec rubocop --parallel`在本地检查任何违规行为. 在配置项上，这将由`static-analysis`作业自动检查.

对于尚未决定的 RuboCop 规则，我们遵循[Ruby Style Guide](https://github.com/rubocop-hq/ruby-style-guide) ， [Rails Style Guide](https://github.com/rubocop-hq/rails-style-guide)和[RSpec Style Guide](https://github.com/rubocop-hq/rspec-style-guide)作为编写惯用 Ruby / Rails / RSpec 的通用准则，但是审阅者/维护者应该宽容而不是太宽容关于风格的书呆子.

同样，当前已禁用某些 RuboCop 规则，对于这些规则，审阅者/维护者不得要求作者使用一种或另一种样式，因为这两种样式均被接受. 这不是理想的情况，因为这为[骑车](https://en.wiktionary.org/wiki/bikeshedding)留下了空间，并且理想情况下，我们应该启用所有 RuboCop 规则，以避免在评论中进行与样式相关的讨论/挑剔/来回.

此外，我们还有专门的[换行样式指南](../newlines_styleguide.html) ，以及专门针对[测试的样式指南和最佳实践](../testing_guide/index.html) .

### Creating new RuboCop cops[](#creating-new-rubocop-cops "Permalink")

通常，最好通过编程方式执行起毛规则，因为它可以减少前述的[自行车脱落](https://en.wiktionary.org/wiki/bikeshedding) .

为此，我们鼓励在代码库中创建新的 RuboCop 规则.

当创建可以应用于多个应用程序的新警察时，我们建议您将其添加到我们的[GitLab Styles](https://gitlab.com/gitlab-org/gitlab-styles)宝石中.

## Database migrations[](#database-migrations "Permalink")

请参阅专用的《 [数据库迁移样式指南》](../migration_style_guide.html) .

## JavaScript[](#javascript "Permalink")

请参阅专用的[JS 样式指南](../fe_guide/style/javascript.html) .

## SCSS[](#scss "Permalink")

请参阅专用的[SCSS 样式指南](../fe_guide/style/scss.html) .

## Go[](#go "Permalink")

请参阅专用的[Go 标准和样式指南](../go_guide/index.html) .

## Shell commands (Ruby)[](#shell-commands-ruby "Permalink")

请参阅[GitLab 代码库中有关 shell 命令](../shell_commands.html)的专用[准则](../shell_commands.html) .

## Shell scripting[](#shell-scripting "Permalink")

请参阅专用的[Shell 脚本标准和样式指南](../shell_scripting_guide/index.html) .

## Markdown[](#markdown "Permalink")

我们正在遵循[Ciro Santilli 的 Markdown 样式指南](https://cirosantilli.com/markdown-style-guide/) .

## Documentation[](#documentation "Permalink")

请参阅专用的[文档样式指南](../documentation/styleguide.html) .

## Python[](#python "Permalink")

请参阅专用的[Python 开发指南](../python_guide/index.html) .

## Misc[](#misc "Permalink")

代码应使用[美国英语](https://en.wikipedia.org/wiki/American_English)书写.

* * *

[Return to Contributing documentation](index.html)