Skip to content

Commit 7ad7978

Browse files
committed
Merge branch 'main' of https://github.com/SoftwareDesignLab/ArCode into main
2 parents 48a7b18 + 9629ff8 commit 7ad7978

1 file changed

Lines changed: 28 additions & 2 deletions

File tree

README.md

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,34 @@ The source code and related documentation will be uploaded shortly.
1818
# Cite the research paper
1919
To use ArCode in your research papers, please cite it as: BibTex
2020

21-
# Use ArCode as a Tool
22-
A step-by-step instruction on how to use ArCode.
21+
# Obtaining ArCode tool
22+
In this section, we provide a we provide a step-by-step instruction to walk you through the process of building and using ArCode.
23+
24+
## Use a released version
25+
When we reach a stable version, we build the project and release it as a jar file. You can easily download the latest release from [here](../../releases/).
26+
27+
## Building ArCode from source code
28+
In order to build a runnable version of ArCode from the source code, you need to have Maven3 installed on your machine. The link to Maven can be found from [here](https://maven.apache.org/).
29+
Please use below command to build the ArCode runnable jar file once you have installed maven:
30+
```
31+
mvn clean package
32+
```
33+
34+
If the process finishes with success, ArCode jar file (e.g. arcode-1.0-SNAPSHOT.jar) is created and is ready to be used.
35+
36+
# Running the tool
37+
For running ArCode, you may use the following template in the command line. In the next section, a tutorial of runing the tool is provided.
38+
```
39+
java -jar ARCODE_JAR_FILE -framework FRAMEWORK_OF_INTEREST -fspecOutputPath PATH_TO_FSPEC_OUTPUT -trainProjectsPath PATH_TO_TRAINING_PROJECTS -testProjectsPath PATH_TO_TESTING_PROJECTS -exclusionFilePath PATH_TO_EXCLUSION_FILE -frameworkJarPath PATH_TO_FRAMEWORK_JAR_FILE -frameworkPackage PACKAGE_NAME_OF_FRAMEWORK
40+
```
41+
- **ARCODE_JAR_FILE:** Path to ArCode jar file that you downloaded from [releases](../../releases/) or built from ArCode source code using Maven.
42+
- **FRAMEWORK_OF_INTEREST:** The framework that you would like to extract and create a model of its API usages in training projects. This model is called Framework API Specification model (FSpec). ArCode also performs static analysis to find dependencies between APIs inside the framework jar file and creates an Inter-framewrok Dependency model (IFD). You may find more details about the approach from ArCode [paper](https://a-shokri.github.io/assets/Ali%20Shokri-ArCode-ICSA2021-Accepted.pdf).
43+
- **PATH_TO_FSPEC_OUTPUT:** Created FSpec will be serialized and saved in this directory. ArCode will later restore this FSpec and use it in the recommendation phase.
44+
- **PATH_TO_TRAINING_PROJECTS:** Path to the bytecode (jar files) of the training projects that are incorporating the framework of interest. ArCode analyzes these programs to create a Graph-based API Usage Model (GRAAM) for each program. Then, performing graph-based operations, it creates the framework's FSpec.
45+
- **PATH_TO_TESTING_PROJECTS:** Path to the bytecode (jar files) of the testing projects that are incorporating the framework of interest. ArCode analyzes these programs to create a Graph-based API Usage Model (GRAAM) for each program. The, leveraging the previously created FSpec, it identifies API misuses or APIs that are needed to be added to the program to make the program a correct implementation of an architectural tactic or a pattern.
46+
- **PATH_TO_EXCLUSION_FILE:** This is a file entitled as "JAASJavaExclusions.txt" in the config folder of ArCode source code. In the current version of ArCode, you need to have that file on your system and introduce its path to ArCode. This file specifies packages to be excluded from program analysis process. We need to introduce these packages to avoid explosion of call-graph creation in that process.
47+
- **PATH_TO_FRAMEWORK_JAR_FILE:** Path to jar file of the framework of interest.
48+
- **PACKAGE_NAME_OF_FRAMEWORK:** Since there might be more than one framework in a jar file, we introduce the packaging of the framework through this property.
2349

2450
# Tutorial
2551
Link to the tutorial video will be uploaded shortly.

0 commit comments

Comments
 (0)