此頁內容來自 JSHint 專案儲存庫。如果您發現錯誤,請 開啟問題回報,或(更好)提出拉取要求!
針對專案的貢獻通常分為三種形式
本文件說明針對各類回報及要求的最佳貢獻方式。維護團隊將指派下列標籤之一,說明回報的嚴重程度
如果您相信已發現不當的行為,請透過提交問題回報,讓團隊知悉。為幫助團隊診斷並修正問題,問題回報應包含下列資訊
請避免使用截圖示範問題。使用純文字說明您的問題(並在適當情況下使用「code」中繼標記格式),這樣可以讓更多人更容易閱讀您的回報,也能讓搜尋引擎更容易搜尋到。
如果您想到一些可以改善 JSHint 的新功能,我們很樂意聽聽!優秀的功能要求應包含下列資訊
如果您具備實作該功能及提交修補程式的能力,那就更好了!請先提出功能要求,以便維護人員驗證要求是否得宜,並協助調整設計。
提交修補程式是確保您的問題獲得處理的最佳方式。我們接受透過所有媒介提供的修補程式:拉取要求、電子郵件、問題留言、附有程式碼片段連結的推文等。
不過,在傳送修補程式之前,請確定符合下列各項
npm test
)。JSHint 使用 Node.js 進行開發,並在 package.json
檔案中指定多項相依性。要安裝這些相依性,您只需從 repo 目錄中執行下列命令
$ 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]]
--- 提交影響開發作業、持續整合或套件依賴項目的內容<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