Produtos UFMG::DCC::LLP - Programing Language Laboratory

TOOL PROTOTYPE WITHOUT REGISTRATION



2021


  1. Linter Bad Smells Vídeo

    The Linter Bad Smells tool is a linter that performs static analysis of projects implemented in JavaScript language, looking for code smells to increase the quality of code developed by software engineers. Therefore, its purposes are: to assist software developers in the analysis of source code; facilitate the identification of possible bad smells in applications developed in this language; disseminate the concepts of code smells to the Javascript community, and thus assist software engineers in refactoring code smells identified by Linter Bad Smells in the analyzed source code via the addition of a refactoring module associated with the tool documentation.

    Linter Bad Smells is available in the npm package manager called eslint-pluguin-bad-smells through this link.

    The package page shows how to install the Linter Bad Smells tool and possible refactoring for each code smell it supports: long method, long parameter list, long message chain, nested callback, and empty catch. And then, from the installation of the Linter Bad Smells, the user will be able to enable this code smells for performing static analysis of the code.

    The executable is available through this link.
    Lucas Gonçalves Antunes Paiva, Mariza A.S. Bigonha and Bruno Luan Sousa.


  2. HaskellFL Vídeo

    Bugs are a reality in software development, and while experienced programmers may know their way among several bugs, some beginners may feel discouraged by them. Compilers can help by catching some errors, but they are still not able to encounter logical errors on their own. These errors can be tricky for a developer, and even more for an automatic tool, to identify.

    With this problem in mind, we projected and implemented the HaskellFL tool, which locates logical errors in functional programming assignments written in a subset of the Haskell language.

    To run HaskellFL, one must invoke it passing three file paths as inputs:
    (I) one path for the Haskell program containing a bug,
    (II) another for the text file containing passing test cases, and
    (III) the last one for the text file with failing test cases.

    A failing test case is a combination of inputs that, once we call the program we are testing with them, this program will output an incorrect result. On the other hand, a passing test case will produce the correct output in the same situation.

    We used Cabal, the standard package system for Haskell in HaskellFL. So, the actual command to invoke HaskellFL is cabalRun, followed by the target we want to execute, which is, in our case, HaskellFL followed by the three file paths enumerated above. With these inputs, the tool runs the tests and locates what expression is more likely to be the error root cause. Optionally, we may also specify the technique of choice: Tarantula or Ochiai. If we omit this information here, we will be prompted for it later in the command line.

    Furthermore, HaskellFL can also interpret the test cases and expose their results. To do that, we must call HaskellFL with the code and test case paths, followed by the keyword run and the name of the function to be interpreted.

    An article entitled, Detecting Logical Errors in Haskell, published in the proceedings of the 15th International Conference on Testing Software and Systems (ICTSS 2021) is available through this link.

    Additionally, the HaskellFL tool is publicly available on GitHub, together with the test suite through this link.

    Vanessa Cristiny Rodrigues Vasconcelos e Mariza A.S. Bigonha.


2020


  1. Um Oráculo de Bad Smell

    We have done a bad-smells oracle with a manual approach to add it to the set of oracles available for download. This oracle identifies the bad smells Wide Class, Long Method, Data Class, Feature Envy, and Refused Bequest by manually inspecting a collection of five open-source software developed in Java: Aardvark, Logging, GanttProject, AndEngine, and Codec to find the instances of those smells. To measure the quality of the bad smell detection tools JDeodorant, JSpIRIT, and FindSmells, we compared the results obtained by the proposed oracle with the results extracted by these tools. The worksheets that generated this comparison are available for a free consultation at the link below.
    The results are available through this link.
    Rafael Prates, Mariza A.S. Bigonha and Kecia A.M. Ferreira.


2017


  1. Design Pattern Smell Vídeo

    Design Pattern Smell is a tool for co-occurrences detection between design patterns and bad smell in software systems. With Design Pattern Smell, the user may identify the artifacts that hold such relationships and the intensity with which they occur in the design patterns analyzed. In addition, Design Pattern Smell may be used as a refactoring guide, since all artifacts detected with co-occurrences are displayed to the user.
    The executable is available through this link.
    The source is available at this link.
    The input files are available through this link.
    Bruno L. Sousa,Mariza A.S. Bigonha and Kecia A.M. Ferreira.


