このページのコンテンツは、JSHintプロジェクトのリポジトリから提供されています。もし間違いを見つけたら、issueをオープンするか、(できれば)プルリクエストを作成してください!
プロジェクトへの貢献は、一般的に以下の3つの形式のいずれかになります。
このドキュメントでは、それぞれの貢献の最適な方法について説明します。メンテナンスチームは、レポートの重大度を示すために、以下のラベルのいずれかを割り当てます。
もし不正な動作を発見したと思われる場合は、issueを提出してチームに知らせてください。チームが問題の診断と修正を支援するために、issueレポートには以下の情報が必要です。
問題を実証するためにスクリーンショットを使用することは避けてください。問題をプレーンテキストで説明する(および必要に応じて「コード」のMarkdown書式を使用する)ことで、より多くの人がレポートにアクセスしやすくなり、検索エンジンで簡単に見つけられるようになります。
もしJSHintを改善すると思われる新機能がある場合、ぜひお知らせください!優れた機能リクエストには、以下の情報が含まれています。
もし機能の実装とパッチの送信が可能であれば、なお良いです!まず機能リクエストを作成して、メンテナーがそれが適切かどうかを確認し、設計を形作るのを手伝ってください。
問題が確実に対処されるようにするための最良の方法は、パッチを送信することです。プルリクエスト、メール、issueのコメント、スニペットへのリンク付きのツイートなど、あらゆる手段でパッチを受け付けます。
ただし、パッチを送信する前に、以下が適用されていることを確認してください。
npm test
)。JSHintはNode.jsを使用して開発されており、package.json
ファイルに指定された多くの依存関係があります。インストールするには、リポジトリディレクトリ内で次のコマンドを実行してください。
$ npm install
その後、bin/jshint
を使用してJSHintのエッジバージョンを実行したり、bin/build
を使用してリリースバンドルをビルドしたりできるようになります。
このセクションでは、私たちのコーディングスタイルガイドについて説明します。あなたはそれに同意しないかもしれませんが、それは構いませんが、パッチを送信する場合は、このガイドを法律として扱ってください。
私たちの主なルールはシンプルです。
コードベース内のすべてのコードは、何人が貢献したかに関わらず、単一の人がタイプしたように見えるはずです。 —idiomatic.js
if
、for
、while
などの後に1つのスペースを使用します。無名関数の場合は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(";");
複数行のコメントを両側の改行で囲みます。
値が割り当てられていない場合(および十分に短い場合)を除き、変数ごとに1つのvar
を使用します。
var token = tokens.find(index);
var scope = scopes.current;
var next, prev, cur;
変数名に過度に説明的にならないでください。ただし、1文字の変数を乱用しないでください。中間くらいの適切な場所を見つけてください。
===
と!==
。結果を割り当てていない場合は、ショートサーキット式を使用しないでください。
// 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、またはパッケージの依存関係に影響します。<本文>
は、変更された内容を正確に説明する詳細なコミットメッセージであり、理由の要約です。本文の行は、最適なレンダリングのために100文字で折り返す必要があります。
履歴の例については、この例を参照してください。
<フッター>
には、どれほど微妙であれ、重大な変更の説明と、このコミットによって影響を受けたり修正されたりしたissueのリストが含まれています。フッターの行は、最適なレンダリングのために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