Science Score: 57.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 5 DOI reference(s) in README -
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (18.0%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
:detective: Source code plagiarism detection
Basic Info
- Host: GitHub
- Owner: dodona-edu
- License: mit
- Language: TypeScript
- Default Branch: main
- Homepage: https://dolos.ugent.be
- Size: 43.5 MB
Statistics
- Stars: 303
- Watchers: 6
- Forks: 44
- Open Issues: 80
- Releases: 30
Topics
Metadata Files
README.md
Dolos
Dolos is a source code plagiarism detection tool for programming exercises. Dolos helps teachers in discovering students sharing solutions, even if they are modified. By providing interactive visualizations, Dolos can also be used to sensitize students to prevent plagiarism.
Dolos aims to be:
- Easy to use by offering a web app with an intuitive user interface
- Flexible to support many programming languages
- Powerful by using state-of-the-art algorithms to help you discover plagiarism
Dolos is a web app that analyses source code files for similarities between them. In addition, it offers a command-line interface to run an analysis locally, showing the interactive user interface in your browser by launching a local webserver. The analysis results are available in machine readable CSV files and Dolos can be integrated as a JavaScript library in other applications empowering users to integrate plagiarism detection in their personal workflow.
You can use our free to use instance of Dolos on https://dolos.ugent.be.
Self-hosting Dolos
As Dolos is open source, it is also possible to host the Dolos web app.
Follow our instructions on https://dolos.ugent.be/docs.
Local installation with Dolos CLI
If you want to run the Dolos CLI instead of using the web app, you can install Dolos CLI your system using npm:
shell
npm install -g @dodona/dolos
See the installation instructions on our website for more complete instructions.
Usage
Dolos can be launched using the command-line interface, but it is able to show the results in your browser.
Launch Dolos using the following command in your terminal:
shell
dolos run -f web path/to/your/files/*
This will launch a web interface with the analysis results at http://localhost:3000.
More elaborate instructions on how to use Dolos.
Documentation
Visit our web page at https://dolos.ugent.be/docs.
Building and developing
To develop the parsers, library or CLI components, you will need to clone this repository recursively to include its submodules (the tree-sitter parsers):
```sh git clone --recursive git://github.com/dodona-edu/dolos.git
or, if you have cloned the repository already:
git submodule update --init --recursive ```
You only need to run install the dependencies once in the repository root by
running npm install. This will install all dependencies and link them in each
project's node_modules. You should not run npm install in each project's directory separately.
This will also link the dist folder from the core, lib and web projects as their versions match in the package.json file.
This allows you to simultaneously develop the CLI, lib and the web project together.
Each component has its own build instructions in its own directory.
Local installation using Docker
The latest Dolos version comes pre-installed in a Docker container image that is available from GitHub's container registry. Use the following command to pull the image:
shell
docker pull ghcr.io/dodona-edu/dolos-cli:latest
Next, you can run an analysis with Dolos and start a web server to view the results using the following docker command:
shell
docker run --init --network host -v "$PWD:/dolos" dodona/dolos -l javascript -f web *.js
The arguments passed to docker serve the following purpose:
- --init will make sure stopping the container with Control-C works
- --network host allows Dolos's webserver to bind to http://localhost:3000
- -v "$PWD:/dolos" gives Dolos acces to your current directory
Components
- CLI: the command-line interface
- Core: the Javascript library with only the core algorithms
- Parsers: the tree-sitter parsers vendored by Dolos
- Lib: the Node.js library which can parse and analyze files
- Web: the graphical user interface in your browser which can be launched using the CLI
- Docs: the source code of https://dolos.ugent.be
- API: the API server running the Dolos web app at https://dolos.ugent.be/server
Who made this software?
Dolos is an active research project by Team Dodona at Ghent University. If you use this software for your research, please cite:
- Maertens et. al. (2024) SoftwareX doi:10.1016/j.softx.2024.101755
Owner
- Name: Dodona
- Login: dodona-edu
- Kind: organization
- Email: dodona@ugent.be
- Location: Ghent, Belgium
- Website: https://dodona.ugent.be
- Twitter: DodonaEdu
- Repositories: 20
- Profile: https://github.com/dodona-edu
Citation (CITATION.cff)
cff-version: 1.2.0
title: Dolos
message: >-
If you use this software in your research, please cite it
as below.
type: software
authors:
- family-names: Maertens
given-names: Rien
orcid: 'https://orcid.org/0000-0002-2927-3032'
- family-names: Van Petegem
given-names: Charlotte
orcid: 'https://orcid.org/0000-0003-0779-4897'
- family-names: Strijbol
given-names: Niko
orcid: 'https://orcid.org/0000-0002-3161-174X'
- family-names: Baeyens
given-names: Toon
orcid: 'https://orcid.org/0000-0002-2069-7824'
- given-names: Maarten
family-names: Van Neyghem
orcid: 'https://orcid.org/0009-0007-1804-4211'
- given-names: Maxiem
family-names: Geldhof
orcid: 'https://orcid.org/0009-0002-6988-7220'
- family-names: Jacobs
given-names: Arne Carla
orcid: 'https://orcid.org/0000-0003-0412-9648'
- family-names: Dawyndt
given-names: Peter
orcid: 'https://orcid.org/0000-0002-1623-9070'
- family-names: Mesuere
given-names: Bart
orcid: 'https://orcid.org/0000-0003-0610-3441'
identifiers:
- type: doi
value: 10.1016/j.softx.2024.101755
description: >-
Discovering and exploring cases of educational source
code plagiarism with Dolos - SoftwareX
- type: doi
value: 10.1111/jcal.12662
description: >-
Dolos: Language-agnostic plagiarism detection in
source code - Journal of Computer Assisted Learning
- type: doi
value: 10.5281/zenodo.7966722
description: Zenodo
repository-code: 'https://github.com/dodona-edu/dolos'
url: 'https://dolos.ugent.be'
abstract: >-
Dolos is a source code plagiarism detection tool designed
to be as effective as possible to use.
keywords:
- plagiarism detection
- source code analysis
- education
- code similarity
license: MIT
preferred-citation:
type: article
doi: 10.1016/j.softx.2024.101755
journal: SoftwareX
title: 'Discovering and exploring cases of educational source code plagiarism with Dolos'
authors:
- family-names: Maertens
given-names: Rien
orcid: 'https://orcid.org/0000-0002-2927-3032'
- given-names: Maarten
family-names: Van Neyghem
orcid: 'https://orcid.org/0009-0007-1804-4211'
- given-names: Maxiem
family-names: Geldhof
orcid: 'https://orcid.org/0009-0002-6988-7220'
- family-names: Van Petegem
given-names: Charlotte
orcid: 'https://orcid.org/0000-0003-0779-4897'
- family-names: Strijbol
given-names: Niko
orcid: 'https://orcid.org/0000-0002-3161-174X'
- family-names: Dawyndt
given-names: Peter
orcid: 'https://orcid.org/0000-0002-1623-9070'
- family-names: Mesuere
given-names: Bart
orcid: 'https://orcid.org/0000-0003-0610-3441'
year: 2024
GitHub Events
Total
- Create event: 130
- Release event: 4
- Issues event: 13
- Watch event: 45
- Delete event: 122
- Member event: 2
- Issue comment event: 86
- Push event: 371
- Pull request review comment event: 11
- Pull request review event: 60
- Pull request event: 144
- Fork event: 13
Last Year
- Create event: 130
- Release event: 4
- Issues event: 13
- Watch event: 45
- Delete event: 122
- Member event: 2
- Issue comment event: 86
- Push event: 371
- Pull request review comment event: 11
- Pull request review event: 60
- Pull request event: 144
- Fork event: 13
Committers
Last synced: 9 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Rien Maertens | r****s@p****e | 804 |
| maarten.vanneyghem | m****m@s****e | 544 |
| renovate[bot] | 2****] | 434 |
| Arne Jacobs | a****s@u****e | 282 |
| AurisAudentis | m****m@m****m | 267 |
| dependabot[bot] | 4****] | 84 |
| Bart Mesuere | B****e@U****e | 55 |
| dependabot-preview[bot] | 2****] | 26 |
| Toon Baeyens | t****s@u****e | 24 |
| Peter Dawyndt | P****t@U****e | 14 |
| Michiel Lachaert | m****t@u****e | 13 |
| Gustafsson Mikael | g****4@c****i | 10 |
| baconandchips | 1****s | 9 |
| Floris Westerman | me@f****l | 3 |
| klassiker | 6****r | 3 |
| Arne Jacobs | 3****d | 1 |
| Charlotte Van Petegem | c****m@u****e | 1 |
| Eriq Augustine | e****e@g****m | 1 |
| Radim Kliment | r****t@g****m | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 119
- Total pull requests: 597
- Average time to close issues: 4 months
- Average time to close pull requests: 18 days
- Total issue authors: 32
- Total pull request authors: 13
- Average comments per issue: 1.54
- Average comments per pull request: 0.43
- Merged pull requests: 466
- Bot issues: 2
- Bot pull requests: 476
Past Year
- Issues: 17
- Pull requests: 142
- Average time to close issues: 6 days
- Average time to close pull requests: about 1 month
- Issue authors: 8
- Pull request authors: 8
- Average comments per issue: 1.06
- Average comments per pull request: 0.73
- Merged pull requests: 86
- Bot issues: 0
- Bot pull requests: 104
Top Authors
Issue Authors
- rien (48)
- pdawyndt (26)
- BTWS2 (8)
- mikaelGusse (4)
- renovate[bot] (3)
- maartenvn (2)
- bmesuere (1)
- daotrungkien (1)
- WLamotte (1)
- adriaanjacobs (1)
- fatenocaster (1)
- PrajjwalDatir (1)
- Kobzol (1)
- ksrnnb (1)
- bestchai (1)
Pull Request Authors
- renovate[bot] (546)
- rien (124)
- dependabot[bot] (91)
- mikaelGusse (12)
- maartenvn (11)
- chouenyu0808 (6)
- FWest98 (6)
- milachae (4)
- eriq-augustine (2)
- toonijn (1)
- BWindey (1)
- chvp (1)
- bmesuere (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 5
-
Total downloads:
- npm 1,832 last-month
-
Total dependent packages: 8
(may contain duplicates) -
Total dependent repositories: 3
(may contain duplicates) - Total versions: 131
- Total maintainers: 6
npmjs.org: @dodona/dolos-lib
Code similarity detection based on the Winnowing algorithm
- Homepage: https://dolos.ugent.be
- License: MIT
-
Latest release: 3.5.0
published about 1 year ago
Rankings
npmjs.org: @dodona/dolos-web
Web UI for the Dolos plagiarism detection tool.
- Homepage: https://dolos.ugent.be
- License: MIT
-
Latest release: 2.9.2
published 11 months ago
Rankings
proxy.golang.org: github.com/dodona-edu/dolos
- Homepage: https://github.com/dodona-edu/dolos
- Documentation: https://pkg.go.dev/github.com/dodona-edu/dolos#section-documentation
- License: MIT
-
Latest release: v2.9.2+incompatible
published 11 months ago
Rankings
npmjs.org: @dodona/dolos
Code similarity detection based on the Winnowing algorithm
- Homepage: https://dolos.ugent.be
- License: MIT
-
Latest release: 2.9.2
published 11 months ago
Rankings
npmjs.org: @dodona/dolos-core
Core classes and algorithms for Dolos source code similarity checker
- Homepage: https://dolos.ugent.be
- License: MIT
-
Latest release: 1.2.0
published over 1 year ago
Rankings
Dependencies
- JS-DevTools/npm-publish v1 composite
- actions/cache v3 composite
- actions/checkout v3 composite
- actions/setup-node v3.6.0 composite
- release-drafter/release-drafter v5 composite
- actions/checkout v3 composite
- github/codeql-action/analyze v2 composite
- github/codeql-action/init v2 composite
- node 18-alpine3.16 build
- @types/express 4.17.15 development
- @types/node 18.11.18 development
- @typescript-eslint/eslint-plugin 5.49.0 development
- @typescript-eslint/parser 5.49.0 development
- eslint 8.33.0 development
- np 7.6.3 development
- ts-node 10.9.1 development
- typescript 4.9.4 development
- @dodona/dolos-lib 2.0.2
- @dodona/dolos-web 2.0.2
- @elm-tooling/tree-sitter-elm ^5.6.0
- chalk ^4.1.1
- cliui ^8.0.0
- commander ^10.0.0
- csv-stringify ^6.2.0
- express ^4.17.1
- open ^8.2.1
- tree-sitter ^0.20.0
- tree-sitter-bash ^0.19.0
- tree-sitter-c ^0.20.1
- tree-sitter-c-sharp ^0.20.0
- tree-sitter-cpp ^0.20.0
- tree-sitter-java ^0.19.1
- tree-sitter-javascript ^0.19.0
- tree-sitter-php ^0.19.0
- tree-sitter-python ^0.20.1
- tree-sitter-typescript ^0.20.0
- @vuepress/plugin-search 2.0.0-beta.53 development
- vuepress 2.0.0-beta.53 development
- 218 dependencies
- @types/benchmark 2.1.2 development
- @types/d3-dsv 2.0.3 development
- @types/node 18.11.18 development
- @typescript-eslint/eslint-plugin 5.49.0 development
- @typescript-eslint/parser 5.49.0 development
- ava 5.1.1 development
- benchmark 2.1.4 development
- eslint 8.33.0 development
- np 7.6.3 development
- nyc 15.1.0 development
- ts-node 10.9.1 development
- typescript 4.9.4 development
- d3-dsv ^2.0.0
- @types/d3 7.4.0 development
- @types/luxon 3.2.0 development
- @types/papaparse 5.3.7 development
- @types/prismjs 1.26.0 development
- @typescript-eslint/eslint-plugin 5.49.0 development
- @typescript-eslint/parser 5.49.0 development
- @vue/cli 5.0.8 development
- @vue/cli-plugin-babel 5.0.8 development
- @vue/cli-plugin-eslint 5.0.8 development
- @vue/cli-plugin-router 5.0.8 development
- @vue/cli-plugin-typescript 5.0.8 development
- @vue/cli-service 5.0.8 development
- @vue/eslint-config-standard 8.0.1 development
- @vue/eslint-config-typescript 11.0.2 development
- assert 2.0.0 development
- core-js 3.27.2 development
- eslint 8.33.0 development
- eslint-plugin-import 2.27.5 development
- eslint-plugin-node 11.1.0 development
- eslint-plugin-promise 6.1.1 development
- eslint-plugin-standard 5.0.0 development
- eslint-plugin-vue 9.9.0 development
- monaco-editor-webpack-plugin 7.0.1 development
- np 7.6.3 development
- sass 1.32.13 development
- sass-loader 13.2.0 development
- typescript 4.9.4 development
- unique-names-generator ^4.7.1 development
- unplugin-vue-components ^0.23.0 development
- vue-cli-plugin-vuetify 2.5.8 development
- vuetify-loader 1.9.2 development
- @dodona/dolos-lib 2.0.2
- @mdi/font ^7.0.96
- @vueuse/core ^9.0.2
- comlink ^4.3.1
- d3 ^7.0.0
- luxon ^3.0.1
- monaco-editor ^0.34.0
- papaparse ^5.3.2
- pinia ^2.0.23
- prismjs ^1.20.0
- roboto-fontface *
- vue ^2.7.13
- vue-router ^3.5.1
- vuetify ^2.6.10
- 1727 dependencies
- ruby 3.2.2 build
- mariadb latest
- @ava/typescript 4.1.0 development
- @typescript-eslint/eslint-plugin 5.62.0 development
- @typescript-eslint/parser 5.62.0 development
- ava 5.3.1 development
- eslint 8.44.0 development
- typescript 5.1.6 development
- annotate ~> 3.2 development
- capistrano ~> 3.10 development
- capistrano-passenger ~> 0.2.1 development
- capistrano-rails ~> 1.6.2 development
- capistrano-rvm ~> 0.1.2 development
- factory_bot_rails ~> 6.2.0 development
- faker ~> 2.23.0 development
- mocha ~> 2.1.0 development
- rubocop-minitest ~> 0.31.0 development
- rubocop-rails ~> 2.15 development
- active_model_serializers ~> 0.10
- active_storage_validations ~> 1.0
- bcrypt_pbkdf >= 0
- bootsnap >= 0
- capistrano-yarn ~> 2.0.2
- capistrano3-delayed-job ~> 1.7.6
- delayed_job_active_record >= 0
- docker-api ~> 2.2.0
- ed25519 >= 0
- mysql2 ~> 0.5
- puma ~> 5.0
- rack-cors >= 0
- rails ~> 7.0.4
- rubyzip ~> 2.3
- actioncable 7.0.7.2
- actionmailbox 7.0.7.2
- actionmailer 7.0.7.2
- actionpack 7.0.7.2
- actiontext 7.0.7.2
- actionview 7.0.7.2
- active_model_serializers 0.10.13
- active_storage_validations 1.0.4
- activejob 7.0.7.2
- activemodel 7.0.7.2
- activerecord 7.0.7.2
- activestorage 7.0.7.2
- activesupport 7.0.7.2
- airbrussh 1.4.1
- annotate 3.2.0
- ast 2.4.2
- bcrypt_pbkdf 1.1.0
- bootsnap 1.16.0
- builder 3.2.4
- bundler 2.3.26
- capistrano 3.17.3
- capistrano-bundler 2.1.0
- capistrano-passenger 0.2.1
- capistrano-rails 1.6.3
- capistrano-rvm 0.1.2
- capistrano-yarn 2.0.2
- capistrano3-delayed-job 1.7.6
- case_transform 0.2
- concurrent-ruby 1.2.2
- crass 1.0.6
- daemons 1.4.1
- date 3.3.3
- debug 1.8.0
- delayed_job 4.1.11
- delayed_job_active_record 4.1.7
- docker-api 2.2.0
- ed25519 1.3.0
- erubi 1.12.0
- excon 0.99.0
- factory_bot 6.2.1
- factory_bot_rails 6.2.0
- faker 2.23.0
- globalid 1.1.0
- i18n 1.14.1
- io-console 0.6.0
- irb 1.6.4
- json 2.6.3
- jsonapi-renderer 0.2.2
- language_server-protocol 3.17.0.3
- loofah 2.21.3
- mail 2.8.1
- marcel 1.0.2
- method_source 1.0.0
- mini_mime 1.1.5
- mini_portile2 2.8.4
- minitest 5.19.0
- mocha 2.1.0
- msgpack 1.7.1
- multi_json 1.15.0
- mysql2 0.5.5
- net-imap 0.3.7
- net-pop 0.1.2
- net-protocol 0.2.1
- net-scp 4.0.0
- net-smtp 0.3.3
- net-ssh 7.1.0
- nio4r 2.5.9
- nokogiri 1.15.4
- parallel 1.23.0
- parser 3.2.2.3
- puma 5.6.7
- racc 1.7.1
- rack 2.2.8
- rack-cors 2.0.1
- rack-test 2.1.0
- rails 7.0.7.2
- rails-dom-testing 2.2.0
- rails-html-sanitizer 1.6.0
- railties 7.0.7.2
- rainbow 3.1.1
- rake 13.0.6
- regexp_parser 2.8.1
- reline 0.3.4
- rexml 3.2.6
- rubocop 1.55.1
- rubocop-ast 1.29.0
- rubocop-minitest 0.31.0
- rubocop-rails 2.19.1
- ruby-progressbar 1.13.0
- ruby2_keywords 0.0.5
- rubyzip 2.3.2
- sshkit 1.21.5
- thor 1.2.2
- timeout 0.3.2
- tzinfo 2.0.6
- unicode-display_width 2.4.2
- websocket-driver 0.7.6
- websocket-extensions 0.1.5
- zeitwerk 2.6.11