Table of Contents
Fetching ...

CoDocBench: A Dataset for Code-Documentation Alignment in Software Maintenance

Kunal Pai, Premkumar Devanbu, Toufique Ahmed

TL;DR

CoDocBench introduces a large-scale dataset of coupled code-docstring changes mined from GitHub to study code-documentation alignment in software maintenance. It details a robust collection pipeline using PyDriller, regex-based function detection, and AST validation, producing per-version entries with code, docstrings, and diffs. The paper defines two tasks: align updated docstrings with code and generate updated code from revised docstrings, and evaluates Mixtral-8x22B and Llama-3.1-405B; results show current models struggle with temporal alignment, though docstring updates are relatively easier and contextual prompting yields some gains. The dataset provides a reproducible benchmark to push forward modeling of code-doc documentation maintenance.

Abstract

One of the central tasks in software maintenance is being able to understand and develop code changes. Thus, given a natural language description of the desired new operation of a function, an agent (human or AI) might be asked to generate the set of edits to that function to implement the desired new operation; likewise, given a set of edits to a function, an agent might be asked to generate a changed description, of that function's new workings. Thus, there is an incentive to train a neural model for change-related tasks. Motivated by this, we offer a new, "natural", large dataset of coupled changes to code and documentation mined from actual high-quality GitHub projects, where each sample represents a single commit where the code and the associated docstring were changed together. We present the methodology for gathering the dataset, and some sample, challenging (but realistic) tasks where our dataset provides opportunities for both learning and evaluation. We find that current models (specifically Llama-3.1 405B, Mixtral 8$\times$22B) do find these maintenance-related tasks challenging.

CoDocBench: A Dataset for Code-Documentation Alignment in Software Maintenance

TL;DR

CoDocBench introduces a large-scale dataset of coupled code-docstring changes mined from GitHub to study code-documentation alignment in software maintenance. It details a robust collection pipeline using PyDriller, regex-based function detection, and AST validation, producing per-version entries with code, docstrings, and diffs. The paper defines two tasks: align updated docstrings with code and generate updated code from revised docstrings, and evaluates Mixtral-8x22B and Llama-3.1-405B; results show current models struggle with temporal alignment, though docstring updates are relatively easier and contextual prompting yields some gains. The dataset provides a reproducible benchmark to push forward modeling of code-doc documentation maintenance.

Abstract

One of the central tasks in software maintenance is being able to understand and develop code changes. Thus, given a natural language description of the desired new operation of a function, an agent (human or AI) might be asked to generate the set of edits to that function to implement the desired new operation; likewise, given a set of edits to a function, an agent might be asked to generate a changed description, of that function's new workings. Thus, there is an incentive to train a neural model for change-related tasks. Motivated by this, we offer a new, "natural", large dataset of coupled changes to code and documentation mined from actual high-quality GitHub projects, where each sample represents a single commit where the code and the associated docstring were changed together. We present the methodology for gathering the dataset, and some sample, challenging (but realistic) tasks where our dataset provides opportunities for both learning and evaluation. We find that current models (specifically Llama-3.1 405B, Mixtral 822B) do find these maintenance-related tasks challenging.

Paper Structure

This paper contains 6 sections, 5 figures, 3 tables.

Figures (5)

  • Figure 1: An example where docstring and function were changed simultaneously in the same commit
  • Figure 2: Workflow for creating CoDocBench. The figure illustrates a multi-stage process: (A) Collect all Python files per project, (B) Commit processing per Python file, (C) Using regular expressions for pairwise commit change detection per function, (D) Using AST and post-processing to refine detected changes and create CoDocBench, and (E) Generating a test and training set through a random 50/50 project split.
  • Figure 3: Code and docstring diff statistics.
  • Figure 4: Cumulative percentage distribution of dataset entries by project
  • Figure 5: Scatterplot showing length of code diff (in tokens) vs. length of docstring diff (in tokens)