# Personal Prof Rascal implementation of a simple rule checker for student Java assignments. ## Running the rule checker 1. Run the script $ ./run.sh For example $ ./run.sh hangman /home/mkl/radboud/teaching/object-orientation/oo-grading-2019/assignment02/thout/70827-16116\ -\ Asgn\ CS\ Group\ 125\ -\ Jordy\ Schoolmeesters\ -\ Feb\ 10\,\ 2019\ 22_55/ Version: 0.13.0-SNAPSHOT error("All I/O should happen in the view class",|java+class:///a2/Gallows|) error("Always explicitly specify access modifiers: public, protected, or private",|java+field:///a2/User/input|) ## Running the test cases There are some test projects and test cases to check that the rules give correct error messages. To run the tests, use the test script. The test script looks for all files `*Spec.rsc` and executes them $ ./test.sh To test only specific files, specify them on the command line. $ ./test.sh Assignment02RulesSpec.rsc Assignment03RulesSpec.rsc ## Developing the rules To develop rascal code, use eclipse-rcp. Follow the instructions here: https://www.rascal-mpl.org/start/ # Running The Brightspace Integration 1. Clone repository $ git clone --recurse-submodules https://gitlab.science.ru.nl/mklinik/personal-prof.git $ cd personal-prof 3. Optional: Run tests $ ./test.sh 4. Create config directories $ mkdir -p ~/.config/grading-tools $ mkdir -p ~/.config/personal-prof 5. Copy config files to config direcotries $ cd brightspace-integration $ cp app.json.config ~/.config/personal-prof $ cp brightspace-grading-tool/grading-tool-python/app.json.config.default ~/.config/grading-tools/app.json.config 6. Edit config files $ vim ~/.config/personal-prof/app.json.config $ vim ~/.config/grading-tools/app.json.config 7. Install d2lvalence python module $ pip3 install D2LValence 8. Log in $ cd brightspace-grading-tool/grading-tool-python/ $ ./no-bs login-manual 9. See if it works $ ./no-bs list-courses $ ./no-bs list-folders 9. Start the server $ export PYTHONPATH=`readlink -f brightspace-grading-tool/grading-tool-python` $ screen $ ./personal-prof run ... ## References - Rascal official website https://www.rascal-mpl.org/ - Rascal github https://github.com/usethesource/rascal - Rascal documentation http://tutor.rascal-mpl.org/Rascal/Rascal.html