2016


  1. FindSmells Vídeo

    Tool that support the detection of bad smells based on XML files. With the tool, the user can propose its own detection strategies considering the software metrics available in the XML file, the comparison logical operators, and the thresholds informed by the user. To run the detection strategy, FindSmells filters the source code elements, methods and classes, that are in accordance with the rules defined for each metric that composes the detection strategy. The tool also exports the obtained results via CSV file to provide easy manipulation and further analysis.
    The executable is available through this link.
    The source is available at this link.
    The XML input files are available through this link.
    Bruno L. Sousa, Priscila P. Souza, Eduardo Fernandes, Mariza A.S. Bigonha and Kecia A.M. Ferreira.


2015


  1. Asymptus Tool - A Tool for Automatic Inference of Loop Complexity

    Asymptus is tool for automatic inference of function complexity. It uses a hybrid approach, mixing static analysis and dynamic profiling, in order to provide more accurate results. Statically, Asymptus determines: (i) the inputs of a loop, i.e., the variables that control its iterations; and (ii) an algebraic equation relating the loops within a function. Then the program is instrumented to output pairs relating input values and number of operations executed. By running the program over different inputs, we generate sufficient points for a polynomial interpolator in order to precisely determine a complexity function for loops. In the end, the complexity function for each loop is combined using an algebra of our own craft. Asymptus was implemented using the LLVM compilation infrastructure. Asymptus consists of four main steps: (1) static analysis, (2) code instrumentation, (3) dynamic information extraction and (4) polynomial interpolation.
    Installing Asymptus Tool
    Asymptus requires LLVM 3.4 to perform static analysis. To install LLVM 3.4 you can follow these tutorials: downloading a specific version of LLVM and installing LLVM. Note that it is necessary to also install clang, the LLVM front-end. Once you have a working installation of LLVM 3.4, you can download the Asymptus binaries or source code and install it.
    Usage
    Asymptus executes over either a C/C++ file or LLVM bytecodes. The simplest way to run our tool is to execute ./asymptus input_file.(c|cpp|bc).
    It will identify how many command line arguments the input program reads and generate numeric values for them. You may also use the following options:
    --args type .... Allows the user to specify the types of command line arguments. It is necessary to specify as many argument as the program reads in order to have a correct execution. The types may be one of the following: int, long, float, double, num, char or string.
    --mix ARG ? Allows the user to mix random generated arguments with concrete data. When using this option, the random arguments types have to come between { }. For instance, --mix myInput {int}.
    --man This option will ask the user for only concrete inputs. Asymptus will ask for the inputs of each desired execution. An empty line means all data has been provided.
    -v Verbose mode. Prints the polynomial for each loop inside a function.
    -h or --help Prints this usage message. Download Linux binaries Download Mac OS X binaries
    Junio Cezar, Francisco Demontiê, Mariza A.S. Bigonha e Fernando Pereira.


2014


  1. RAFTool - Methods Filtering Tool, Classes and Packages Vídeo-Tutorial

    The RAFTool tool performs filtering methods, classes and packages that have anomalous measurements softwares metrics-driven objects according to the thresholds values suggested in the work. To install and use RAFTool is necessary that the Java virtual machine installed with version greater than or equal to 1.6. The executable is available through this link.

    RAFTool source code is available on GoogleCode, hosting projects in a collaborative development environment. It used Subversion as version control tool.
    The project can be downloaded directly in Eclipse and is available through the this link..
    Tarcísio Filó, Mariza A.S.Bigonha, Kecia Ferreira.


  2. ArchLint

    from four heuristics ArchLint detects absences and differences present in the source code systems oriented by objects.
    Cristiano Maffort, Marco Túlio O. Valente, Mariza Bigonha.

  3. The UMLSmell Tool Vídeo

    Weed

    UMLSmell is a tool that, automatically via software metrics, identify bad smell. It recognizes in which classes were identified the bad smells, and at what level, regular or bad. UMLsmell receives as input a XMI file, which corresponds to the diagram classes to be analyzed and identified via metrics. It is held parsing in order to extract the following information: classes, attributes, methods, parameters and relationships. This data is stored internally in the data structures defined by the program for future reference, so that, from these data, the functionality Generating metrics allows the user to select among existing metrics in the system, those for which he wants to generate reports for late analysis. This feature allows the user to check the values of metrics selected for software classes. These metrics allow the functionality Identify bad smells, which is the central point of the tool. Define threshold allows the user to customize the threshold in regular and bad for each metric collected by the tool. This feature was implemented so that the user is free to choose the threshold he prefers to use. Create project, create a file that stores all the changes in threshold. This feature is useful if the threshold is changed as you need and want to save them for future uses of UMLsmell. Export results, it allows that the metrics analysis and bad smells are exported to spreadsheet format accepted by most of the tools Spreadsheets currently available.
    The executable is available through this link.

    Henrique N. Gomes, Flávio Madureira, Mariza A.S. Bigonha, Kecia Ferreira.




