所有與 Exercism 網站的互動都會自動處理。分析器的唯一職責,是接收一份解答,並回傳狀態與任何訊息。
two-fer)。analysis.json 檔案寫入輸出目錄。tags.json 檔案寫入輸出目錄。每份解答有 20 秒的時間,分析器可以使用 100% 的機器資源。 20 秒之後,行程會被中止,並回報逾時。
我們強烈建議遵循我們的效能最佳實踐文件,以降低逾時的機率。
analysis.json 檔案的結構應如下:
{
"summary": "This solution looks good but has a few points to address",
"comments": [
{
"comment": "ruby.general.some_parameterised_message",
"params": { "foo": "param1", "bar": "param2" },
"type": "essential"
},
{
"comment": "ruby.general.some_unparameterised_message",
"params": {},
"type": "actionable"
},
{
"comment": "ruby.general.some_unparameterised_message"
},
"ruby.general.some_unparameterised_message"
]
}
summary(選填)summary 欄位是一個文字(非 Markdown)欄位,用來摘要輸出內容。
它可能會寫出類似「你的解答就快完成了,只要再做兩個小調整就好」或「程式碼運作得很好,只是還有一點 lint 需要處理」這樣的內容。
這個摘要會顯示在網站上、評論的上方。
commentscomments 欄位是一個評論陣列,這些評論會連結到 exercism/website-copy 中的 Markdown 文件(詳情請見撰寫分析器評論)。
陣列中的每個值都是指標字串,或是格式如下的 JSON 物件:
comment指向 website-copy 中某個檔案的指標字串。
params(選填)一個 JSON 物件,內含任何在呈現時要內插替換的參數。
舉例來說,你可以在 Markdown 檔案中寫下 Try %{variable_name} += 1 instead,然後把 params 設為 { "variable_name": "foo"},藉此將 %{variable_name} 替換成學生實際使用的變數。
使用參數化檔案時,請務必為所有用到的 % 跳脫,在它前面再加上一個 %。
例如 Try aim aim for 100%% of the tests passing。
type(選填)以下這些 type 都是有效的:
essential:在學生處理完這則評論之前,我們會對他們進行軟性封鎖actionable:任何給予使用者具體指示以改善解答的評論informative:提供資訊的評論,但不一定期望學生採用。例如在 Ruby 中,如果有人在 TwoFer 裡使用了字串串接,我們也會告訴他們字串格式化,但不會建議這是更好的做法。celebratory:告訴使用者他們做對了的評論,可能是對解答的整體評論,也可能是針對某個技巧。沒有 type 欄位的評論,預設為 informative 。
目前網站上,我們會因為 essential 評論而軟性封鎖,並鼓勵學生在練習題上標記為完成之前,先處理完 actionable 評論(但概念練習不用),不過不會對 informative 或 celebratory 評論建議任何動作。
不過未來我們可能會為其他類型加上表情符號或指示標記,或把它們另外分組。
tags.json 檔案的結構應如下:
{
"tags": [
"construct:list",
"paradigm:functional",
"technique:higher-order-functions",
"uses:List.unfold"
]
}
tagstags 欄位是一個字串陣列。
每個標籤的格式為:"<category>:<thing>"。
例如:
"paradigm:functional""technique:recursion""construct:bitwise-and""uses:DateTime.add_seconds"標籤可以用來辨識一份解答使用了哪些結構、技巧或範式。
更多資訊請見為解答加上標籤。
每次執行的 stdout 和 stderr 內容都會保存到檔案中,之後可以查看。
你可以寫入一個 analysis.out 檔案,裡面放你之後想查看的除錯資訊。
在建立分析器之前,請先閱讀我們的分析器指南。