GSoC Project: Enhancing coala-quickstart

20 views
Skip to first unread message

Satwik Kansal

unread,
May 12, 2017, 5:32:33 PM5/12/17
to coala-devel
Hello, coalians!

I'm Satwik, a Software Engineering Junior from New Delhi, India. This summer, I will be working on enhancing the coala-quickstart (a tool to help users quickly get started with coala by doing all the boilerplate work) with my mentors @adtac and @Adrianzatreanu as a part of Google Summer of Code 2017 program.

TL;DR
The primary objectives of my project will be:

- Develop a mechanism to extract information of interest to coala (like setting values) from some common kinds of project files.

- Make coala-quickstart include relevant bears to the project in the generated .coafile.

- Improving the user interface, increasing automation and adding some minor features.


Okay, let's have a deeper dive into the project...


The aim of coala is to make static code analysis easier for the users. However, getting started with coala for a user requires prior knowledge about different bears coala has (users may get confused among lots of available options), how to create a correct coafile, what values to provide for settings, avoid duplicity among the bears, what bear-dependencies to install, etc.

The ultimate goal of the project is to overcome these barriers to some extent and generate a more tailored (project specific) coala configuration file with less user effort and time.

Keeping in mind coala has upcoming projects like “aspects” in this direction, the above changes will be modular and extensible so that they can be used in other parts of coala and can easily be integrated with future projects.


PHASE 1 (Collecting the information)

The first phase of the project involves setting up an information extraction and utilization mechanism for coala and the extract useful information from information rich meta-files like "Gruntfile.js", ".editorcofig", "Gemfile" and few others. My primary focus in community bonding phase would be to research about the structure of these files and what all information can be extracted from them.


PHASE 2 (Recommending and Filtering based on new information)

This phase involves recommending and filtering bears by utilizing the bears' metadata, extracted information like linters used in the project, installed bear dependencies, languages detected, importance of bears, installed dependecies and bear capabilities.

After the bears are filtered, and relevant information have been extracted out of the projects, the users are notified, a more tailored version of coafile is written.  The major challenge of this phase would be come up with an algorithm that optimally combines all the above features to recommend the best-suited Bears for the projects.


PHASE 3 (Improving usability)

This phase involves CLI improvements. Some of the major changes are the autocomplete feature, input validation, allowing users to enter flexible values (like allowing T, yo, yes, yeah, etc for True), Input Validation and Sanitization, improve formatting and fix redundant warnings.


Besides this, I've few Stretch goals like

- Installing bear dependencies via coala-quickstart.

- Smart update of .coafile (A coafile that adapts automatically to change in project files)

- Performing other minor improvements and fixing some existing issues!



Reply all
Reply to author
Forward
0 new messages