You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+28-2Lines changed: 28 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,8 +18,34 @@ The source code and related documentation will be uploaded shortly.
18
18
# Cite the research paper
19
19
To use ArCode in your research papers, please cite it as: BibTex
20
20
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.
-**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.
23
49
24
50
# Tutorial
25
51
Link to the tutorial video will be uploaded shortly.
0 commit comments