FCFinder is now available on the web sites!

http://sourceforge.jp/projects/fcfinder/




Last Modified:2011/06/26

== Required
* jdk1.6.*
* fcfinder.jar


== How to Use
1.java -jar FCFinder.jar
2.FCFinder stores results into ./FC_TMP/easydb

* options
+ required (at least one of them)
 * -a
  * analyze files with all extensions, you need to choose 'a' or 'l' or both.
 * -l
  * target language. at least one of {'JAVA' 'C' 'CPP'} ('C' is included in 'CPP')
+ required (at least one of them)
 * -d
  * directory paths (multiple)
 * -dl
  * file that describes directory list
  * template: xml/dir_list.xml, xml/dir_list.txt
 * -fl
  * file that describes file list (.xml)
  * template: xml/file_list.xml
+ optional
 * jdb
  * set a database path
  * default:./easydb
 * -m
  * min threshold of # of tokens in each file
  * default:15
 * -w
  * dump a parsed files into a temporary working path.
 * -x
  * NG words. exclude files that include a NG word in their file paths
  * ex.) test, sample, example, tag, branch, ...

* example: java -jar FCFinder.jar -l JAVA C -dl unix_sample.xml -jdb WORK_TMP
 * from files described in "unix_sample.xml",
 * detect file clones from JAVA or C source files (.c, .h, .java)
 * "WORK_TMP" is used for database


== database scheme
+ tables
* DOMAIN_INFO
 * project (application, or category) group information
* FILE_INFO
 * file information
* HASH_INFO
 * file hash information (its MD5 hash value)
* TOKEN_INFO
 * tokenized file information (be only made when you specified '-w' option)
* CLONE_INFO
 * store group ID(GRUOP_ID)

+ columns
* CLONE_INFO.ID¡§
 * refer FILE_INFO.ID
* CLONE_INFO.GROUP_ID¡§
 * files which have same group ID are file clones


== cautions
* Java and CPP parser is enbugged; This tool does NOT support some of macro statements.
* All parse errors go out console stdout
* All tokenized files are stored into workspace (FC_TMP), if you specify '-w' option.
* Use jvm options (-Xms, -Xmx) to prevent OutOfMemory
* Permission denied files will be skipped.


=== database compatibility
* Use "ij" (http://db.apache.org/derby/)



