Https://expertiza.csc.ncsu.edu/index.php/CSC/ECE 517 Spring 2023 - E2300. Refactor E1858. Github metrics integration

From Expertiza_Wiki
Jump to navigation Jump to search

About Expertiza

Expertiza is an open source project based on Ruby on Rails framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.

Introduction

Expertiza provides teammate reviews to gauge how much each team member contributed, but we would like to augment this data with data from external tools like Github (for example, number of commits, number of lines of code modified, number of lines added, number of lines deleted.) from each group’s submitted repo link. This information should prove useful for differentiating the performance of team members for grading purposes. Overall data for the team, like number of committers and number of commits may also help instructors to predict which projects are likely to be merged.

Project Overview and Mission

  • The first step is to extract Github metadata of the submitted repos and pull requests.
  • The metadata should be stored in the local Expertiza DB. For each participant, record should include at least include:
  -Committer id
  -Total number of commits
  -Number of files changed
  -Lines of code changed
  -Lines of code added
  -Lines of code removed
  -Lines of code added that survived until final submission [if available from Github]
  • The code should sync the data with Github whenever someone (student or instructor) looks at a view that shows Github data.
  • The data for teams should be shown in the instructor’s View Scores window, in a new tab, probably between Reviews and Author Feedback:
  -Design a good view for showing data on individuals
  -This should be on the Teammate Reviews tab, right below the grid for teammate reviews.  The reason for this is that we’d like to see all the data on an individual in a single view.  For teams, by contrast, there is already a pretty large grid, and potentially multiple grids for multiple rounds, so adding a new grid is more likely to clutter the display.
  • Create a bar chart for the # of lines changed for each assignment team on “view_submissions” page. The x-axis should be the time starting from the assignment creation time, till the last deadline of the assignment, or current time, whichever is earlier.



Current Implementation

Use Github Metrics Functionality

This functionality gives the instructor the option to use Github metrics when creating an assignment.

Future Implementation

  • In the previous implementation all parsing is done in the controller, which leads to 350 lines in the controller. We plan to simplify the controller implementation by refactoring it.
  • Add the functionality to turn on and turn off the GitHub usage function.
  • Add more test cases


Project Mentor

Ed Gehringer (efg@ncsu.edu)

Contributors to this project

Soham Bapat (sbapat2@ncsu.edu) Srihitha Reddy Kaalam (skaalam@ncsu.edu) Sukruthi Modem (smodem@ncsu.edu)