CodeQuest: scalable source code queries with datalog. Source code querying tools allow programmers to explore relations between different parts of the code base. This paper describes such a tool, named codeQuest. It combines two previous proposals, namely the use of logic programming and database systems. As the query language we use safe Datalog, which was originally introduced in the theory of databases. That provides just the right level of expressiveness; in particular recursion is indispensable for source code queries. Safe Datalog is like Prolog, but all queries are guaranteed to terminate, and there is no need for extra-logical annotations. Our implementation of Datalog maps queries to a relational database system. We are thus able to capitalise on the query optimiser provided by such a system. For recursive queries we implement our own optimisations in the translation from Datalog to SQL. Experiments confirm that this strategy yields an efficient, scalable code querying system.

This software is also peer reviewed by journal TOMS.

References in zbMATH (referenced in 8 articles )

Showing results 1 to 8 of 8.
Sorted by year (citations)

  1. Frey, Tim; Gräf, Matthias: Hypermodelling reporting: towards cockpits for code structure (2013) ioport
  2. Gottlob, Georg; Manna, Marco; Pieris, Andreas: Combining decidability paradigms for existential rules (2013)
  3. Brichau, Johan; Kellens, Andy; Castro, Sergio; D’Hondt, Theo: Enforcing structural regularities in software using intensive (2010)
  4. Antkiewicz, Michał; Tonelli bartolomei, Thiago; Czarnecki, Krzysztof: Fast extraction of high-quality framework-specific models from application code (2009) ioport
  5. Linstead, Erik; Bajracharya, Sushil; Ngo, Trung; Rigor, Paul; Lopes, Cristina; Baldi, Pierre: Sourcerer: mining and searching internet-scale software repositories (2009) ioport
  6. Mäkelä, Sami; Leppänen, Ville: Client-based cohesion metrics for Java programs (2009)
  7. Marin, Marius; van Deursen, Arie; Moonen, Leon; van der Rijst, Robin: An integrated crosscutting concern migration strategy and its semi-automated application to JhotDraw (2009) ioport
  8. Avgustinov, Pavel; Hajiyev, Elnar; Ongkingco, Neil; de Moor, Oege; Sereni, Damien; Tibble, Julian; Verbaere, Mathieu: Semantics of static pointcuts in AspectJ (2007)