CLI Reference
The Analogi.CLI project provides a command-line interface for batch processing.
Usage
dotnet run --project Analogi.CLI -- <folder-path> [options]
Options
| Flag | Short | Description |
|---|---|---|
--submissions |
-s |
Treat subfolders as student submissions |
--top N |
-n N |
Show top N results (default: 10) |
Examples
File Mode
Compare all source files in a flat directory:
dotnet run --project Analogi.CLI -- ./assignments/ --top 5
Output:
Scanning files: ./assignments/
Done. 10 files, 45 pairs in 60ms.
Top 5 results:
----------------------------------------------------------------------
student1.cpp <-> student2.cpp: 95% (Extreme)
[CosineSimilarity] Code cosine similarity: 98%
[Winnowing] Winnowing fingerprint overlap: 92%
[StructureSimilarity] Function name overlap (Jaccard): 100%
Submission Mode
Compare student submission folders (each subfolder = one student):
dotnet run --project Analogi.CLI -- ./submissions/ --submissions --top 5
submissions/
├── alice/
│ ├── main.cpp
│ └── util.cpp
├── bob/
│ ├── solution.cpp
│ └── helper.cpp
└── charlie/
└── program.cpp
Output includes which specific files matched across submissions:
alice <-> bob: 87% (VeryHigh)
Files: 2 vs 2 | Matching file pairs: 3
[CosineSimilarity] Code cosine similarity: 89%
[Winnowing] Winnowing fingerprint overlap: 78%
Exit Codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Error (invalid path, no arguments) |
Integration with CI
You can use the CLI in automated grading pipelines:
# Run and fail if any pair exceeds 80% similarity
dotnet run --project Analogi.CLI -- ./submissions/ -s -n 100 | grep -q "Extreme\|VeryHigh" && echo "ALERT: High similarity detected"