exercism / elixir-representer

GNU Affero General Public License v3.0
11 stars 6 forks source link
community-contributions-accepted exercism-representer exercism-tooling maintained

Representer

To understand the purpose of this project in the context of the exercism submission platform, there are a few documents to review:

Why

Code analysis is tough, and the programming required to create them is complex. Initially the goal of the exercism platform was to provide automated analysis on a wide scale. But while this proved to be successful at a small scale (for now), it also served to prove how complex they are.

So rather than attempting to provide automated analysis, we attempt to normalize submissions to distill the solutions to the general approaches taken, provide feedback on the normalized subset, then memoize the feedback so that when a recongnized solution pattern is submitted, feedback can be replayed from the previous submissions.

Normalization

The role of this service is to take a code submission, and normalize it in the following ways:

Escript

lib/representer/cli.ex

This is the entrypoint for an escript to process the relevant files from the command line.

Git submodule

Some of the tests depend on the /elixir git submodule. Run git submodule update --init --recursive once after cloning this repo to also get the submodule.

To check at which commit the submodule is, run git submodule. To update the submodule to the newest commit, run git submodule update --remote --merge.

The submodule is used only by the tests.