Simian Features

Simian runs under any Java2 Platform 1.4 or higher Java Virtual Machine (JVM), meaning you can use it on Windows, MacOS, Linux, and zOS. The distribution contains everything you need to quickly get started:

Simian supports the following languages:

Full Support:
  • Java
  • C#, C++, C
  • Objective-C
  • JavaScript (ECMAScript)
  • COBOL, ABAP
  • Ruby
  • Lisp
  • SQL
  • Visual Basicv
  • Groovy
  • Swift
Partial Support:
  • JSP
  • ASP
  • HTML
  • XML

If the file is not of a supported type, it will be treated as plain text.

Simian Similarity Analyzer ignores whitespace, curly braces, comments, imports, includes, package declarations, etc.

Simian can analyze almost any type of human-readable file with good results.

Sample Output

Example of the standard output produced by Simian (version 2.6.0) when used to detect duplicate code in the JDK 9 source code. Results may vary depending on factors such as hardware used, number of duplicate lines, etc.

Similarity Analyzer 4.0.0 - https://simian.quandarypeak.com
Copyright (c) 2022-2023 Quandary Peak Research. All rights reserved.
{failOnDuplication=true, ignoreCharacterCase=true, ignoreCurlyBraces=true, ignoreIdentifierCase=true, ignoreModifiers=true, ignoreStringCase=true, threshold=6}
Found 6 duplicate lines with fingerprint 2340e9b1e2419bcb5516a5a1d9037271 in the following files:
Between lines 70 and 82 in com/sun/corba/se/PortableActivationIDL/_ServerProxyImplBase.java
Between lines 70 and 82 in com/sun/corba/se/spi/activation/_ServerImplBase.java
Between lines 90 and 102 in org/omg/CosNaming/BindingIteratorPOA.java
Found 6 duplicate lines with fingerprint e94fb8a8017a3d05048dcdfb8bce8dff in the following files:
Between lines 101 and 111 in javax/swing/plaf/synth/SynthOptionPaneUI.java
Between lines 96 and 106 in javax/swing/plaf/synth/SynthMenuBarUI.java
Found 6 duplicate lines with fingerprint 16485a9bd0994dc56f52735c2395a7b2 in the following files:
Between lines 290 and 295 in java/time/zone/ZoneRules.java
Between lines 234 and 239 in java/time/zone/ZoneRules.java
Found 6 duplicate lines with fingerprint 7ca74bcd5707431bd195c0d867f5767e in the following files:
Between lines 380 and 398 in org/omg/DynamicAny/_DynFixedStub.java
Between lines 463 and 481 in org/omg/DynamicAny/_DynSequenceStub.java
...
Found 233 duplicate lines with fingerprint 8bc044fa6e21987c76424535dbc1fe47 in the following files:
Between lines 77 and 377 in javax/swing/plaf/nimbus/TextFieldPainter.java
Between lines 77 and 377 in javax/swing/plaf/nimbus/PasswordFieldPainter.java
Between lines 77 and 377 in javax/swing/plaf/nimbus/FormattedTextFieldPainter.java
Found 382 duplicate lines with fingerprint 922ba26b84cbbf0edfabb0e25189c3b4 in the following files:
Between lines 81 and 482 in com/sun/org/apache/xalan/internal/res/XSLTErrorResources_sv.java
Between lines 81 and 482 in com/sun/org/apache/xalan/internal/res/XSLTErrorResources_es.java
Between lines 81 and 482 in com/sun/org/apache/xalan/internal/res/XSLTErrorResources_fr.java
Between lines 81 and 482 in com/sun/org/apache/xalan/internal/res/XSLTErrorResources.java
Between lines 81 and 482 in com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ko.java
Between lines 81 and 482 in com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_CN.java
Between lines 81 and 482 in com/sun/org/apache/xalan/internal/res/XSLTErrorResources_pt_BR.java
Between lines 81 and 482 in com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_TW.java
Between lines 81 and 482 in com/sun/org/apache/xalan/internal/res/XSLTErrorResources_de.java
Between lines 81 and 482 in com/sun/org/apache/xalan/internal/res/XSLTErrorResources_it.java
Between lines 81 and 482 in com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ja.java
Found 141070 duplicate lines in 12134 blocks in 2406 files
Processed a total of 775314 significant (2402974 raw) lines in 7714 files
Processing time: 4.818sec

Use Simian for
the monkey work

Get Started