Assisting code evolution (refactoring, adaptation, parallelisation, etc.) can be handy for improving code quality and execution speed. Generally, tools assisting developers are tailored to some language, making analyses approaches hard to be applied in practice when using a different language. In this paper, we propose a cross-language framework for implementing analyses on object-oriented code. By separating the logic for computing metrics, or detecting code smells, that lets us identify the need for improvements, from code exploration, we enable developers designing high-level recommendation tools that can be effectively applied on the most common object-oriented languages, such as e.g. Java and C++. Code exploration components will provide inspection and data commonly needed for representing the details of the code, such as control and data dependencies, or object and method lists. These will be language-specific and provided by the framework itself.

JSCAN: Designing an Easy to use LLVM-Based Static Analysis Framework

Fornaia A.;Scafiti S.;Tramontana E.
2019-01-01

Abstract

Assisting code evolution (refactoring, adaptation, parallelisation, etc.) can be handy for improving code quality and execution speed. Generally, tools assisting developers are tailored to some language, making analyses approaches hard to be applied in practice when using a different language. In this paper, we propose a cross-language framework for implementing analyses on object-oriented code. By separating the logic for computing metrics, or detecting code smells, that lets us identify the need for improvements, from code exploration, we enable developers designing high-level recommendation tools that can be effectively applied on the most common object-oriented languages, such as e.g. Java and C++. Code exploration components will provide inspection and data commonly needed for representing the details of the code, such as control and data dependencies, or object and method lists. These will be language-specific and provided by the framework itself.
2019
978-1-7281-0676-2
LLVM; Parallelism; Refactoring; Static Analysis
File in questo prodotto:
File Dimensione Formato  
WETICE_2019_paper_68.pdf

solo gestori archivio

Descrizione: Articolo principale
Tipologia: Documento in Pre-print
Licenza: NON PUBBLICO - Accesso privato/ristretto
Dimensione 271.51 kB
Formato Adobe PDF
271.51 kB Adobe PDF   Visualizza/Apri

I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/20.500.11769/377429
Citazioni
  • ???jsp.display-item.citation.pmc??? ND
  • Scopus 4
  • ???jsp.display-item.citation.isi??? 2
social impact