此页面内容来自 JSHint 项目仓库。如果您发现错误,请 提交问题 或(更佳)提交 Pull Request!
对项目的贡献通常采取以下三种形式之一
本文档描述了为每种贡献提供最佳方式。维护团队将分配以下标签之一来记录报告的严重性
如果您认为已识别出不正确的行为,请通过提交问题告知团队。为了帮助团队诊断和解决问题,问题报告应包含以下信息
请避免使用屏幕截图来演示问题。用纯文本描述您的问题(并在适当的地方使用“代码”Markdown 格式)将使您的报告更容易被更多人访问,并更容易通过搜索引擎找到。
如果您认为某些新功能可以改进 JSHint,我们很乐意听到您的想法!优秀的特性请求包含以下信息
如果您能够实现该功能并提交补丁,那就更好了!请首先提交功能请求,以便维护人员验证其是否合适并帮助确定其设计。
确保解决您的问题的最佳方法是提交补丁。我们通过所有媒介接受补丁:Pull Request、电子邮件、问题评论、带有代码片段链接的推文等。
但是,在发送补丁之前,请确保以下内容适用
npm test
)。JSHint 使用 Node.js 开发,并且在其 package.json
文件中指定了许多依赖项。要安装它们,只需在您的仓库目录中运行以下命令即可
$ npm install
之后,您将能够使用 bin/jshint
运行 JSHint 的边缘版本,或使用 bin/build
构建发布包。
本节描述了我们的编码风格指南。您可能不同意它,这很好,但如果您要向我们发送补丁,请将本指南视为法律。
我们的主要规则很简单
任何代码库中的所有代码都应该看起来像是一个人输入的,无论有多少人参与贡献。 —idiomatic.js
if
、for
、while
等之后使用一个空格。匿名函数的 function
和 (
之间没有空格,命名函数的名称和 (
之间没有空格
var a = function() {};
function a() {}
如果可以使代码看起来更好,可以随意缩进变量赋值或属性定义。但不要滥用它
// Good
var next = token.peak();
var prev = token.peak(-1);
var cur = token.current;
var scope = {
name: "(global)",
parent: parentScope,
vars: [],
uses: []
};
// Bad
var cur = token.current;
var isSemicolon = cur.isPunctuator(";");
将多行注释的两侧都用换行符包装。
每个变量使用一个 var
,除非您不为其分配任何值(并且它足够短)。
var token = tokens.find(index);
var scope = scopes.current;
var next, prev, cur;
不要对变量名进行过度描述,但也不要滥用单字母变量。在两者之间找到一个合适的点。
===
和 !==
。如果您未分配结果,请勿短路表达式。
// Good
token = token || tokens.find(0);
// Bad
token.isPunctuator(";") && report.addWarning("W001");
// Good
if (token.isPunctuator(";"))
report.addWarning("W001");
提交消息采用简单的格式编写,清楚地描述了更改的目的。
总体格式应如下所示
[[TYPE]] <Short description>
<Blank line>
<Body / Detailed description>
<Footer>
提交消息中的行长度没有严格限制,但良好的提交消息的标题不应超过 60 个字符,主体/页脚应在 100 列处换行。这在 Github 的 UI 上呈现效果很好。
第一行是提交消息标题,它将指示更改的类型以及更改的总体描述。理想情况下,这应该在 60 个字符内。例如
[[FIX]] Ignore "nocomma" when parsing object literals
标题 [[FIX]]
表示更改是错误修复,而其余部分则阐明更改实际包含的内容。
JSHint 使用多种提交类型
[[FIX]]
--- 提交修复了错误或回归[[FEAT]]
--- 提交引入了新功能[[DOCS]]
--- 提交修改了文档。文档提交仅应修改源代码中的注释,或用于生成文档的脚本和资产。[[TEST]]
--- 提交仅修改测试或测试基础设施[[CHORE]]
--- 提交影响 dev-ops、CI 或包依赖项<Body>
是详细的提交消息,解释了确切更改的内容以及原因摘要。主体中的行应换行到 100 个字符,以获得最佳呈现效果。
有关历史示例,请参阅此 示例
<Footer>
包含任何重大更改的描述,无论多么细微,以及此提交影响或修复的问题列表。页脚中的行应换行到 100 个字符,以获得最佳呈现效果。
例如
[[FEAT]] Enable `norecurs` option by default
Commit 124124a7f introduced an option which forbids recursion. We liked it so much, we've enabled
it by default.
BREAKING CHANGE:
This change will break the CI builds of many applications and frameworks.
In order to work around this issue, you will need to re-engineer your applications and frameworks
to avoid making recursive calls. Use Arrays as stacks rather than relying on the VM call stack.
Fixes #1000009
Closes #888888
Closes #77777