128 research outputs found

    SKilL language server

    Get PDF
    Language analysis features offered by integrated development environments (IDEs) can ease and accelerate the task of writing code, but are often not available for domain-specific languages. The Language Server Protocol (LSP) aims to solve this problem by allowing language servers that support these features for a certain programming language to be used portably in a number of IDEs. A language server for Serialization Killer Language (SKilL) was implemented that supports a multitude of language features including automatic formatting, completion suggestions, and display of references and documentation associated with symbols. This thesis presents how the language server was implemented and discusses associated challenges that arose due to the nature of the SKilL and LSP specification

    Declarative Specification of Intraprocedural Control-flow and Dataflow Analysis

    Get PDF
    Static program analysis plays a crucial role in ensuring the quality and security of software applications by detecting and fixing bugs, and potential security vulnerabilities in the code. The use of declarative paradigms in dataflow analysis as part of static program analysis has become increasingly popular in recent years. This is due to its enhanced expressivity and modularity, allowing for a higher-level programming approach, resulting in easy and efficient development.The aim of this thesis is to explore the design and implementation of control-flow and dataflow analyses using the declarative Reference Attribute Grammars formalism. Specifically, we focus on the construction of analyses directly on the source code rather than on an intermediate representation.The main result of this thesis is our language-agnostic framework, called IntraCFG. IntraCFG enables efficient and effective dataflow analysis by allowing the construction of precise and source-level control-flow graphs. The framework superimposes control-flow graphs on top of the abstract syntax tree of the program. The effectiveness of IntraCFG is demonstrated through two case studies, IntraJ and IntraTeal. These case studies showcase the potential and flexibility of IntraCFG in diverse contexts, such as bug detection and education. IntraJ supports the Java programming language, while IntraTeal is a tool designed for teaching program analysis for an educational language, Teal.IntraJ has proven to be faster than and as precise as well-known industrial tools. The combination of precision, performance, and on-demand evaluation in IntraJ leads to low latency in querying the analysis results. This makes IntraJ a suitable tool for use in interactive tools. Preliminary experiments have also been conducted to demonstrate how IntraJ can be used to support interactive bug detection and fixing.Additionally, this thesis presents JFeature, a tool for automatically extracting and summarising the features of a Java corpus, including the use of different Java features (e.g., use of Lambda Expressions) across different Java versions. JFeature provides researchers and developers with a deeper understanding of the characteristics of corpora, enabling them to identify suitable benchmarks for the evaluation of their tools and methodologies

    Redesigning the jMetal Multi-Objective Optimization Framework

    Get PDF
    jMetal, an open source, Java-based framework for multi-objective optimization with metaheuristics, has become a valuable tool for many researches in the area as well as for some industrial partners in the last ten years. Our experience using and maintaining it during that time, as well as the received comments and suggestions, have helped us improve the jMetal design and identify significant features to incorporate. This paper revisits the jMetal architecture, describing its refined new design, which relies on design patterns, principles from object-oriented design, and a better use of the Java language features to improve the quality of the code, without disregarding jMetal ever goals of simplicity, facility of use, flexibility, extensibility and portability. Among the newly incorporated features, jMetal supports live interaction with running algorithms and parallel execution of algorithms.Universidad de Málaga. Campus de Excelencia Internacional Andalucía Tech

    Construção de Linguagens Específicas de Domínio e a sua Integração com IDEs

    Get PDF
    Low-code platforms are presented as model-based software development solutions. In this sense, they could be described as applications of the Model-driven Engineering (MDE) paradigm. Despite the apparent success of these development platforms, they do not appear to adhere to standards and are frequently closed-source solutions. These characteristics may cause problems in the maintenance and evolution of solutions developed on these platforms in the future. One of these issues is the difficulty in migrating solutions to other platforms, implying that the client/user is dependent on the platform. The goal of the study is to externalize low-code platform modeling or any DSL to more general-purpose integrated development environments (IDE) like Visual Studio Code or Eclipse. As a result, users are able to use DSLs to model their applications in the IDE and integrate them with more general-purpose programming languages. This dissertation starts by providing an overview of the current state of the use of domainspecific language in general-purpose IDE environments. Furthermore, several designs were developed to find the best solution that achieves the goal. The designs are then compared, and the best one is selected to be implemented. The solution developed still has quite some future work to be done. It lacks many of the features found in a full-fledged IDE for a general-purpose language, like Visual Studio Code supports Javascript. Nonetheless, it may be quite useful when deploying a DSL to a generalpurpose IDE.As plataformas low-code são apresentadas como soluções de desenvolvimento de software baseadas em modelos. Nesse sentido, podem ser descritas como aplicações do paradigma Model-driven Engineering (MDE). Apesar do aparente sucesso dessas plataformas de desenvolvimento, não parecem aderir aos padrões e frequentemente são soluções de código fechado. Essas características podem causar problemas na manutenção e evolução das soluções desenvolvidas nessas plataformas no futuro. Um desses problemas é a dificuldade em migrar soluções para outras plataformas, implicando que o cliente seja dependente da plataforma. O objetivo do estudo é externalizar a modelagem de plataforma low-code ou de uma linguagens específica de domínio (DSL) para ambientes de desenvolvimento integrado (IDE) de propósito geral, como Visual Studio Code ou Eclipse. Como resultado, os usuários poderão usar DSLs para modelar seus aplicativos no IDE e integrá-los com linguagens de programação mais gerais. Esta dissertação começa fornecendo uma visão geral do estado atual do uso de DSL em ambientes IDE de uso geral. Além disso, vários designs foram desenvolvidos para encontrar a melhor solução que atinja o objetivo. Os designs são então comparados e o melhor é selecionado para ser implementado. A solução desenvolvida ainda tem bastante trabalho a ser feito. Faltam muitas das funcionalidades encontrados em um IDE para uma linguagem de uso geral, tal com o Visual Studio Code tem suporte para Javascript. No entanto, pode ser bastante útil ao implantar uma DSL num IDE de uso geral

    Contracts in the Wild: A Study of Java Programs

    Get PDF

    A Language Server for Soufflé Datalog

    Get PDF
    Τα τελευταία χρόνια η ανάπτυξη λογισμικού υποβοηθείται σε μεγάλο βαθμό από εργαλεία και βιβλιοθήκες που προσφέρονται ως μέρος των γλωσσών προγραμματισμού, καθώς και από Ολοκληρωμένα Περιβάλλοντα Ανάπτυξης. Επίσης, πλέον οι προγραμματιστές αναμένουν ένα επίπεδο αυτοματοποίησης την ώρα της συγγραφής κώδικα, όπως αυτό- ματη συμπλήρωση κώδικα ή επισήμανση συντακτικών λαθών. Σε αυτή την εργασία εξε- ρευνούμε το πως μπορεί να χρησιμοποιηθεί το πρωτόκολλο LSP και άλλες τεχνολογίες για την προσθήκη λειτουργιών υποστήριξης, όπως αυτές που αναφέρθηκαν, σε μια νεα γλώσσα, τη Soufflé Datalog. H Soufflé είναι μια γλώσσα λογικού προγραμματισμού, που χρησιμοποιείται για στατική ανάλυση προγραμμάτων. Αναπτύξαμε έναν Language Server, ο οποίος μπορεί να ενσωματωθεί σε πρόσθετο οποιουδήποτε συγγραφέα πηγαίου κώδικα συμβατό με το πρωτόκολλο LSP, για να προστεθούν "έξυπνες" λειτουργίες και υποστήριξη για τη γλώσσα Soufflé Datalog.Software development is increasingly supported by programming language tools and IDEs, in order to meet the increase in software complexity and computing power. Programmers nowadays also expect a level of automation like automatic syntax error detection or a level of auto complete when editing their source-code. In this thesis we explore how one can use the Language Server Protocol and other technologies to add tool support to a novel programming language like Soufflé Datalog, a logic programming language used for static program analysis. We developed a Language Server for Soufflé, which can be used inside a plugin for a variety of source-code editors or IDEs, compatible with LSP, to add smart functionality and support for Soufflé
    corecore