eprcheck_2019.py | ||
eprgrader.py | ||
LICENSE-eprgrader | ||
README.md | ||
violation_checker.py |
eprgrader
Ein Tool, um die Bewertung von EPR-Abgaben (und auch GPR-Abgaben) zu beschleunigen.
Installation
- Legt
eprgrader.py
(das eigentliche Programm),eprcheck_2019.py
(das pylint-Plugin für die Author-Variable) undviolation_checker.py
(Klasse um die Stylefehler zusammenzuzählen) im selben Verzeichnis ab. - Wenn ihr den automatischen Style-Check benutzen wollt, installiert folgendes via
pip
:pip install pylint==2.15.0 pycodestyle==2.8.0 astroid==2.13.5 openpyxl pandas
Zu Beginn
Ladet die ZIP-Datei(en) mit den Abgaben für eure Gruppe(n), die Gesamtbewertung (.csv Datei) für eure Gruppe(n) sowie die Bewertungstabelle herunter. Legt ein Verzeichnis für das Übungsblatt an, und dann einen Unterordner für jedes eurer Tutorien. Legt die Abgaben-Zips und die Gesamtbewertungen in die jeweiligen Ordner. Das ganze sollte jetzt in etwa so aussehen:
blatt0
|-- Bewertungstabelle_EPR_0.xlsx
|-- EPR01
| `-- EPR-2021-Abgabe zu EPR_00-EPR 01 - H 7 - Adrian-88422.zip
| `-- Bewertungen-EPR 2021-Abgabe zu EPR_00-EPR 01 - H 7 - Adrian-88422.csv
`-- EPR02
`-- EPR-2021-Abgabe zu EPR_00-EPR 02 - H 6 - Adrian-88422.zip
`-- Bewertungen-EPR 2021-Abgabe zu EPR_00-EPR 02 - H 6 - Adrian-88422.csv
Führt jetzt den Startbefehl aus:
cd ...\Tutorium\blatt0
python eprgrader.py begin --table Bewertungstabelle_EPR_0.xlsx
Zusätzliche Optionen:
--no-stylecheck
: Überspringt die PEP8-Prüfung und verhindert das Anlegen derstylecheck.txt
-Dateien für jede Abgabe.--pairs
: Überprüft die__author__
-Variable nach dem Format für Paaraufgaben.--no-deduction
: Wenn es noch keinen Abzug für Stylefehler gibt.
Hierdurch werden alle zip-Archive entpackt, die Bewertungstabellen kopiert und für jeden Teilnehmer entsprechend umbenannt, und ggf. der Stylechecker ausgeführt.
Wenn der Stylechecker ausgeführt, wird außerdem direkt der Abzug berechnet und in die Bewertungstabelle eingetragen. Die überprüften Stylefehler werden dabei in Gruppen eingeteilt und dann innerhalb dieser Gruppen zusammengezählt. Wie die Fehlergruppen eingeteilt sind und wie viel Abzug es gibt, kann man in der violation_checker.py Datei anpassen.
Damit der Abzug automatisch eingetragen werden kann, muss es folgende Zellen geben:
__author__
falsch (Abzug für Fehler bei der author Variable)- ...alle
o.g. Fehler
sind gleichbedeutend... (Abzug für Stylefehler) Abzug bei
mangelnden Kommentaren... (Abzug für Docstrings)
Markiert sind dabei die Stellen, nach welchen explizit gesucht wird.
Style-Prüfung erneut ausführen
Bei Bedarf kann die Style-Prüfung erneut ausgeführt werden. Dabei werden alle bestehenden
stylecheck.txt
-Dateien überschrieben.
Die Punkte werden aber nicht mehr in die Bewertungstabellen eingetragen
cd ...\Tutorium\blatt0
python eprgrader.py relint
Zusätzliche Optionen:
--pairs
: Überprüft die__author__
-Variable nach dem Format für Paaraufgaben.--no-deduction
: Wenn es noch keinen Abzug für Stylefehler gibt.
Abschluss
Am Ende können die Bewertungsdateien (Glob-Pattern Bewertung *
) sowie die stylecheck.txt
für jeden Teilnehmer zusammengesammelt und für den Upload als Feedback-Datei wieder zusammengepackt
werden.
Wenn die Gesamtbewertungstabellen in den Ordnern sind, wird die Gesamtpunktzahl von allen
Einzelbewertungen ausgelesen und in die csv Datei eingefügt. Dafür muss es die Zelle Summe
geben.
Achtung: das funktioniert nur für die Einzelabgaben sinnvoll!
cd ...\Tutorium\blatt0
python eprgrader.py finalise
Nun sollte sich in jedem Tutoriums-Unterordner eine neue Zip-Datei finden, die den Namen
des Tutoriums trägt (z. B. EPR02.zip
). Diese kann über die Moodle-Option "Mehrere Feedbackdateien
in einer Zip-Datei hochladen" hochgeladen werden.
Die Gesamtbewertungstabelle kann unter "Bewertungstabelle hochladen" hochgeladen werden. Dabei
muss der Haken bei "Update von Datensätzen zulassen, ..." gesetzt werden.
Änderung der Style-Einstellungen
Die Style-Einstellungen (welche Checks aktiviert bzw. deaktiviert sind) habe ich letztes Jahr
mal nach eigenem Empfinden zusammengestellt. (Es wird deutlich mehr überprüft, als laut unseren
Richtlinien zu Punktabzug führt.) Die aktivierten Checker sind relativ weit oben in eprgrader.py
konfiguriert, in den Listen PYLINT_OPTIONS
und PYCODESTYLE_SELECT
.
Bei Problemen
eprgrader.py
gibt sich Mühe, auch zip-Dateien mit vergurksten Dateinamen zu entpacken (passiert
meistens, wenn Mac- oder Linux-Nutzer Umlaute in ihren Dateinamen haben), und die Dateinamen
dabei zu reparieren. Manche sind aber so kaputt, dass das Tool einfach abstürzt. In dem Fall
hilft nur, die betroffene Datei aus dem heruntergeladenen Zip zu entfernen und nochmal von vorne
anzufangen. Danach kann man die kaputte Datei von Hand ergänzen und ggf. den relint
-Befehl nutzen.
Bei anderen Problemen, merkt es unter Issues in dem Repo an.