557.md 5.0 KB
Newer Older
Lab机器人's avatar
readme  
Lab机器人 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
# 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)