Az Exercism weboldalával való minden interakció automatikusan történik. Az elemzőknek egyetlen feladatuk van: átvesznek egy megoldást, majd visszaadnak egy státuszt és az esetleges üzeneteket.
two-fer).analysis.json fájlt kell írnia a kimeneti könyvtárba.tags.json fájlt is írnia a kimeneti könyvtárba.Az elemző minden megoldás esetén 20 másodpercre a gép erőforrásainak 100%-át kapja. 20 másodperc után a folyamat leáll, és időtúllépést jelez.
Erősen ajánljuk, hogy kövesd a teljesítményre vonatkozó bevált gyakorlatokról szóló dokumentumunkat, hogy csökkentsd az időtúllépések esélyét.
Az analysis.json fájl felépítése a következő:
{
"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 (opcionális)A summary mező egy szöveges (nem markdown) mező, amely összegzi a kimenetet.
Tartalmazhat például ilyesmit: „A megoldásod már majdnem kész, csak két apró változtatás van hátra.”, vagy azt, hogy „A kód remekül működik, de még egy kis lintelést el kell végezni.”.
Ez az összegzés a weboldalon a megjegyzések fölött jelenik meg.
commentsA comments mező olyan megjegyzések tömbje, amelyek a exercism/website-copy Markdown-dokumentumaira mutatnak (további információkat az elemzőmegjegyzések írása szakaszban találsz).
A tömbben minden érték vagy egy mutatóstring, vagy egy JSON-objektum a következő formátumban:
commentA website-copy egyik fájljára mutató string.
params (opcionális)Egy JSON-objektum, amely azokat a paramétereket tartalmazza, amelyeket a megjelenítés során be kell helyettesíteni.
Ha például a markdown-fájlba azt írod, hogy Try %{variable_name} += 1 instead, majd a params értékét { "variable_name": "foo"}-ra állítod, akkor a %{variable_name} helyére az a változó kerül, amelyet a tanuló ténylegesen használt.
Paraméterezett fájlok használatakor a % minden előfordulását escape-elned kell úgy, hogy egy másik % jelet teszel elé.
Pl. Try aim aim for 100%% of the tests passing.
type (opcionális)A következő type értékek érvényesek:
essential: addig soft-blockoljuk a tanulókat, amíg nem foglalkoztak ezzel a megjegyzésselactionable: bármely megjegyzés, amely konkrét utasítást ad a felhasználónak a megoldása javításárainformative: olyan megjegyzések, amelyek információt adnak, de nem feltétlenül várják el, hogy a tanulók használják is őket. Ha például valaki Rubyban a String Concatenationt használja a TwoFerben, akkor a String Formattingról is tájékoztatjuk, de nem sugalljuk, hogy az jobb választás lenne.celebratory: olyan megjegyzések, amelyek jelzik a felhasználónak, hogy valamit jól csinált, akár a megoldás egészére vonatkozó általános megjegyzésként, akár egy technikára vonatkozóan.A típusmező nélküli megjegyzések alapértelmezésben informative típusúak.
A weboldalon jelenleg az essential megjegyzéseknél soft-blockolunk, a tanulókat arra biztatjuk, hogy a gyakorlófeladatok elkészültként jelölése előtt foglalkozzanak az actionable megjegyzésekkel (a tanulófeladatoknál viszont nem), az informative és celebratory megjegyzéseknél pedig nem javaslunk semmilyen teendőt.
A jövőben azonban előfordulhat, hogy más típusokhoz is adunk emojikat vagy jelzéseket, esetleg külön csoportosítjuk őket.
A tags.json fájl felépítése a következő:
{
"tags": [
"construct:list",
"paradigm:functional",
"technique:higher-order-functions",
"uses:List.unfold"
]
}
tagsA tags mező egy stringekből álló tömb.
Minden címke formátuma: "<category>:<thing>".
Néhány példa:
"paradigm:functional""technique:recursion""construct:bitwise-and""uses:DateTime.add_seconds"A címkék segítségével azonosítható, hogy egy megoldás milyen konstrukciókat, technikákat és paradigmákat használ.
További információkat a megoldások címkézése szakaszban találsz.
Minden futás stdout és stderr kimenetének tartalma fájlokba kerül, amelyeket később megtekinthetsz.
Írhatsz egy analysis.out fájlt, amely olyan hibakeresési információkat tartalmaz, amelyeket később meg szeretnél nézni.
Mielőtt elemzőt építesz, olvasd el az elemzőkre vonatkozó útmutatónkat.