Skip to content

Commit 334844b

Browse files
committed
Added paper and detailed instructions on running the evaluation
1 parent 560822a commit 334844b

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

README.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,24 +36,56 @@ bash run_all_with_cov.sh # to collect analysis coverage
3636
bash run_all_no_cov.sh # no analysis coverage
3737
```
3838
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:
42+
- A `findings.csv` file, which summarizes the findings.
43+
- An `output.json` file, which contains the details of the findings.
44+
The text file contains the name of the project, the instrumentation duration in seconds, and the analysis time in seconds.
45+
46+
You can pretty print the findings in a format similar to static linters by running:
47+
```bash
48+
python scripts/sumarize_findings.py --results <path to the subdirectory in project_results>
49+
```
50+
This will generate a text file with the format
51+
```
52+
<file>:<line>:<column>: <issue code> <issue message>
53+
```
3954

4055
Run the GitHub project's test suites without DyLin to get test suite coverage (used in RQ4):
4156
```bash
4257
bash build_testcov.sh
4358
bash run_all_testcov.sh
4459
```
4560
Results will be in `project_testcovs`.
61+
For each repository a directory is created with a json file containing the detailed test coverage data.
62+
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.
4668

4769
Run static linters on GitHub projects (RQ3):
4870
```bash
4971
bash build_lint.sh
5072
bash run_all_linters.sh
5173
```
5274
Results will be in `project_lints`.
75+
For each repository a directory is created with 3 files `results_ruff.txt`, `results_pylint.txt`, and `results_mypy.txt`.
76+
To match the warning lines from the static linters to DyLin warnings, run:
77+
```bash
78+
python scripts/compare_static_dynamic_linters.py --static_dir <path to the directory containing the static linter results> --dynamic <path to the text file containing DyLin's findings>
79+
```
80+
This will output all lines that both approaches have warned about.
5381
5482
Run DyLin on a Kaggle competition (RQ1):
5583
```bash
5684
bash build_kaggle.sh <kaggle competition id: e.g. titanic>
5785
bash run_kaggle.sh
5886
```
5987
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.

paper_dylin.pdf

672 KB
Binary file not shown.

0 commit comments

Comments
 (0)