runMoss — Run moss on a collection of student submissions


runMoss [[-d directory] | [-a term assignment]...] [assignment] {"moss_options"}


At least one specifier for a directory is required. This can be any of the following:


Submit all submissions in the subdirectories of /u/csXXX/handin/assignment

-a term assignment

Submit all submissions in the subdirectories of /u/csXXX/archives/term/handin/assignment

-d directory

Submit all submissions in the subdirectories of directory

The final parameter is always required. It is a quoted list of options to mass to moss, with the understanding that -d tmpdir/*/* will be passed as the final arguments to moss automatically. The documentation of the moss options are within the comments at the top of /u/cs_build/bin/moss_for_linux.

Example Usage

runMoss -a 1075 04 04 '-l ascii'

Runs moss in the ASCII language on submissions of assignment 04 in the current term as well as submissions of assignment 04 from Spring 2007.

runMoss -d /u/`whoami`/submissions_for_moss '-l java -m 100000 -n 1000'

Runs moss on submissions contained in the submissions_for_moss subdirectory of the course account's home directory. The options to moss tell it to run in the language java with essentially no inclination to ignore regularly occurring patterns, and to report 1000 matches instead of the normal 250. This can be particularly useful for large courses when used with the filtering capabilities of moss_makereadable.

perl -e '$count=0; while (1) { print "r\nRENAMED" . ++$count . "\n"; }' | runMoss 03 '-l cc'

Runs moss on submissions of assignment 03 in the language C++. The interactive prompting for students not in the classlist files is bypassed by piping input to runMoss that will automatically rename students.

NOTE: While moss claims to support the scheme language, it frequently returns no results even when there are clear cases. It's recommended also to do another run with the ascii language to ensure you are not missing matches.


As the program runs, output will indicate where every student directory is copied. If there is a duplicate student (ie, repeating from a previous term which is also being mossed) then _1, _2 and so on will be appended to the student number for each instance. All of the classlists on the invoking course account will be searched to do the userid to student number translation. If a student isn't found, then the user will be prompted to take one of four actions: abort running runMoss entirely, continue without taking any action, delete the student from the temporary directory, or rename the student to some other provided name.

Next, each of these directories will be examined to ensure they only contain text files, as moss will terminate abruptly if it encounters anything else. The actions taken are to remove all binary files from submissions and to flatten directory hierarchies. The removal of binary files must be done; if you want something different than flattening done, you will need to preprocess the submissions yourself and then use the -d option to tell runMoss where to find the modified files.

After this is complete, all of the files will be uploaded to the moss server using the provided options. At the end of this output will be a URL which can be viewed to see the moss program's results.

Topic revision: r1 - 2016-01-11 - YiLee
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback