@dodona/dolos

:detective: Source code plagiarism detection

https://github.com/dodona-edu/dolos

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

academic-dishonesty code-similarity collusion-detection dodona education fuzzy-matching hacktoberfest learn-to-code online-learning plagiarism plagiarism-checker plagiarism-checking plagiarism-detection plagiarism-detector plagiarism-prevention software-plagiarism source-code-analysis text-similarity

Keywords from Contributors

cryptocurrencies quantum-circuit xunit-test xunit-framework notebook standardization reactions yolov5 interactive dynamics
Last synced: 6 months ago · JSON representation ·

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
academic-dishonesty code-similarity collusion-detection dodona education fuzzy-matching hacktoberfest learn-to-code online-learning plagiarism plagiarism-checker plagiarism-checking plagiarism-detection plagiarism-detector plagiarism-prevention software-plagiarism source-code-analysis text-similarity
Created over 6 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

Dolos

A plagiarism graph showing a lot of plagiarism.

Current version of the npm package DOI of the latest journal article about Dolos Public chat channel for Dolos MIT source code license

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:

Owner

  • Name: Dodona
  • Login: dodona-edu
  • Kind: organization
  • Email: dodona@ugent.be
  • Location: Ghent, Belgium

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

All Time
  • Total Commits: 2,576
  • Total Committers: 19
  • Avg Commits per committer: 135.579
  • Development Distribution Score (DDS): 0.688
Past Year
  • Commits: 179
  • Committers: 7
  • Avg Commits per committer: 25.571
  • Development Distribution Score (DDS): 0.564
Top Committers
Name Email 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
bug (32) web UI (18) enhancement (14) question (6) student (6) Dolos CLI (4) chore (2) documentation (2) research (2) Dolos API (2) CLI (1) library (1) Dolos library (1) algorithm (1) Dolos parsers (1) dependencies (1)
Pull Request Labels
dependencies (639) ruby (56) enhancement (32) javascript (32) bug (30) web UI (21) chore (19) documentation (17) Dolos library (6) Dolos API (5) Dolos parsers (4) API (3) Dolos web app (3) algorithm (3) docker (2) experiment (2) Dolos CLI (2) library (1) CLI (1)

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

  • Versions: 23
  • Dependent Packages: 3
  • Dependent Repositories: 1
  • Downloads: 869 Last month
Rankings
Stargazers count: 4.5%
Forks count: 5.3%
Dependent packages count: 5.8%
Average: 7.1%
Downloads: 9.2%
Dependent repos count: 10.8%
Last synced: 6 months ago
npmjs.org: @dodona/dolos-web

Web UI for the Dolos plagiarism detection tool.

  • Versions: 33
  • Dependent Packages: 2
  • Dependent Repositories: 1
  • Downloads: 116 Last month
Rankings
Stargazers count: 4.5%
Forks count: 5.3%
Average: 7.7%
Dependent packages count: 8.8%
Downloads: 9.4%
Dependent repos count: 10.8%
Last synced: 6 months ago
proxy.golang.org: github.com/dodona-edu/dolos
  • Versions: 35
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 7.0%
Average: 8.2%
Dependent repos count: 9.3%
Last synced: 6 months ago
npmjs.org: @dodona/dolos

Code similarity detection based on the Winnowing algorithm

  • Versions: 35
  • Dependent Packages: 1
  • Dependent Repositories: 1
  • Downloads: 89 Last month
Rankings
Stargazers count: 4.5%
Forks count: 5.3%
Downloads: 9.7%
Average: 10.3%
Dependent repos count: 10.8%
Dependent packages count: 21.3%
Last synced: 6 months ago
npmjs.org: @dodona/dolos-core

Core classes and algorithms for Dolos source code similarity checker

  • Versions: 5
  • Dependent Packages: 2
  • Dependent Repositories: 0
  • Downloads: 758 Last month
Rankings
Stargazers count: 4.5%
Forks count: 5.2%
Average: 24.9%
Dependent repos count: 37.1%
Dependent packages count: 52.8%
Last synced: 6 months ago

Dependencies

.github/workflows/ci-cd.yml actions
  • 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
.github/workflows/codeql.yml actions
  • actions/checkout v3 composite
  • github/codeql-action/analyze v2 composite
  • github/codeql-action/init v2 composite
docker/Dockerfile docker
  • node 18-alpine3.16 build
cli/package.json npm
  • @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
docs/package.json npm
  • @vuepress/plugin-search 2.0.0-beta.53 development
  • vuepress 2.0.0-beta.53 development
docs/yarn.lock npm
  • 218 dependencies
lib/package.json npm
  • @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
web/package.json npm
  • @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
yarn.lock npm
  • 1727 dependencies
api/Dockerfile docker
  • ruby 3.2.2 build
api/docker-compose.yml docker
  • mariadb latest
core/package.json npm
  • @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
package.json npm
api/Gemfile rubygems
  • 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
api/Gemfile.lock rubygems
  • 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