Exercism C# representer
A representer creates a general representation of a submission, in order to automatically give feedback on similar code.
This repository contains the C# representer, which implements the representer interface. It uses Roslyn to parse the submission's source code into syntax trees, which are then normalized and output as a representation.
Generate a representation for a solution
To create a representation of a solution, follow these steps:
- Open a command prompt in the root directory.
- Run
./generate.ps1 <exercise> <input-directory> <output-directory>
. This script will generate a representation for the solution found in<input-directory>
. - Once the script has completed, the representation will be written to
<output-directory>/representation.txt
.
Generate a representation for multiple solutions
To create representations for multiple solutions at once, follow these steps:
- Open a command prompt in the root directory.
- Run
./generate-in-bulk.ps1 <exercise> <input-directory>
. This script will create a representation for the solution in each directory sub-directory of<input-directory>
. - Once the script has completed, it will:
- Output general statistics to the console.
- Write detailed analysis results to
<solution-directory>/bulk_represent.json
.
Generate a representation for a solution using Docker
To generate a representation for a solution using a Docker container, follow these steps:
- Open a command prompt in the root directory.
- Run
./generate-in-docker.ps1 <exercise> <input-directory> <output-directory>
. This script will:- Build the representer Docker image (if necessary).
- Run the representer Docker image (as a container), passing the specified
exercise
,input-directory
andoutput-directory
arguments.
- Once the script has completed, the representation can be found at
<output-directory>/representation.txt
.
Note that the Docker image is built using the .NET IL Linker, which is why building can be quite slow.
Source code formatting
This repository uses the dotnet-format tool to format the source code. There are no custom rules; we just use the default formatting. You can format the code by running the ./format.ps1
command.
Scripts
The scripts in this repository are written in PowerShell. As PowerShell is cross-platform nowadays, you can also install it on Linux and macOS.