Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
7cce0f6
draft: work in progress for patch composition analysis
AlexanderSchultheiss Feb 16, 2025
f7176b2
refactor: move common functionality to util class
AlexanderSchultheiss Feb 17, 2025
20c6587
refactor: revise cloned implementations by removing unrequired code
AlexanderSchultheiss Feb 17, 2025
4907075
feat: first working implementation of commit composition analysis
AlexanderSchultheiss Feb 18, 2025
94fcf94
feat: improve composition analysis result saving
AlexanderSchultheiss Feb 18, 2025
c401fe7
feat: implement quick program that prints the results of the composit…
AlexanderSchultheiss Feb 18, 2025
6924199
ci: update Docker setup
AlexanderSchultheiss Feb 24, 2025
e321997
ci: update gradle setup
AlexanderSchultheiss Feb 24, 2025
1e3c1af
ci: update config path
AlexanderSchultheiss Feb 24, 2025
ae2f3ee
feat: only clone required repos, not all
AlexanderSchultheiss Feb 24, 2025
1167f27
feat: remove threading from shell
AlexanderSchultheiss Feb 24, 2025
ef4def9
chore: reduce thread count
AlexanderSchultheiss Feb 24, 2025
f717cac
feat: refine printing
AlexanderSchultheiss Feb 25, 2025
24ddd8b
feat: more precise composition analysis
AlexanderSchultheiss May 27, 2025
dd5f66a
feat: patch size analysis (old changes, perhaps unfinished)
AlexanderSchultheiss May 27, 2025
ab406df
feat: determine amount of patches not related to top languages
AlexanderSchultheiss May 27, 2025
f0c1cf9
fix: correct rust file ending
AlexanderSchultheiss May 27, 2025
0620f36
fix: formatting strings
AlexanderSchultheiss May 28, 2025
adf7757
fix: python version
AlexanderSchultheiss May 28, 2025
98a3ca5
fix: path to metrics file
AlexanderSchultheiss May 28, 2025
9da97d2
Merge branch 'patch-component-analysis' of github.com:VariantSync/pat…
AlexanderSchultheiss May 28, 2025
536fc36
feat: messy runtime printing (should be reverted and refactored)
AlexanderSchultheiss May 28, 2025
1b682cb
feat: add more detailed runtime analysis
AlexanderSchultheiss May 28, 2025
c8a67f6
fix: update path to metrics table
AlexanderSchultheiss May 28, 2025
794cd63
feat: improve printing of messy time analysis
AlexanderSchultheiss May 28, 2025
3c7e8ec
fix: print correct values to table
AlexanderSchultheiss May 28, 2025
2358c5f
chore: remove old file
AlexanderSchultheiss May 29, 2025
daba7ad
docs: remove deprecated docs
AlexanderSchultheiss May 29, 2025
fbeef06
chore: update results with latest ones
AlexanderSchultheiss May 29, 2025
f15cca2
feat: update metrics table generation
AlexanderSchultheiss Aug 6, 2025
9c61778
chore: update formatting
AlexanderSchultheiss Aug 6, 2025
66cf896
chore: update gitignore
AlexanderSchultheiss Aug 6, 2025
fd4f996
chore: update mpatch
AlexanderSchultheiss Aug 7, 2025
033192c
chore: update gitignore
AlexanderSchultheiss Aug 8, 2025
2a4514c
feat: update git apply handling
AlexanderSchultheiss Aug 8, 2025
5987c4d
chore: update startup printing
AlexanderSchultheiss Aug 8, 2025
69b9952
feat: cleaning of repos without cherry picks
AlexanderSchultheiss Aug 8, 2025
9fc7180
Revert "feat: cleaning of repos without cherry picks"
AlexanderSchultheiss Aug 8, 2025
57b69e9
fix: handle SQL escapes
AlexanderSchultheiss Aug 8, 2025
7d1db5c
chore: update license
AlexanderSchultheiss Aug 8, 2025
afe2445
docs: start work on READMEs
AlexanderSchultheiss Aug 8, 2025
f7d2cfd
docs: add notes on local dataset extraction
AlexanderSchultheiss Aug 8, 2025
f169b94
chore: add todo
AlexanderSchultheiss Aug 8, 2025
7ade6c1
docs: initial STATUS.md
AlexanderSchultheiss Aug 8, 2025
3cd3a27
docs: prepare INSTALL.md
AlexanderSchultheiss Aug 8, 2025
1f9afab
docs: update REQUIREMENTS.md
AlexanderSchultheiss Aug 8, 2025
ab3548e
feat: print number of results for now
AlexanderSchultheiss Aug 16, 2025
54e9758
feat: verification dataset and config
AlexanderSchultheiss Aug 16, 2025
b8ae63c
feat: major revision of analysis multi-threading
AlexanderSchultheiss Aug 16, 2025
f508a52
fix: properly shutdown thread pool
AlexanderSchultheiss Aug 17, 2025
2ae3575
feat: revise shell executor
AlexanderSchultheiss Aug 17, 2025
eaf6e82
chore: add todo
AlexanderSchultheiss Aug 17, 2025
27c54bc
format: apply Kotlin formatter
AlexanderSchultheiss Aug 17, 2025
5ece5aa
fix: handle all minor warnings
AlexanderSchultheiss Aug 17, 2025
ee0b897
feat: novel timeout implementation to handle long git apply timeouts
AlexanderSchultheiss Aug 17, 2025
21fbf03
chore: add todo
AlexanderSchultheiss Aug 17, 2025
dea0698
feat: revise logging
AlexanderSchultheiss Aug 18, 2025
a666d99
feat: configurable timeout handling
AlexanderSchultheiss Aug 18, 2025
6ac561e
fix: Prevent premature timeout
AlexanderSchultheiss Aug 18, 2025
66e6731
chore: improve logging
AlexanderSchultheiss Aug 18, 2025
dd45f6a
chore: improve logging
AlexanderSchultheiss Aug 18, 2025
07ef232
deletion: remove unused code
AlexanderSchultheiss Aug 18, 2025
96090d0
chore: update todo and reformat
AlexanderSchultheiss Aug 18, 2025
6e9f94e
ci: update Docker setup
AlexanderSchultheiss Aug 18, 2025
65aaf17
chore: update reproduction settings
AlexanderSchultheiss Aug 18, 2025
70d6ef3
ci: integrate setup verification in Docker setup
AlexanderSchultheiss Aug 18, 2025
1eab73e
feat: make patcher selection configurable
AlexanderSchultheiss Aug 18, 2025
adacd59
feat: make result analysis more robust against missing values
AlexanderSchultheiss Aug 20, 2025
ca31ec1
feat: better integration of dataset in Docker
AlexanderSchultheiss Aug 20, 2025
2f4d059
feat: make analysis executable with docker
AlexanderSchultheiss Aug 20, 2025
7cf6fab
feat: generation of a pdf file with the results
AlexanderSchultheiss Aug 20, 2025
22d59f8
fix: proper handling of second argument for analysis standalone
AlexanderSchultheiss Aug 20, 2025
48e68ec
chore: remove unrequired dir creation
AlexanderSchultheiss Aug 20, 2025
62c789a
feat: make preloading of repositories configurable
AlexanderSchultheiss Aug 20, 2025
bd8554f
chore: update logging
AlexanderSchultheiss Aug 20, 2025
4f13832
feat: first integration of RQ3 analysis
AlexanderSchultheiss Aug 20, 2025
6ef2a77
feat: revise handling of RQ3 analysis
AlexanderSchultheiss Aug 21, 2025
d71b0f1
chore: update dependencies
AlexanderSchultheiss Aug 21, 2025
5896b55
docs: add most of the critical documentation
AlexanderSchultheiss Aug 21, 2025
dfda401
docs: add comments
AlexanderSchultheiss Aug 21, 2025
c4e67c5
feat: considerably reduce verification dataset
AlexanderSchultheiss Aug 21, 2025
6a5a27c
feat: revise verification execution
AlexanderSchultheiss Aug 21, 2025
d5eea3d
docs: add more documentatoin
AlexanderSchultheiss Aug 21, 2025
58bb900
chore: update language names
AlexanderSchultheiss Aug 21, 2025
d562c34
docs: complete README
AlexanderSchultheiss Aug 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,8 @@ src/main/python/test.pdf
src/main/python/experiment_table.tex
src/main/python/result_analysis/experiment_table.tex
src/main/python/output.txt
kls_database.db
bin
dataset/mined-cherries
dataset/repo-sample.yaml
dataset/unsplit-mined-cherries.zip
28 changes: 25 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
FROM openjdk:19-alpine
FROM alpine:latest

