Think, Code, Document - A month passes by

The past 30 days went in balancing the Internship season at my college and implementing the main highlighting procedure in the plugin. Still that’s no excuse for not documenting my GSoC journey. So, here I am stressing out my brain, to remember the correct timeline of events.

July 29 - August 2: Drafted blueprint for highlighting procedure.
At the higher level, the list of lint problems generated (already implemented in previous coding phases) needed to be processed and converted into inline highlights inside the IDE. I designed the logic for highlighting, came up with a rough layout of the classes that were required for processing and highlighting, organized inter-class communication, and jumped into code.

August 3 - August 4: Maniac mode
I spent the next 2 days coding the base layout of the classes. The classes are:

  • IssueManager: class responsible for working with issues
  • IssueProcessor: main entry point for highlighting purpose, includes logic for creating HighlightInfo instances
  • HighlightIssue: class for holding runtime information
  • HighlightIssueWrapper: class for wrapping up HighlightIssue, HighlightInfo and RangeHighlighter instances in a per-document manner
  • HighlightIssueFactory: class for managing HighlightIssueWrapper instances for every document analysed
  • HighlightIssueService: A service for managing highlights (setting and clearing)

August 5 - August 12: Code written in 2 days is definitely not maintainable, hence I spent a week in refining the code and optimizing the logic along the way.

We have ourselves an end-to-end working plugin, that takes your files, coala configurations and highlights all the errors inside the IDE!

August 13 - August 15: Updated platform sources to v192.x (from previous 191.x) and Gradle to v5.6 (from v4.10.3)

August 15 - August 17: Created a settings page for coala.
The page included the ability to automatically detect coala from the PATH and in-case the binary executable is missing from the PATH, its location can be set manually as-well.

August 15 - Now: Currently, I’m finishing with the javadocs (No great code without proper documentation right?) and some minor enhancements throughout the plugin.

The final evaluation is currently due. I’m thinking of working on polishing the plugin as much as possible before the final code freeze. Thereafter, I’ll write a complete report and file the final evaluations.

Wish me luck!