{"id":18814322,"url":"https://github.com/qw3ry/sigclone","last_synced_at":"2026-05-15T21:32:26.115Z","repository":{"id":211457460,"uuid":"242721163","full_name":"qw3ry/sigclone","owner":"qw3ry","description":"A tool to detect source clones based on method signatures","archived":false,"fork":false,"pushed_at":"2021-02-05T11:23:44.000Z","size":131,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-02T13:33:48.768Z","etag":null,"topics":["clone-detection","code-quality","kotlin","research-project","static-analysis"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qw3ry.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-02-24T11:41:09.000Z","updated_at":"2023-02-13T16:09:06.000Z","dependencies_parsed_at":"2023-12-08T17:38:02.482Z","dependency_job_id":null,"html_url":"https://github.com/qw3ry/sigclone","commit_stats":null,"previous_names":["qw3ry/sigclone"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/qw3ry/sigclone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qw3ry%2Fsigclone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qw3ry%2Fsigclone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qw3ry%2Fsigclone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qw3ry%2Fsigclone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qw3ry","download_url":"https://codeload.github.com/qw3ry/sigclone/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qw3ry%2Fsigclone/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33080777,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T20:25:35.270Z","status":"ssl_error","status_checked_at":"2026-05-15T20:25:34.732Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clone-detection","code-quality","kotlin","research-project","static-analysis"],"created_at":"2024-11-07T23:40:12.526Z","updated_at":"2026-05-15T21:32:26.101Z","avatar_url":"https://github.com/qw3ry.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SigClone - the signature based clone detector\n\nSigClone is a clone detector comparing only method signatures.\nThis allows the detection of truely semantic clones.\n\n## Building\n\nSigClone is built using gradle.\nYou need to build two targets: `jar` and `librariesJar`.\nThe former only builds the source code, the latter creates a jar containing its dependencies.\n\n## Usage\n\nTo execute SigClone, run `java -jar sigclone.jar --help`.\nThe libraries jar created during the build should be included in the classpath automatically.\nWhen called with `--help`, SigClone displays an appropriate help message.\nThis should aid you with the further usage.\n\n## How it works\n\nSigClone is the result of my master thesis, and the details are described in there.\nIt is not currently published, but if you are interested, I can email you a copy, if you reach out to me.\n\nA short overview:\nSigClone extracts the method signatures, consisting of the return type, the method identifier, and the parameters, each consisting of a type and a name.\nThe implicit `this`-parameter is also considered, if applicable.\nThe method signatures are then vectorized and finally compared to each other.\nIf two signatures are similar enough, according to some similarity measure and a threshold, they are considered clones.\nSigClone supports different similarity measures, one of them including an AI trained for natural language processing.\nThe different approaches are described and evaluated in my master thesis.\n\n## FAQ\n\n**What languages does SigClone support?** - Only Java, currently. Feel free to add a parser for your favorite language and file a PR.\n\n**Does my code need to compile?** - No, a compilation is not required. You can easily supply sub-sets of your codebase to SigClone, or even files from different projects.\n\n**What similarity measures are supported?** - In short: Euclidean distance, relative word distance (not an official term), and cosine distance.\nMore detail is available in the code (look [here](https://github.com/qw3ry/sigclone/tree/master/src/main/kotlin/main/runners)), or in my thesis.\nFeel free to code another similarity measure and file a PR.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqw3ry%2Fsigclone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqw3ry%2Fsigclone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqw3ry%2Fsigclone/lists"}