Saved in:
Bibliographic Details
Main Authors: Monce, Gustave, Couturou, Thomas, Hamdaoui, Yasmine, Degueule, Thomas, Falleri, Jean-Rémy
Format: Preprint
Published: 2024
Subjects:
Online Access:https://arxiv.org/abs/2402.12024
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866911779554066432
author Monce, Gustave
Couturou, Thomas
Hamdaoui, Yasmine
Degueule, Thomas
Falleri, Jean-Rémy
author_facet Monce, Gustave
Couturou, Thomas
Hamdaoui, Yasmine
Degueule, Thomas
Falleri, Jean-Rémy
contents Designing an effective API is essential for library developers as it is the lens through which clients will judge its usability and benefits, as well as the main friction point when the library evolves. Despite its importance, defining the boundaries of an API is a challenging task, mainly due to the diverse mechanisms provided by programming languages that have non-trivial interplays. In this paper, we present a novel conceptual framework designed to assist library maintainers in understanding the interactions allowed by their APIs via the use of syntactic usage models. These customizable models enable library maintainers to improve their design ahead of release, reducing friction during evolution. The complementary syntactic usage footprints and coverage scores, inferred from client code using the API (e.g., documentation samples, tests, third-party clients), enable developers to understand in-the-wild uses of their APIs and to reflect on the adequacy of their tests and documentation. We implement these models for Java libraries in a new tool UCov and demonstrate its capabilities on three libraries exhibiting diverse styles of interaction: jsoup, commons-cli, and spark. Our exploratory case study shows that UCov provides valuable information regarding API design and fine-grained analysis of client code to identify under-tested and under-documented library code.
format Preprint
id arxiv_https___arxiv_org_abs_2402_12024
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle Lightweight Syntactic API Usage Analysis with UCov
Monce, Gustave
Couturou, Thomas
Hamdaoui, Yasmine
Degueule, Thomas
Falleri, Jean-Rémy
Software Engineering
Designing an effective API is essential for library developers as it is the lens through which clients will judge its usability and benefits, as well as the main friction point when the library evolves. Despite its importance, defining the boundaries of an API is a challenging task, mainly due to the diverse mechanisms provided by programming languages that have non-trivial interplays. In this paper, we present a novel conceptual framework designed to assist library maintainers in understanding the interactions allowed by their APIs via the use of syntactic usage models. These customizable models enable library maintainers to improve their design ahead of release, reducing friction during evolution. The complementary syntactic usage footprints and coverage scores, inferred from client code using the API (e.g., documentation samples, tests, third-party clients), enable developers to understand in-the-wild uses of their APIs and to reflect on the adequacy of their tests and documentation. We implement these models for Java libraries in a new tool UCov and demonstrate its capabilities on three libraries exhibiting diverse styles of interaction: jsoup, commons-cli, and spark. Our exploratory case study shows that UCov provides valuable information regarding API design and fine-grained analysis of client code to identify under-tested and under-documented library code.
title Lightweight Syntactic API Usage Analysis with UCov
topic Software Engineering
url https://arxiv.org/abs/2402.12024