You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.
Let's look at how to view, interpret, and interact with a RepoSense report.
As a report consists of web pages, it can be viewed using a Web Browser. Here are the ways to view the report in different situations.
--view option:java -jar RepoSense.jar --view REPORT_FOLDERjava -jar RepoSense.jar --view ./myReport/reposense-reportindex.html (in the unzipped report directory) using a browser.choose file button in the shown web page, and select the archive.zip (in the same directory) manually.choose file button is not showing up, try a different browser.Here is an example of how a typical report looks like:
The report is divided into two sections: Chart panel and the Code panel. In some situations, the Commits panel or the Global file browser will appear in place of the Code panel.
Links to external webpages (repository link, author's profile, blame view, etc.) is only properly supported when RepoSense analyzes a remote repository belonging to GitHub, GitLab or BitBucket.
The Chart panel (an example is shown above) contains a series of ramp chart + contribution bar pairs, possibly organized into sub-groups, with a tool bar at the top.
Ramp chart: This is a visualization of the frequency and quantity of contributions of an author for a specific repository. Each ramp chart (i.e., light blue rectangle) represents an author's contribution timeline for a particular repository. Contributions appear as ramps in the timeline.
Ramp: The name we use to refer to the triangular saw-tooth-like shape that represents a code contribution. A ramp can represent a single commit, a sum of the commits done in a certain period, depending on the granularity used.
Contribution bar: It's the bar that appears below each ramp chart. Its length represents the total amount of code contributed by an author during the total analysis period.
We allow contribution bars to overflow into multiple lines (rather than adjust the scale to fit the maximum bar length) to prevent a minority of from affecting the scale of the majority.
The Tool Bar at the top of the Chart panel provides a set of configuration options that control the Chart panel.
Filter Files function allows users to refine and focus their view on specific files across all repositories by applying keyword-based filters using glob patterns. This feature is particularly beneficial for developers seeking to analyze code changes in files that match certain naming conventions or extensions.
Glob Pattern Filtering: Users can specify patterns to match filenames. For example:
**/TaskList.java: Targets all files named TaskList.java in any directory or subdirectory.**/*.js: Selects all JavaScript files across all directories.src/**/*.py: Finds all Python files within the src directory and its subdirectories.Glob patterns use wildcards to match filenames:
*: Matches any sequence of characters within a single directory level.**: Matches any sequence of characters across multiple directory levels.?: Matches any single character.[abc]: Matches any single character within the brackets.[!abc]: Matches any single character not within the brackets.
These patterns provide flexibility in locating files based on specific naming conventions or extensions.Search: filters the author and repository by keywords.
tag: will filter author and repository by Git tags. Similar search rules as above (like separating multiple tag names by space) apply.Group by: grouping criteria for the rows of results.
None: results will not be grouped in any particular way.Repo/Branch: results will be grouped by repositories and its' associating branches.Author: results will be grouped by the name of the author. Contributions made to multiple repositories by a particular author will be grouped under the author.Sort groups by: sorting criteria for the main group. See note [1] below.
Group title: groups will be sorted by the title of the group (in bold text) in alphabetical order.Contribution: groups will be sorted by the combined contributions within a group, in the order of number of lines added.Variance: groups will be sorted by how far the daily contributions are spread out from their average value among all authors involved. A detailed definition of variance is located here.Default: groups will be sorted by the order of rows in repo-config.csv.Sort within groups by: sorting criteria within each group.
Title: each group will be internally sorted by its title in alphabetical order.Contribution: each group will be internally sorted by individual contributions in the order of number of lines added.Variance: each group will be internally sorted by how far the daily contributions are spread out from their average value by each author into a particular repo. A detailed definition of variance is located here.Granularity: the period of time for which commits are aggregated in the Ramp Chart.
Commit: each commit made is shown as one ramp.Day: commits within a day (commits made within 00:00 to 23:59) are shown as one ramp.Week: commits within a week (from Monday 00:00 to Sunday 23:59) are shown as one ramp.Since, Until: the date range for the Ramp Chart (not applied to the Contribution Bars).Reset date range: resets the date range of the Ramp Chart to the default date range.Breakdown by file type: toggles the contribution bar to either display the bar by :
Merge group: merges all the ramp charts of each group into a single ramp chart; aggregates the contribution of each group.
group by repos.Show tags: shows the tags of all the repos under a groupTrim timeline: trims the starting and ending portion of each ramp where no commits were made; only the part of each ramp where commits were made will be shown.Notes:
[1] Sort groups by: each main group has its own index and percentile according to its ranking position after sorting (e.g., if the groups are sorted by contribution in descending order, a 25% percentile indicates that the group is in the top 25% of the whole cohort in terms of contribution)
.
[2] Repo/Branch: the repo/branch name is constructed as ORGANIZATION/REPOSITORY[BRANCH] (e.g., reposense/reposense[master])
[3] The total contribution of each group will get updated based on the checked file types and will be taken into account when the sorting criteria is contribution.
RepoSense support intelligent bookmarks: Note how the browser URL changes as you modify settings in the report. If you send that URL to someone else, that person will be able to use that URL to view the report in the same view configuration you had when you copied the URL. For example, this URL and this URL give two different views of the same report.
The Code panel allows users to see the code attributed to a specific author. Click on the </> icon beside the author's name in the Chart panel to display the Code panel on the right.
merge group option with group by repos, the code panel will consist of multiple authors' contributions. Code attributed to these authors can be differentiated by the highlight colors of the code. The color legend is shown at the top of each file and consists only those authors that edited a particular file.Changing binary files, such as images (.jpg, .png), applications (.exe), zip files (.zip, .rar) and certain document types (.docx, .pptx), is not counted towards the total number of lines of code contributed by an author.
The Commits panel allows users to see the commits attributed to a specific author.
Chart panel can be updated by clicking on the "Show ramp chart for this period" below the name of the author.Commits panel represents individual commits (not weekly or daily contributions).The Global file browser provides a way to search and browse files across all repositories in the report. Unlike the Code panel, which shows code attributed to a single author within one repository, the global file browser lets you explore files from every repository at once.
To return to the normal view, select Local from the dropdown. You can also click any author's or icon in the Chart panel, which automatically switches the filter mode back to Local and opens the corresponding Code or Commits panel.
When you switch to global mode, any previously highlighted author in the Chart panel is deselected. Likewise, switching back to Local mode (or clicking an author icon) closes the global file browser.
The search input at the top of the panel filters files using glob patterns. The file count updates in real-time as you type.
Glob matching uses the matchBase option, so a pattern like *.java will match src/main/App.java even though the file is nested in subdirectories. You do not need to prefix every pattern with **/.
The global file browser offers two view modes, toggled by the buttons below the search input:
Files from all repositories are displayed in a single flat list, sorted alphabetically by file path.
Files are organized under collapsible repository headers, sorted alphabetically by repository name.
Each repository group shows:
Expanding all files in a repository group: Click the repository group header to expand (or collapse) all files in that group at once. This opens every file's content simultaneously, which is useful for quickly scanning an entire repository. Each repository group can be expanded and collapsed independently.
Switching between Sort By Path and Group By Repo collapses all currently expanded files.
Click on any non-binary, non-ignored file header to expand it and view its contents. Click the same header again to collapse it.
The file content is displayed as author-colored segments:
Binary files (such as images, executables, and archives) and ignored files cannot be expanded. These files are indicated with yellow binary or ignored badges.
The global file browser is particularly useful for:
*.yml for CI configs) across all repositories.Combine glob patterns with the Group By Repo view to see how a specific file type is distributed across repositories. For example, filter by **/*Test*.java and switch to Group By Repo to see which repositories have Java test files and how many.