Full text
Preview |
PDF
- Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (993kB) | Preview |
Ouyang, Junpeng (2019). Moogle: a type-based API search engine for Elm. Thesis (Master thesis), E.T.S. de Ingenieros Informáticos (UPM).
Title: | Moogle: a type-based API search engine for Elm |
---|---|
Author/s: |
|
Contributor/s: |
|
Item Type: | Thesis (Master thesis) |
Masters title: | Ingeniería del Software |
Date: | June 2019 |
Subjects: | |
Faculty: | E.T.S. de Ingenieros Informáticos (UPM) |
Department: | Lenguajes y Sistemas Informáticos e Ingeniería del Software |
Creative Commons Licenses: | Recognition - No derivative works - Non commercial |
Preview |
PDF
- Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (993kB) | Preview |
Searching for code is, in general, a hard problem, as text is not commonly representative of what a program does. In this thesis, we present Moogle, a type-based API search engine for Elm, a functional programming language designed for web development. In Moogle, search queries are based on names or type signatures, whose adequate information can be leveraged for matching APIs from third-party libraries so that developers are able to discover and reuse existing functions without reconstructing a similar one. The key concept behind Moogle is the unification algorithm, where generic type signatures can be matched to concrete ones and vice versa. In order to optimize the performance for applying unification matches, Moogle stores the information of signatures in Neo4j, a graph DBMS that provides graph-based queries in its own query DSL, Cypher. Moogle also has its implementation on a parser to convert the signature of types into abstract syntax tree data models, and search string from users into Cypher queries. The signature of APIs in Neo4j are first selected by generated queries then finally filtered by unification module, the results of which can be categorized into two sets: the candidate set and the full match set, where all items will be ranked and shown in the user-interface. After development phase, we built and deployed our software with an online version based on Docker image.1 According to our test, Moogle outperforms its congeneric work, Elm-search, on many aspects including search range, allowed patterns and ranking metrics with an acceptable trade-off on performance.
Item ID: | 56373 |
---|---|
DC Identifier: | https://oa.upm.es/56373/ |
OAI Identifier: | oai:oa.upm.es:56373 |
Deposited by: | Biblioteca Facultad de Informatica |
Deposited on: | 10 Sep 2019 11:05 |
Last Modified: | 10 Sep 2019 11:05 |