Table of Contents
Fetching ...

ICCheck: A Portable, Language-Agnostic Tool for Synchronizing Code Clones

Motoki Abe, Shinpei Hayashi

TL;DR

ICCheck tackles inconsistent changes to code clones across languages by introducing a portable, language-agnostic solution that relies on a language-agnostic clone search (FLeCCS) and Git integration. It provides both a CLI and a Language Server Protocol implementation to support command-line workflows and editor integrations, enabling clone synchronization across diverse environments and CI/CD pipelines. Evaluations demonstrate practical response times across thousands of commits and cross-language applicability, with reasonable precision in clone-suggestion tasks. The approach offers strong portability and integrability, making it suitable for empirical cloning studies and real-world software maintenance across heterogeneous codebases.

Abstract

Inconsistent modifications to code clones can lead to software defects. Many approaches exist to support consistent modifications based on clone detection and/or change pattern extraction. However, no tool currently supports synchronization of code clones across diverse programming languages and development environments. We propose ICCheck, a tool designed to be language-agnostic and portable across various environments. By leveraging an existing language-agnostic clone search technique and limiting the tool's external dependency to an existing Git repository, we developed a tool that can assist in synchronizing code clones in diverse environments. We validated the tool's functionality in multiple open-source repositories, demonstrating its language independence. Furthermore, by supporting the Language Server Protocol, we confirmed that ICCheck can be integrated into multiple development environments with minimal effort. ICCheck is available at https://github.com/salab/iccheck

ICCheck: A Portable, Language-Agnostic Tool for Synchronizing Code Clones

TL;DR

ICCheck tackles inconsistent changes to code clones across languages by introducing a portable, language-agnostic solution that relies on a language-agnostic clone search (FLeCCS) and Git integration. It provides both a CLI and a Language Server Protocol implementation to support command-line workflows and editor integrations, enabling clone synchronization across diverse environments and CI/CD pipelines. Evaluations demonstrate practical response times across thousands of commits and cross-language applicability, with reasonable precision in clone-suggestion tasks. The approach offers strong portability and integrability, making it suitable for empirical cloning studies and real-world software maintenance across heterogeneous codebases.

Abstract

Inconsistent modifications to code clones can lead to software defects. Many approaches exist to support consistent modifications based on clone detection and/or change pattern extraction. However, no tool currently supports synchronization of code clones across diverse programming languages and development environments. We propose ICCheck, a tool designed to be language-agnostic and portable across various environments. By leveraging an existing language-agnostic clone search technique and limiting the tool's external dependency to an existing Git repository, we developed a tool that can assist in synchronizing code clones in diverse environments. We validated the tool's functionality in multiple open-source repositories, demonstrating its language independence. Furthermore, by supporting the Language Server Protocol, we confirmed that ICCheck can be integrated into multiple development environments with minimal effort. ICCheck is available at https://github.com/salab/iccheck

Paper Structure

This paper contains 10 sections, 8 figures, 2 tables.

Figures (8)

  • Figure 1: Clone set in YAML files.
  • Figure 2: Workflow of ICCheck.
  • Figure 3: Architecture of ICCheck.
  • Figure 4: Usage of ICCheck CLI.
  • Figure 5: Supporting clone synchronization via ICCheck Language Server.
  • ...and 3 more figures