Alle Interaktionen mit der Exercism-Website werden automatisch abgewickelt. Analyzer haben die einzige Aufgabe, eine Lösung entgegenzunehmen und einen Status sowie eventuelle Nachrichten zurückzugeben.
two-fer).analysis.json in das Ausgabeverzeichnis schreiben.tags.json in das Ausgabeverzeichnis schreiben.Der Analyzer erhält für einen Zeitraum von 20 Sekunden pro Lösung 100 % der Maschinenressourcen. Nach 20 Sekunden wird der Prozess angehalten und meldet eine Zeitüberschreitung.
Wir empfehlen dir dringend, unser Dokument mit bewährten Methoden zur Performance zu befolgen, um die Wahrscheinlichkeit von Zeitüberschreitungen zu verringern.
Die Datei analysis.json sollte wie folgt aufgebaut sein:
{
"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 (optional)Das Feld summary ist ein Textfeld (kein Markdown), das die Ausgabe zusammenfasst.
Es könnte zum Beispiel so etwas sagen wie „Deine Lösung ist fast am Ziel, du musst nur noch zwei kleine Änderungen vornehmen.“ oder „Der Code funktioniert großartig, aber es gibt noch ein wenig Linting, das erledigt werden muss.“.
Diese Zusammenfassung wird auf der Website über den Kommentaren angezeigt.
commentsDas Feld comments ist ein Array von Kommentaren, die auf Markdown-Dokumente in exercism/website-copy verweisen (siehe Analyzer-Kommentare schreiben für weitere Informationen).
Jeder Wert im Array ist entweder ein Pointer-String oder ein JSON-Objekt mit dem folgenden Format:
commentDer Pointer-String zu einer Datei in website-copy.
params (optional)Ein JSON-Objekt mit beliebigen Parametern, die beim Rendern interpoliert werden sollen.
Zum Beispiel könntest du in der Markdown-Datei Try %{variable_name} += 1 instead schreiben und dann params auf { "variable_name": "foo"} setzen, um %{variable_name} durch die tatsächliche Variable zu ersetzen, die der Lernende verwendet hat.
Wenn du parametrisierte Dateien verwendest, stelle sicher, dass du alle Vorkommen von % maskierst, indem du ein weiteres % davor setzt.
z. B. Try aim aim for 100%% of the tests passing.
type (optional)Die folgenden type-Werte sind gültig:
essential: Wir soft-blocken Lernende, bis sie diesen Kommentar bearbeitet habenactionable: Jeder Kommentar, der einem Nutzer eine konkrete Anweisung gibt, seine Lösung zu verbesserninformative: Kommentare, die Informationen geben, aber nicht unbedingt erwarten, dass die Lernenden sie verwenden. Wenn in Ruby zum Beispiel jemand bei TwoFer String-Verkettung verwendet, weisen wir auch auf String-Formatierung hin, schlagen sie aber nicht als bessere Option vor.celebratory: Kommentare, die Nutzern sagen, dass sie etwas richtig gemacht haben, sei es als allgemeiner Kommentar zur Lösung oder zu einer Technik.Kommentare ohne ein type-Feld verwenden standardmäßig informative .
Derzeit soft-blocken wir auf der Website bei essential-Kommentaren, ermutigen Lernende, actionable-Kommentare abzuschließen, bevor sie Praxisübungen als abgeschlossen markieren (aber nicht Konzeptübungen), schlagen aber bei informative- oder celebratory-Kommentaren keine Aktion vor.
In Zukunft könnten wir jedoch Emojis oder Indikatoren zu anderen Typen hinzufügen oder sie getrennt gruppieren.
Die Datei tags.json sollte wie folgt aufgebaut sein:
{
"tags": [
"construct:list",
"paradigm:functional",
"technique:higher-order-functions",
"uses:List.unfold"
]
}
tagsDas Feld tags ist ein Array von Strings.
Jedes Tag hat das Format: "<category>:<thing>".
Einige Beispiele:
"paradigm:functional""technique:recursion""construct:bitwise-and""uses:DateTime.add_seconds"Tags können verwendet werden, um zu erkennen, welche Konstrukte/Techniken/Paradigmen eine Lösung verwendet.
Weitere Informationen findest du unter Lösungen taggen.
Die Inhalte von stdout und stderr aus jedem Lauf werden in Dateien gespeichert, die später angesehen werden können.
Du kannst eine Datei analysis.out schreiben, die Debugging-Informationen enthält, die du später ansehen möchtest.
Bevor du einen Analyzer baust, lies bitte unsere Analyzer-Richtlinien.