Package: scoss
scossA Source Code Similarity System - SCOSSThere are four supported metrics:count_operator: A metric that counts operators in source-code to calculate similarity score.set_operator: A metric that checks the presence of operators in source-code to calculate similarity score.hash_operator: A metric that uses the combination of adjacent operators to calculate similarity score.SMoss: A wrapper ofMOSS(the same asmosspy).InstallationsThis package requirespython 3.6or later.pipinstallscossUsagesYou can use SCOSS as a Command Line Interface, or a library in your project, or web-app interfaceCommand Line Interface (CLI)See document by passing--helpargument.scoss --help
Usage: scoss [OPTIONS]

Options:
  -i, --input-dir TEXT      Input directory.  [required]
  -o, --output-dir TEXT           Output directory.
  -tc, --threshold-combination [AND|OR]
                                  AND: All metrics are greater than threshold.
                                  OR: At least 1 metric is greater than
                                  threshold.

  -mo, --moss FLOAT RANGE         Use moss metric and set up moss threshold.
  -co, --count-operator FLOAT RANGE
                                  Use count operator metric and set up count
                                  operator threshold.

  -so, --set-operator FLOAT RANGE
                                  Use set operator metric and set up set
                                  operator threshold.

  -ho, --hash-operator FLOAT RANGE
                                  Use hash operator metric and set up hash
                                  operator threshold.

  --help                          Show this message and exit.To get plagiarism report of a directory containing source code files, add-i/ --input-diroption. Add at least 1 similarity metric in [-mo/--moss,-co/--count-operator,-so/--set-operator,-ho/--hash-operator] and its threshold (in range [0,1]). If using 2 or more metrics, you need to define how they should be combined using-tc/--threshold-combination(ANDwill be used by default).Basic command:scoss -i path/to/source_code_dir/ -tc OR -co 0.1 -ho 0.1 -mo 0.1 -o another_path/to/plagiarism_report/Using as a libraryDefine aScossobject and register some metrics:fromscossimportScosssc=Scoss(lang='cpp')# only show pairs that have similarity score > thresholdsc.add_metric('count_operator',threshold=0.7)sc.add_metric('set_operator',threshold=0.5)Register source-codes to definedscossobject:sc.add_file('./tests/data/a.cpp')sc.add_file('./tests/data/b.cpp')sc.add_file('./tests/data/c.cpp')# or add by wide-cardsc.add_file_by_wildcard('./tests/data/problem_A_*.cpp')RunScossand get results:sc.run()# filter results by combine thresholds from different metrics (and_threshold)print(sc.get_matches(and_thresholds=True))The same behaviours is defined inSMoss. You can createSMossobject to use MOSS system.Web-app interfacePlease check our web-app interfacehere.IssuesThis project is in development, if you find any issues, please create an issuehere.ContributorsNgoc Bui,Thai Do,Tran Vien.AcknowledgementsThis project is sponsored and led by Prof. Do Phan Thuan, Hanoi University of Science and Technology.A part of this code adapts this source codehttps://github.com/soachishti/moss.pyas baseline forSMoss.