RUN apk update
RUN apk add --no-cache --upgrade openjdk21
# Build the jar files
WORKDIR /home/user
COPY src ./src
Expand All @@ -12,15 +14,30 @@ COPY gradle gradle
WORKDIR /home/user
RUN ./gradlew Cherries || exit

FROM openjdk:19-alpine
FROM alpine:latest

RUN apk update
# Install dependencies for unix patch
RUN apk add --no-cache --upgrade bash diffutils patch git python3 py3-matplotlib unzip
RUN apk add --no-cache --upgrade bash diffutils patch git python3 py3-matplotlib unzip openjdk21

# Install dependencies for patching with matching
RUN apk add --no-cache curl bash gcc musl-dev

RUN apk add --no-cache python3 poetry

RUN apk add --no-cache zip unzip
COPY dataset /home/user/dataset
WORKDIR /home/user/dataset
RUN zip -s 0 mined-cherries.zip --out unsplit-mined-cherries.zip
RUN unzip unsplit-mined-cherries
RUN unzip repo-sample.zip
WORKDIR /home/user

RUN apk add --no-cache texlive-most

COPY src/main/python ./analysis
WORKDIR /home/user/analysis

ARG GROUP_ID
ARG USER_ID

Expand Down Expand Up @@ -57,3 +74,8 @@ RUN rustup default stable
# RUN rustup default nightly

