Week 5

This week marked the beginning of the second coding phase. In the first phase, a solid structure for the implementations was almost completely done. In this phase, we will try and finish most of the non-pandas implementations, along with tests and a script to run all metric implementations on given data.

Tasks for the week

  • Create a script and a metric implementation for issues
  • Do the above for pull request related metrics
  • Continue writing tests
  • Different implementation for commit related metrics.
  • Start writing a script to calculate all metrics on given data

Summary for the week

  • Create a script for issue related metrics(#180)

    I updated the Open issue age metric with latest changes, also adding issue.py and Perceval issue data as a JSON file.

  • Create a script for pull request related metrics (#193 #194)

    I added the pullrequest.py script, pull request Perceval data as a JSON file and implemented the following metrics:

    • Reviews
    • Reviews Accepted
      $ \ $
  • Continue writing tests (#200)
    Created a draft pull request for the tests I am writing. This is a work in progress but can be reviewed. I had a few queries which I added as comments in the pull request discussion.

  • Different implementation for commit related metrics (#190 #172)
    Jesus suggested a few changes to the commit related metrics. Instead of using nested aggregations functions or adding rows to columns he suggested creating a different dataframe or redefining the _flatten method

  • Start writing a script to calculate all metrics on given data
    Unfortunately, I was unable to make much progress on this front. I am trying out a few different solutions now and will submit a patch in the next couple of days.

$ \ $

Meeting details

The weekly IRC meeting with my mentors held on Friday (the 5th) is summarized below.

Agenda

  • A new naming scheme

Summary

  • A new naming scheme
    Though we discussed several minor things, like opening a couple of issues to improve certain parts of the code, a new naming scheme for the modules and classes was the main thing we discussed.

    • For the individual metric classes, we will try following a <metric_name>_<system>.py naming. The system for commit-related metrics would be git, while that for issues and pull requests would be github.
    • For higher level classes, a <category>_<system>.py scheme would be followed.
    • Class names would be the same, but of course, in camel-case and without the underscores.
    • For example, commit.py would become commit_git.py, while the class Commit would become CommitGit. Along the same lines, the module for the Code_Changes metric would be code_changes_git.py, while the class itself would be named CodeChangesGit.

$ \ $

  • Tasks for the next week
    • Carry on with non-pandas implementations

    • Open the draft pull request for tests for review

    • Finish pending issues

    • Design script to compute all metrics on different data like issues, commits and pull requests when provided to the script

The log for this meeting can be found here.

The next meeting will be on the 16th of July.
For older GSoC posts, please click here.