Files
BUGFS/README.md
T
2026-01-08 15:50:54 +09:00

2.0 KiB
Executable File
Raw Blame History

BUGFS: Method-Level Bug Localization by Counting Method Modifications of Similar Bug Reports

📖 Overview

BUGFS (BUG location recommendation using method Frequency of Similar bug reports) is a novel approach for method-level bug localization.
It combines semantic similarity between bug reports and the historical frequency of method modifications to recommend the most likely buggy methods.

🧠 Key idea:
If a method was frequently modified in similar past bug reports, it is likely to require modification again for a new bug.

Compared to state-of-the-art methods such as FineLocator and MblShl, BUGFS achieves:

  • 1.5× higher Precision@10, 1.2× higher Recall@10
  • 3.0× higher MAP, 3.4× higher MRR
  • Consistent performance across Java (Ant, AspectJ, Maven) and Python (Django, Flask, Pandas) projects.

BUGFS Overview

⚙️ MCP Bug Localization Server

The new bug_locator_mcp_server.py exposes a Model Context Protocol (MCP) server that automates everything from crawling issues to recommending buggy methods:

Tool Purpose
crawl_repo Uses crawl_issues_With_diffs.py to download GitHub issues plus their fixing commit patches.
embed_repo Reuses embedding.py logic to embed each issue’s title/body with OpenAI embeddings.
run_BUGFS Implements the run_rq1 methodology to retrieve similar issues and rank file:function locations by vote frequency.

Setup

  1. pip install modelcontextprotocol openai python-dotenv requests numpy
  2. Add OPENAI_API_KEY and GITHUB_TOKEN to your environment (or a .env file).

Running locally

python bug_locator_mcp_server.py

Once the server is running you can add it to any MCP-compatible client. Typical workflow:

  1. crawl_repo(owner="pallets", repo="flask")
  2. embed_repo(owner="pallets", repo="flask", model="text-embedding-3-small")
  3. run_BUGFS(owner="pallets", repo="flask", title="Bug title", body="Bug body...")