RUN cargo install --path /home/user/mpatch


WORKDIR /home/user/analysis
RUN poetry install
WORKDIR /home/user/
82 changes: 82 additions & 0 deletions INSTALL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Installation
## Installation Instructions
In the following, we describe how to setup the evaluation of our paper step-by-step.
The instructions explain how to build the Docker image and run the validation in a Docker container.
For __Windows__ users, we recommend the use of WSL2 or a similar Linux environment.

### 1. Install Docker (if required)
How to install Docker depends on your operating system:

- _Windows or Mac_: You can find download and installation instructions [here](https://www.docker.com/get-started).
- _Linux Distributions_: How to install Docker on your system, depends on your distribution. The chances are high that Docker is part of your distributions package database.
Docker's [documentation](https://docs.docker.com/engine/install/) contains instructions for common distributions.

Then, start the docker deamon.

### 2. Open a Suitable Terminal
```
# Windows Command Prompt:
- Press 'Windows Key + R' on your keyboard
- Type in 'cmd'
- Click 'OK' or press 'Enter' on your keyboard

# Windows PowerShell:
- Open the search bar (Default: 'Windows Key') and search for 'PowerShell'
- Start the PowerShell

# Linux:
- Press 'ctrl + alt + T' on your keyboard
```

Clone this repository to a directory of your choice using git:
```shell
git clone https://github.com/VariantSync/patching-with-matching-eval.git
```

### 3. Build the Docker Container
To build the Docker container you can run the `build` script:
```
# Linux/Mac/WSL2 (bash):
./build.sh
```

## 4. Verification & Replication

### Running the Replication or Verification
To execute the replication you can run the `execute` script corresponding to your operating system with `reproduction` as first argument.

`./execute.sh reproduction`

> WARNING!
> TODO: RUNTIME WARNING
> TODO: DISK USAGE WARNING
> Therefore, we offer a short verification (TODO minutes) ...
> You can run it by providing "verification" as argument instead of "reproduction" (i.e., `./execute.sh verification`).
> If you want to stop the execution, you can call the provided script for stopping the container in a separate terminal.
> When restarted, the execution will continue processing by restarting at the last unfinished state.
> `./stop-execution.sh`

You might see warnings or errors reported from SLF4J like `Failed to load class "org.slf4j.impl.StaticLoggerBinder"` which you can safely ignore.
Further troubleshooting advice can be found at the bottom of this file.

The results of the verification will be stored in the [evaluation-workdir](evaluation-workdir) directory.

### Expected Output of the Verification
TODO

## Troubleshooting

### 'Got permission denied while trying to connect to the Docker daemon socket'
`Problem:` This is a common problem under Linux, if the user trying to execute Docker commands does not have the permissions to do so.

`Fix:` You can fix this problem by either following the [post-installation instructions](https://docs.docker.com/engine/install/linux-postinstall/), or by executing the scripts in the replication package with elevated permissions (i.e., `sudo`).

### 'Unable to find image 'mpatch-reproduction:latest' locally'
`Problem:` The Docker container could not be found. This either means that the name of the container that was built does not fit the name of the container that is being executed (this only happens if you changed the provided scripts), or that the Docker container was not built yet.

`Fix:` Follow the instructions described above in the section `Build the Docker Container`.

### Failed to load class "org.slf4j.impl.StaticLoggerBinder"
`Problem:` An operation within the initialization phase of the logger library we use (tinylog) failed.

`Fix:` Please ignore this warning. Tinylog will fall back onto a default implementation (`Defaulting to no-operation (NOP) logger implementation`) and logging will work as expected.
165 changes: 0 additions & 165 deletions LICENSE.LGPL3

This file was deleted.

Loading
Loading