Google Summer of Code 2019 Work Product Submission


Bhushan Khanale

I’m a final year student of Computer Engineering at International Institute of Information Technology, Bhubaneswar. I worked on coala project during my summer to improve the generic bear quality. I implemented few new bears (plugins) to improving the overall usability of coala. I also worked on autopep8 and coala’s package manager giving them few more features to work with.

Project Tarball


Phase 1

Phase 2

Phase 3

Repository Link to PR/s Description
c  cEPs View

cEP-0031: Improve Generic Bear Quality

c  coala View

Add require_files settings

c  coala-bears View

bears/general: Add FileModeBear

c  coala-bears View

bears/general: Add OutdatedDependencyBear

c  coala-bears View

bears/general: Add RegexLintBear

c  coala-bears View

bears/python: Add RequirementsCheckBear

c  coala-bears View

IndentationBear: Ignore doc comments

d  dependency_management View

Add get_latest_version for PipRequirement and NpmRequirement

Improve Generic Bear Quality

Work Done

  1. coala now has new bears (yet to be merged) namely FileModeBear, RequirementsCheckBear, OutdatedDependencyBear and RegexLintBear.
  2. coala is also set to have two new settings require_files_not_empty and require_files_for_each_glob which are responsible to check for the files setting to not evaluate empty and to require at least one file match for each glob in files.
  3. coala’s package manager has new function get_latest_version (currently only for PipRequirement and NpmRequirement) to fetch the latest version for the given package.
  4. Pycodestyle - PEP8Bear integration to solve the issue of missing the issue statements while running the PEP8Bear.


It was a great learning experience. I was able to work in my favourite parts of coala, the coala-bears. Most of the bears I implemented were long due and they weren’t having a good stable algorithm for them to work. Finding these details was quite challenging. Getting something like OutdatedDependencyBear to work was especially very tough. Getting everything to work while maintaining a full coverage provided a good learning experience for me.

Work to be done

The first task is to get all the PRs merged. This might take some time since a lot of CI failures on coala repositories. Apart from that some of the implementation details might need changes as per the reviews received on the PRs.

MarkdownBear currently doesn’t emit the issues with the patches and it reduces the usability of the bear. Currently, there is stable fix for this issue due to the architecture of remark-lint tool. Although, in future this might change and the bear would also need to be updated.

The OutdatedDependencyBear currently doesn’t support the npm requirements and this needs a further development in the solution already present for pip requirement type. The overall architecture of the bear can be improved massively if coala’s package manager becomes much more featured that it is today.