https://github.com/chains-project/bumper
Fixing Breaking Dependency Updates With Large Language Models
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.9%) to scientific vocabulary
Repository
Fixing Breaking Dependency Updates With Large Language Models
Basic Info
Statistics
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
Bumper: Automatic Program Repair For Breaking Dependency Updates With Large Language Models
External libraries are widely used to expedite software development, but like any software component, they are updated over time, introducing new features and deprecating or removing old ones. When a library introduces breaking changes, all its clients must be updated to avoid disruptions. This update, when it introduces a breaking change, is defined as a Breaking Dependency Update. Repairing such breakages is challenging and time-consuming because the error originates in the dependency, while the fix must be applied to the client codebase.
Automatic Program Repair (APR) is a research area focused on developing techniques to repair code failures without human intervention. With the advent of Large Language Models (LLMs), learning-based APR techniques have significantly improved in software repair tasks. However, their effectiveness on Breaking Dependency Updates remains unexplored.
Bumper is APR for breaking dependency updates with LLMs.
Publications: * Automatic Program Repair For Breaking Dependency Updates With Large Language Models Master's thesis Federico Bono (2024)
Repository Contents
- benchmarks/: Configuration scripts and base directory for benchmark files
- libs/: Source code of the tools used to do Fault Location (FL) and context extraction (API Diffs)
- pipeline/: Source code for the APR pipelines
- prompts/: Prompt templates used in the different pipeline configurations
results/: Experimental results and analysis.
benchmark.py: Python script to run a specific benchmark configuration
main.py: Debug Python script to run a specific project
replay.py: Python script to generate patched version of a client from a result file
run_experiments.bash: Bash script to run sequentially all the experiments
run_experiments-parallel.bash: Bash script to run in parallel all the experiments
setup.bash: Setup script to clone the benchmark repository and perform dataset selection
README.md: This file.
Setup and Installation
To set up the project locally, follow these steps:
Clone the repository:
sh git clone https://github.com/chains-project/bumper.git cd bumperCreate and activate a virtual environment:
sh python -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate`Install the required dependencies:
sh pip install -r requirements.txtSetup benchmarks dataset:
shell bash setup.bashSetup environment variable:
shell cp .env.example .envTo use Gemini you need to store the Google Cloud API Credential
(g_credentials.json)in the root folder of the project:
Usage
Run all the experiments
To run the complete experiment set in sequence:
sh bash run_experiments.bash :nameOr to run the complete experiment set in parallel (4 processes max):
sh bash run_experiments-parallel.bash :name
Run a specific experiment
To run a specific experiment you can use the benchmark.py script with the needed flags.
sh
[RUN_ID=:id] [WITHOUT_APIDIFF=True] python benchmark.py -n :name -p :pipeline -m :model
IMPORTANT: To run multiple experiments in parallel remember to set the RUN_ID env variable to identify the
specific execution and avoid collisions in the repair process
Results
The results of our experiments can be found in the results directory.
A complete data analysis with chart is provided in the analysis Jupyter notebook
Key findings include:
- The necessity of incorporating additional context from dependency changes.
- The importance of error-type specific repair strategies.
- Comparative analysis of GPT-4, Gemini, and Llama in terms of efficacy and cost-efficiency.

Contributing
Contributions are welcome! Please submit a pull request or open an issue to discuss your ideas or suggestions.
Contact
For any questions or inquiries, please contact us.
Owner
- Name: CHAINS research project at KTH Royal Institute of Technology
- Login: chains-project
- Kind: organization
- Website: https://chains.proj.kth.se
- Repositories: 9
- Profile: https://github.com/chains-project
"Consistent Hardening and Analysis of Software Supply Chains" at KTH, funded by SSF
GitHub Events
Total
- Watch event: 2
- Push event: 2
- Public event: 1
- Fork event: 1
Last Year
- Watch event: 2
- Push event: 2
- Public event: 1
- Fork event: 1
Committers
Last synced: over 1 year ago
Top Committers
| Name | Commits | |
|---|---|---|
| Federico (server) | f****9@g****m | 833 |
| Martin Monperrus | m****s@g****g | 1 |
| Frank Reyes-Garcia | 1****a | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: over 1 year ago
All Time
- Total issues: 0
- Total pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Total issue authors: 0
- Total pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0