Google Summer of Code '16 Summary
The Google Summer of Code program has come to an end and it’s been an amazing experience. I’ve learnt a lot in the last three months. Apart from gaining technical knowledge, I’ve learnt how to communicate well within a team, manage deadlines, and maintain code.
This blog post is the final report of my Google Summer of Code project.
Commits
The tables below list all the commits I’ve made to various coala
repositories during the project.
coala-eclipse
SHA | Description |
---|---|
d5053c7 | export: Update installation binary |
fbdede5 | plugin.xml: Add ‘Run coala’ button to toolbar |
ae8d98e | plugin.xml: Enable coala in all context menus |
3abe286 | BearMenu: List bears in ascending order |
555e68f | ExternalUtils: Ask user for non-optional settings |
2b90dcc | travis.yml: Disable P2 mirrors |
0238e7d | travis.yml: Use pre-release coala |
f4283ec | BearMenu: Use coala-json to get list of bears |
9cf253d | ExternalUtils: Check coala binary before execution |
01af287 | travis.yml: Add DISPLAY property |
69da10e | tests: Add QuickFixerTest |
cd862e3 | coafile: Ignore diff_match_patch.java |
866ee2a | MarkerTest: Update test |
794c21a | Add MarkerResolution and QuickFix |
7d83c96 | RuncoafileHandler.java: Show error dialog instead of logging error |
844b84e | Rename marker ID to com.coala.core.problem |
9774379 | ExternalUtils.java: Process all sections |
1da1c83 | tests: Add coafile test |
1d7809d | coafileHandler: Handle coafile |
6a1bdc9 | Rename Plugin.java to coafileHandler |
a622983 | ExternalUtils.java: Rename function |
4c3befe | tests: Update tests |
fa70d22 | menu: Add bears to menu |
5141977 | Move external utilities to separate class |
848e7ab | core/plugin.xml: Move menu to PackageExplorer |
1699842 | coafile: Add .coafile |
b74a29d | tests: Refactor for Gitmate |
b9119a4 | core: Refactor for Gitmate |
19994cb | README.md: Fix export URL |
0422a33 | README.md: Add build instructions |
5c17301 | README.md: Add Travis badge |
a021905 | README.md: Remove alternate install instructions |
d32eaf5 | export: Add update-site |
3448ff9 | core: Remove old update-site |
55fb691 | Add update site |
cb97a57 | Plugin.java: Use commons-exec to run coala-json |
60dc1b1 | lib: Add commons-exec |
42a0ca2 | tests: Add RunCmdTest |
12f5360 | MarkerTest: Improve test |
e5cf094 | RemoveMarkers.java: Refactor line length |
4486410 | Plugin.java: Refactor methods |
895a88a | Fix travis-ci |
9af350a | Moved tests to separate package |
a7a142c | Add Travis-Ci |
e376fc1 | Add LICENSE |
7e03099 | Remove ignored files |
8be28c5 | Add .gitignore |
68758db | tests: Add MarkerTest |
e4426d6 | Rename com.coala.plugin to com.coala.core |
513e6be | Clean up |
coala-bears
SHA | Description |
---|---|
359afc5 | bears: Use coala-utils for string processing |
d024ce5 | requirements.txt: Update coala |
9e5b42f | ClangComplexityBear: Make cursor_kinds private |
0fef458 | CheckstyleBear: Handle column field correctly |
coala
SHA | Description |
---|---|
f9e46c8 | coala-json: Add show_bears and filter_by_language |
460a8c1 | ConfigurationGathering: Add get_filtered_bears |
In total, this accounts for a change of +6292 / -1802 LOC.
Current state of the plug-in
After working hard for three months on the plug-in, I’m happy to say that the plug-in is very much usable by the end user. The plug-in will make the life of developers who use Eclipse easy by allowing them to analyze code directly within the IDE.
The plug-in provides two ways to run the analysis. By using the pre-configured
coafile
and by manually selecting a bear. The first approach is preferred since
it allows running the analysis on the whole project directory, in contrast with the manual
approach which runs the analysis on a specific file.
Once the analysis is initiated, the plug-in communicates with coala using the coala-json
binary. After the analysis is complete the results (if any) are marked on the editor
along with the issue messages.
Another important feature of the plug-in is that it allows the user to automatically fix
the issues if the bear used gives the corrected results. Once the markers are visible in the
Problems
view the Quick Fix
option can be selected and the diff
to correct the issue
will be automatically applied to the source file. This internally uses Google’s
diff-match-patch library.
There’re a lot of other things that the plug-in does that I haven’t covered in this post like user interaction for the bears that require user input, dynamic menus, etc. I’ve extensively covered my progress in the bi-weekly posts. Do check them out if you wish to know more.
Remaining work
Most of the stuff that I had proposed in my proposal is completed successfully. But I
couldn’t complete work on the coafile
editor. This task turned out to be much more
complicated than I expected it to be. Nevertheless I’ll resume work on it as soon as
possible.
Another feature I proposed for the plug-in was the “Bear creation wizard”. This was an experimental feature that I would’ve discussed with my mentor if my project completed before the deadline (which obviously didn’t happen). Also a similar tool called coala_bears_create was implemented by mr-karan in his project.
Acknowledgements
Finally I would like to thank Google for this amazing opportunity to work with some of the most amazing people, learn so much, and get paid to have fun. Special thanks to my mentor Harsh Dattani for helping me with the project, and the folks at Python Software Foundation and coala for selecting me to be a part of this programme.