GSoC ’17 Post #6: The journey ends

The coding period is over and this blog post summarizes the work done by me during the short span of 2 months(June 1 - August 23). I would like to express my gratitude to coala for giving me the opportunity to work on this project and my mentor @Makman2. A big shoutout to Google for promoting the OSS (Open Source Software) culture.

The coolest part was that I could actually run the InvalidLinkBear to make sure that all the links were working.

Work Summary

The milestones achieved were :

  1. Community Bonding
    • Designing the new testing API yielding useful results
    • Trying out all the linters manually
    • Updating the projects page
  2. Phase 1
    • Add doctests for generate_ordering
    • Add abstract base class to group classes annotated with generate_eq or generate_ordering
    • Performance improvement for RubocopBear
    • Annotate objects implementing generate_eq or generate_ordering with a new field
    • Fix docker image
    • Implementation of the StylintBear
    • Implementation of settings for the StylintBear supported from the coala side
    • A basic merge supporting a config file for stylint
    • Add stylint to docker
    • Implementation of the TextLintBear
    • Add textlint to docker
    • Complete the implementation of the testing API yielding useful results
  3. Phase 2
    • MarkdownBear: Use remark-lint to report useful messages
    • MarkdownBear: Add remark-validate-links plugin
    • MarkdownBear: Replace markdown_horizontal_rule
    • Implementation of the TravisLintBear
    • Implementation of the PugLintBear
    • Implementation of the ArtisticStyleBear
    • Add all the bears implemented during PHASE 2 to docker
    • Design and implement the testing API to yield stderr and stdout
    • execute_bear: Improve AssertionError message generation
    • LocalBearTestHelper: Remove check_order=False from check_line_result_count
    • Fix breakage for rubocop version > 0.47.1
  4. Phase 3
    • Remove pragma: no cover from ElmLintBear
    • TravisLintBear: Check for internet connection
    • Fix unexpected keyword argument in new_process_output(...)
    • Introduce virtual base class for linters and use it to improve the check inside LocalBearTestHelper
    • Implementation of the HttpoliceBear
    • Implementation of the CSSCombBear
    • Implementation of the HTMLHintBear
    • Add all the bears implemented during PHASE 3 to docker
  • Conceptually, this milestone turned out to be quite difficult, but basic improvement for that topic has been approved. (See this issue).

Repository : coala-bears

Issue reference Pull Request Commit shortlog Commit hash Status
#754 #1610 bears/stylus: Add StylintBear 47d3956 Merged
#1795 #1796 StylintBear: Implement settings e4a9d34 Merged
#1839 #1841 RubocopBear: Optional generation of config_file 45dfb62 Merged
#1576 #1597 bears/general: Add TextLintBear d09c8f9 Merged
#294 #1879 bears/yaml: Add TravisLintBear 2f004bc Merged
#1548 #1890 RuboCopBear: Fix CI breakage for version > 0.47.1 d35b120 Merged
#1907 #1908 MarkdownBear: Replace markdown_horizontal_rule e2cf115 Merged
#924 #1919 MarkdownBear: Add validate-links plugin f68bd91 Merged
- #1919 MarkdownBear: Rename test classname 2a21048 Merged
- #1919 MarkdownBear: Rename remark_configs_plugins d83fe5f Merged
- #1919 MarkdownBear: Improve result message 71f6bc5 Merged
- #1919 MarkdownBear: Rename remark_configs_settings d6100ce Merged
#290 #1936 bears/pug: Add PugLintBear 1d31827 Merged
#388 #1882 bears/c_languages: Add ArtisticStyleBear 65d6304 Merged
#926 #1942 MarkdownBear: Add remark-lint settings 3dc08bf Merged
- #1958 requirements.txt: Update coala 04f490c Merged
#634 #1957 bears/css: Add CSSCombBear 2bef3df Merged
#596 #1962 bears/hypertext: Add HTTPoliceLintBear.py 40dd5d4 Merged
#635 #1987 bears/hypertext: Add HTMLHintBear b49553a Merged
#1996 #1997 ElmLintBear: Remove pragma: no cover 0a25352 Merged
#1978 #1982 TravisLintBear: Check for internet connection f51e54d Merged

Repository : coala

Issue reference Pull Request Commit shortlog Commit hash Status
#4418 #4417 execute_bear: Improve AssertionError message 0edf040 Merged
#4451 #4453 LocalBearTestHelper: Remove check_order 0aa077 Merged
#455 #4554 Show stdout and stderr for linter bears bbb99f9 Merged
#4576 #4579 LocalBearTestHelper: Add **process_output_kwargs 2868324 Merged
#4594 #4595 coalib/abstractions: Add LinterClass.py 9f279e4 Merged
#4594 #4595 Introduce isinstance(cls, LinterClass) 2816dc6 Merged
#4302 #4310 LocalBearTestHelper: Add assertObjectsEqual 7f89dca Approved

Repository : docker-coala-base

Issue reference Pull Request Commit shortlog Commit hash Status
#181 #185 Remove uninstallation of packages not installed 79a0da1 Merged
#184 #185 Install packages libxml2-devel and libxslt-devel 17c883d Merged
#182 #185 Use a lower version of node (nodejs6) 51fb17d Merged
#213 #208 Add dependency astyle ee1fbda Merged

Conclusion

Many new high quality bears along with an exhaustive documentation were merged and are usable. There were workflow improvements for developers regarding tests and bear writing. Developers will now be able to write better bears along with more robust tests. Although GSoC has ended, my contributions for OSS won’t stop. These 2 months have evolved my life and I’ve learnt so many things that would definitely help me grow as a developer.