Skip to content

Commit 820506e

Browse files
committed
Restructured Evaluation in Readme
1 parent 334844b commit 820506e

File tree

1 file changed

+40
-27
lines changed

1 file changed

+40
-27
lines changed

README.md

Lines changed: 40 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,26 @@ pip install -r requirements.txt
2222
The checkers are implemented in `src/analyses`.
2323

2424
## Evaluation
25-
All experiments are self-contained, i.e. they download the required repositories, source code, and data.
26-
Run the micro-benchmark (RQ1):
25+
All experiments (except the micro-benchmark run) run inside Docker containers.
26+
The scripts provided are self-contained, i.e. they build the required Docker container, and download the required repositories, source code, and data.
27+
28+
### RQ1: Effectiveness
29+
Run DyLin on the micro-benchmark:
2730
```bash
31+
python -m venv venv
32+
source venv/bin/activate
2833
pip install -r requirements-tests.txt
2934
pytest tests
3035
```
3136

32-
Run DyLin on GitHub repositories (RQ1, RQ4, and RQ5):
37+
Run DyLin on the GitHub repositories:
3338
```bash
3439
bash build_projects.sh
35-
bash run_all_with_cov.sh # to collect analysis coverage
36-
bash run_all_no_cov.sh # no analysis coverage
40+
bash run_all_no_cov.sh
3741
```
3842
Results will be in `project_results`.
39-
For each repository a directory is created with two sub-directories and a text file.
40-
The first sub-directory is named `dynapyt_coverage-<unique id of the run>`, which contains a json file with detailed analysis coverage data.
41-
The second sub-directory is named `dynapyt_output-<unique id of the run>`, with the following contents:
43+
For each repository a directory is created with one sub-directory and a text file.
44+
The sub-directory is named `dynapyt_output-<unique id of the run>`, with the following contents:
4245
- A `findings.csv` file, which summarizes the findings.
4346
- An `output.json` file, which contains the details of the findings.
4447
The text file contains the name of the project, the instrumentation duration in seconds, and the analysis time in seconds.
@@ -52,21 +55,22 @@ This will generate a text file with the format
5255
<file>:<line>:<column>: <issue code> <issue message>
5356
```
5457

55-
Run the GitHub project's test suites without DyLin to get test suite coverage (used in RQ4):
58+
Run DyLin on a Kaggle competition:
5659
```bash
57-
bash build_testcov.sh
58-
bash run_all_testcov.sh
60+
bash build_kaggle.sh <kaggle competition id: e.g. titanic>
61+
bash run_kaggle.sh
5962
```
60-
Results will be in `project_testcovs`.
61-
For each repository a directory is created with a json file containing the detailed test coverage data.
63+
Results will be in `kaggle_results`.
64+
For each competition a directory is created with 3 subdirectories:
65+
- `coverage`, which contains analysis coverage information in a json file.
66+
- `submissions`, which contains the submissions analyzed by DyLin.
67+
- `table`, which contains the findings in a json file.
6268

63-
To calculate the ratio of analysis coverage to test coverage you can run
64-
```bash
65-
python scripts/coverage_report.py coverage_comparison --analysis_dir <path to the subdirectory in project_results> --test_dir <path to the subdirectory in project_testcovs>
66-
```
67-
This generates a csv file with a summary of analysis and test coverage similar to `Supplementary_Material_FSE2025/DyLin - FSE 2025 Artifact.pdf` page 1.
69+
### RQ2: Severity of Detected Issues
70+
The submitted pull requests and issues are available in `Supplementary_Material_FSE2025/DyLin Issues - *.pdf`
6871

69-
Run static linters on GitHub projects (RQ3):
72+
### RQ3: Comparison with Existing Tools
73+
Run static linters on GitHub projects:
7074
```bash
7175
bash build_lint.sh
7276
bash run_all_linters.sh
@@ -79,13 +83,22 @@ python scripts/compare_static_dynamic_linters.py --static_dir <path to the direc
7983
```
8084
This will output all lines that both approaches have warned about.
8185
82-
Run DyLin on a Kaggle competition (RQ1):
86+
### RQ4: Analysis Coverage
87+
Run DyLin with analysis coverage on:
8388
```bash
84-
bash build_kaggle.sh <kaggle competition id: e.g. titanic>
85-
bash run_kaggle.sh
89+
bash build_projects.sh
90+
bash run_all_with_cov.sh
8691
```
87-
Results will be in `kaggle_results`.
88-
For each competition a directory is created with 3 subdirectories:
89-
- `coverage`, which contains analysis coverage information in a json file.
90-
- `submissions`, which contains the submissions analyzed by DyLin.
91-
- `table`, which contains the findings in a json file.
92+
Run the GitHub project's test suites without DyLin to get test suite coverage:
93+
```bash
94+
bash build_testcov.sh
95+
bash run_all_testcov.sh
96+
```
97+
Results will be in `project_testcovs`.
98+
For each repository a directory is created with a json file containing the detailed test coverage data.
99+
100+
To calculate the ratio of analysis coverage to test coverage you can run
101+
```bash
102+
python scripts/coverage_report.py coverage_comparison --analysis_dir <path to the subdirectory in project_results> --test_dir <path to the subdirectory in project_testcovs>
103+
```
104+
This generates a csv file with a summary of analysis and test coverage similar to `Supplementary_Material_FSE2025/DyLin - FSE 2025 Artifact.pdf` page 1.

0 commit comments

Comments
 (0)