2011


  1. The Connecta Platform CONNECTA


    Weed

    Connecta is a tool that allows gathering object-oriented software metrics; predicting change impact propagation, exploring the software networks, and comparing the structure of two versions of a software system. The tool performs such analyses on Java software systems.

    Connecta was proposed by Kecia Ferreira, in her Master Thesis, and has been evolved by the same researcher, in her PhD Dissertation. Connecta is, now, an ongoing project whose aim is to provide a platform for measuring and analyzing data of software systems.

    The tool has been used to allow research on software measurement, change propagation impact, and software evolution.

    The main features of Connecta is described here

    Download Connecta.
    Kecia A. Marques Ferreira, Mariza A. S. Bigonha, Roberto S. Bigonha , Luiz Felipe O. Mendes, Heitor C. Almeida.


2001


  1. Interpreter for the Abstract Machine TAM

    Interpreter for TAM, based on the description given by David Watt in "Programming Language Processors".
    Reuber G. Duarte e Mariza Bigonha.


1999


  1. HyperPro

    Integrated system for documentation and Prolog programs using techniques of hypertext and literary programming.
    Ed-Dbali AbdelAli, Pierre Deransart, Mariza Bigonha, José Siqueira, Roberto Bigonha, Fabricio Schmidt, Flávia P. Ribeiro. Projeto Rhae.


1998


  1. Interpreter for a Functional Language Oriented by Objects

    Wendell F. Taveira, Mariza Bigonha e Roberto S. Bigonha.


  2. Symbols Table

    "Symbols Table Package" for Delphi languages C and Java, containing the main operations in the approaches : Linear , Ordinate List , Binary Search Trees, Hash Tables and Binary Trees Forests.
    Yêdda Aires D. Silva e Mariza A.S. Bigonha.


  3. GALsic

    Lexical analyzer generator for Windows.
    Erika Hamacek Pinto e Mariza A.S. Bigonha.


1990


  1. SIC

    C version for Windows -NT.
    Mariza Bigonha, Roberto S. Bigonha, Marco R. Costa e Valeska Russo.


1986


  1. Pascal-S

    Pascal compiler developed for the computer supermicro DCC2600.
    Mariza A.S. Bigonha.


  2. NFios

    - basic input and output non-blocking for managing a PC based on Intel 8086/8088, used in supermicro computer DCC2600.
    Mariza A.S. Bigonha.


COMPUTER PROGRAM WITH REGISTRATION


1987


  1. SIC Compilers Implementation System

    Automatic generation of front-end compilers with automatic built-in error recovery system. Registered Program in Computer Registry on 06.03.1987. Computer Program Registration Certificate No. 09220-7, in accordance with the provisions of Articles 3, Item III, 4, Item VIII, 8, Paragraph IV, V and VI, 11, 12 and 22 of Law No. 7232 of 10.29.1984, Article 1. Decrete Law No. 2203 of 27/12/1984 and following the criteria set out in Normative Act No. 22/82 of 12/02/1982.
    Mariza A. S. Bigonha, Roberto S. Bigonha.


PRODUCTS


2009


  1. ABCD algorithm and SSI representation incorporated into the LLVM compiler

    from "Adding Static Single Information Form to LLVM" work within the Google SummerCode 2009 Program.
    André Luiz C. Tavares, Fernando Pereira, Mariza A.S. Bigonha.


  2. Static Profiling

    Feature incorporated into the LLVM compiler from "Adding Static Profiling Capabilities to LLVM work" within Google SummerCode 2009 Program.
    Andrei Rimsa Álvares, Fernando Pereira, Mariza A.S. Bigonha.


  3. New optimizations added in Mozilla Firefox JavaScript compiler

    from work "Improving the Register Allocator of Trace Monkey" inside Google SummerCode 2009 Program
    Marcos Rodrigo Sol, Fernando Pereira, Mariza A.S. Bigonha.

1998


  1. NET

    System for generating netlist from circuit descriptions and definitions of macro circuits used. NET displays the connections between pins of standard cells that make up the circuit.
    Roberto S. Bigonha e Mariza A. S. Bigonha


  2. CDM

    Acquisition system multi-frequencial MFC data in telephone exchanges. A special hardware collection sequences MFC signals generated by the establishment of protocol telephone connections and transmits it to a computer that stores them in a database.
    Roberto S. Bigonha, Newton A.C. Lages, João Eduardo R. Dantas, Rodolf Schwaners, Mariza A. S. Bigonha e Beatriz Mintz.


img

Last update: March 15th, 2023.