1,191 research outputs found
Recommending Analogical APIs via Knowledge Graph Embedding
Library migration, which re-implements the same software behavior by using a
different library instead of using the current one, has been widely observed in
software evolution. One essential part of library migration is to find an
analogical API that could provide the same functionality as current ones.
However, given the large number of libraries/APIs, manually finding an
analogical API could be very time-consuming and error-prone. Researchers have
developed multiple automated analogical API recommendation techniques.
Documentation-based methods have particularly attracted significant interest.
Despite their potential, these methods have limitations, such as a lack of
comprehensive semantic understanding in documentation and scalability
challenges. In this work, we propose KGE4AR, a novel documentation-based
approach that leverages knowledge graph (KG) embedding to recommend analogical
APIs during library migration. Specifically, KGE4AR proposes a novel unified
API KG to comprehensively and structurally represent three types of knowledge
in documentation, which can better capture the high-level semantics. Moreover,
KGE4AR then proposes to embed the unified API KG into vectors, enabling more
effective and scalable similarity calculation. We build KGE4AR' s unified API
KG for 35,773 Java libraries and assess it in two API recommendation scenarios:
with and without target libraries. Our results show that KGE4AR substantially
outperforms state-of-the-art documentation-based techniques in both evaluation
scenarios in terms of all metrics (e.g., 47.1%-143.0% and 11.7%-80.6% MRR
improvements in each scenario). Additionally, we explore KGE4AR' s scalability,
confirming its effective scaling with the growing number of libraries.Comment: Accepted by FSE 202
Fuzzing Deep-Learning Libraries via Automated Relational API Inference
A growing body of research has been dedicated to DL model testing. However,
there is still limited work on testing DL libraries, which serve as the
foundations for building, training, and running DL models. Prior work on
fuzzing DL libraries can only generate tests for APIs which have been invoked
by documentation examples, developer tests, or DL models, leaving a large
number of APIs untested. In this paper, we propose DeepREL, the first approach
to automatically inferring relational APIs for more effective DL library
fuzzing. Our basic hypothesis is that for a DL library under test, there may
exist a number of APIs sharing similar input parameters and outputs; in this
way, we can easily "borrow" test inputs from invoked APIs to test other
relational APIs. Furthermore, we formalize the notion of value equivalence and
status equivalence for relational APIs to serve as the oracle for effective bug
finding. We have implemented DeepREL as a fully automated end-to-end relational
API inference and fuzzing technique for DL libraries, which 1) automatically
infers potential API relations based on API syntactic or semantic information,
2) synthesizes concrete test programs for invoking relational APIs, 3)
validates the inferred relational APIs via representative test inputs, and
finally 4) performs fuzzing on the verified relational APIs to find potential
inconsistencies. Our evaluation on two of the most popular DL libraries,
PyTorch and TensorFlow, demonstrates that DeepREL can cover 157% more APIs than
state-of-the-art FreeFuzz. To date, DeepREL has detected 162 bugs in total,
with 106 already confirmed by the developers as previously unknown bugs.
Surprisingly, DeepREL has detected 13.5% of the high-priority bugs for the
entire PyTorch issue-tracking system in a three-month period. Also, besides the
162 code bugs, we have also detected 14 documentation bugs (all confirmed).Comment: Accepted at ESEC/FSE 202
- …