4 Stimmen

Wie man das APT-Tool zur Erstellung von Übungen im Kursmaterial verwendet

Ich bin gerade dabei, Übungen zu erstellen, wie man ein Plug-in für ein Systemintegrationswerkzeug schreibt. Wir werden die korrekten Antworten für die Demonstration nach den Übungen implementieren, aber die Studenten werden einen Quelltext erhalten, in dem einige Methoden leer sind und nur einen Kommentar mit einem TODO enthalten, der beschreibt, was sie tun sollen.

Um Doppelarbeit zu vermeiden, wäre es schön, wenn die Schülerversionen aus den kompilierbaren und korrekten Antwort-Quelldateien erstellt werden könnten. Mir ist aufgefallen, dass das Java Annotation Processing Tool (das APT, nicht das debian APT) möglicherweise verwendet werden könnte, um die Übungen zu generieren, damit APT Methoden als leer ausspuckt, wenn die Eingabemethode eine entsprechende Annotation trägt.

Ist es möglich, dies mit APT zu tun? Wenn ja, wie würde man es tun?

Gibt es bessere/einfachere Möglichkeiten, Doppelarbeit zu vermeiden und die Übungen und richtigen Antworten aus einer einzigen Quelle zu generieren, die ich übersehe?

2voto

McDowell Punkte 105255

Die APT scheint mir nicht der ideale Weg zu sein, um dies zu tun, obwohl es möglich wäre. Im Allgemeinen soll die APT nur dazu dienen, neue Artefakte zu erzeugen, und bietet eine begrenzte Menge an strukturellen Informationen . Zum AST-Baum gelangen Sie nur über Compiler-spezifische Hacks (als Projekt Lombok tut).

1voto

BenM Punkte 4006

Ich bin mir nicht sicher, ob APT dies tun kann, da man Zugriff auf den Quellcode benötigt, um die Ergebnisse auszuspucken.

Wahrscheinlich ist es besser, ein einfaches Programm zu verwenden, das Methoden mit dem vorangestellten Kommentar erkennt und den Inhalt der öffnenden und schließenden Klammern durch einen Platzhalter für die Studenten ersetzt.

Eine Alternative und wahrscheinlich ein einfacherer Mechanismus wäre die Verwendung eines benutzerdefinierten Kommentars, um die zu ersetzenden Bereiche zu markieren und dann einfach diese Datei zu verarbeiten, um die Ergebnisse zu erhalten. Z.B..

public class SomeClass {
   public SomeClass() {
      // real code here
   }

   public void someMethod() {
      //EXERCISE:START
      System.out("put some real compilable code here, "+
                 "that students will have to implement themselves");
      //EXERCISE:END
   }
}

Sie können dann mit einem einfachen Code die Kommentare und den Inhalt zwischen ihnen entfernen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X