Giter Site home page Giter Site logo

src-d / hercules Goto Github PK

View Code? Open in Web Editor NEW
2.0K 20.0 145.0 10.01 MB

Gaining advanced insights from Git repository history.

License: Other

Go 82.49% Python 9.26% Makefile 0.12% Java 1.76% Dockerfile 0.14% C 6.24%
git-analysis machine-learning tensorflow git mloncode tensorboard-visualizations burndown mining-software-repositories

hercules's Introduction

Hercules

Fast, insightful and highly customizable Git history analysis.

GoDoc Travis build Status AppVeyor build status PyPi package status Docker build status Code coverage Go Report Card Apache 2.0 license

OverviewHow To UseInstallationContributionsLicense


Table of Contents

Overview

Hercules is an amazingly fast and highly customizable Git repository analysis engine written in Go. Batteries are included. Powered by go-git.

Notice (November 2020): the main author is back from the limbo and is gradually resuming the development. See the roadmap.

There are two command-line tools: hercules and labours. The first is a program written in Go which takes a Git repository and executes a Directed Acyclic Graph (DAG) of analysis tasks over the full commit history. The second is a Python script which shows some predefined plots over the collected data. These two tools are normally used together through a pipe. It is possible to write custom analyses using the plugin system. It is also possible to merge several analysis results together - relevant for organizations. The analyzed commit history includes branches, merges, etc.

Hercules has been successfully used for several internal projects at source{d}. There are blog posts: 1, 2 and a presentation. Please contribute by testing, fixing bugs, adding new analyses, or coding swagger!

Hercules DAG of Burndown analysis

The DAG of burndown and couples analyses with UAST diff refining. Generated with hercules --burndown --burndown-people --couples --feature=uast --dry-run --dump-dag doc/dag.dot https://github.com/src-d/hercules

git/git image

torvalds/linux line burndown (granularity 30, sampling 30, resampled by year). Generated with hercules --burndown --first-parent --pb https://github.com/torvalds/linux | labours -f pb -m burndown-project in 1h 40min.

Installation

Grab hercules binary from the Releases page. labours is installable from PyPi:

pip3 install labours

pip3 is the Python package manager.

Numpy and Scipy can be installed on Windows using http://www.lfd.uci.edu/~gohlke/pythonlibs/

Build from source

You are going to need Go (>= v1.11) and protoc.

git clone https://github.com/src-d/hercules && cd hercules
make
pip3 install -e ./python

GitHub Action

It is possible to run Hercules as a GitHub Action: Hercules on GitHub Marketplace. Please refer to the sample workflow which demonstrates how to setup.

Contributions

...are welcome! See CONTRIBUTING and code of conduct.

License

Apache 2.0

Usage

The most useful and reliably up-to-date command line reference:

hercules --help

Some examples:

# Use "memory" go-git backend and display the burndown plot. "memory" is the fastest but the repository's git data must fit into RAM.
hercules --burndown https://github.com/go-git/go-git | labours -m burndown-project --resample month
# Use "file system" go-git backend and print some basic information about the repository.
hercules /path/to/cloned/go-git
# Use "file system" go-git backend, cache the cloned repository to /tmp/repo-cache, use Protocol Buffers and display the burndown plot without resampling.
hercules --burndown --pb https://github.com/git/git /tmp/repo-cache | labours -m burndown-project -f pb --resample raw

# Now something fun
# Get the linear history from git rev-list, reverse it
# Pipe to hercules, produce burndown snapshots for every 30 days grouped by 30 days
# Save the raw data to cache.yaml, so that later is possible to labours -i cache.yaml
# Pipe the raw data to labours, set text font size to 16pt, use Agg matplotlib backend and save the plot to output.png
git rev-list HEAD | tac | hercules --commits - --burndown https://github.com/git/git | tee cache.yaml | labours -m burndown-project --font-size 16 --backend Agg --output git.png

labours -i /path/to/yaml allows to read the output from hercules which was saved on disk.

Caching

It is possible to store the cloned repository on disk. The subsequent analysis can run on the corresponding directory instead of cloning from scratch:

# First time - cache
hercules https://github.com/git/git /tmp/repo-cache

# Second time - use the cache
hercules --some-analysis /tmp/repo-cache

GitHub Action

The action produces the artifact named hercules_charts. Since it is currently impossible to pack several files in one artifact, all the charts and Tensorflow Projector files are packed in the inner tar archive. In order to view the embeddings, go to projector.tensorflow.org, click "Load" and choose the two TSVs. Then use UMAP or T-SNE.

Docker image

docker run --rm srcd/hercules hercules --burndown --pb https://github.com/git/git | docker run --rm -i -v $(pwd):/io srcd/hercules labours -f pb -m burndown-project -o /io/git_git.png

Built-in analyses

Project burndown

hercules --burndown
labours -m burndown-project

Line burndown statistics for the whole repository. Exactly the same what git-of-theseus does but much faster. Blaming is performed efficiently and incrementally using a custom RB tree tracking algorithm, and only the last modification date is recorded while running the analysis.

All burndown analyses depend on the values of granularity and sampling. Granularity is the number of days each band in the stack consists of. Sampling is the frequency with which the burnout state is snapshotted. The smaller the value, the more smooth is the plot but the more work is done.

There is an option to resample the bands inside labours, so that you can define a very precise distribution and visualize it different ways. Besides, resampling aligns the bands across periodic boundaries, e.g. months or years. Unresampled bands are apparently not aligned and start from the project's birth date.

Files

hercules --burndown --burndown-files
labours -m burndown-file

Burndown statistics for every file in the repository which is alive in the latest revision.

Note: it will generate separate graph for every file. You don't want to run it on repository with many files.

People

hercules --burndown --burndown-people [--people-dict=/path/to/identities]
labours -m burndown-person

Burndown statistics for the repository's contributors. If --people-dict is not specified, the identities are discovered by the following algorithm:

  1. We start from the root commit towards the HEAD. Emails and names are converted to lower case.
  2. If we process an unknown email and name, record them as a new developer.
  3. If we process a known email but unknown name, match to the developer with the matching email, and add the unknown name to the list of that developer's names.
  4. If we process an unknown email but known name, match to the developer with the matching name, and add the unknown email to the list of that developer's emails.

If --people-dict is specified, it should point to a text file with the custom identities. The format is: every line is a single developer, it contains all the matching emails and names separated by |. The case is ignored.

Overwrites matrix

Wireshark top 20 overwrites matrix

Wireshark top 20 devs - overwrites matrix

hercules --burndown --burndown-people [--people-dict=/path/to/identities]
labours -m overwrites-matrix

Beside the burndown information, --burndown-people collects the added and deleted line statistics per developer. Thus it can be visualized how many lines written by developer A are removed by developer B. This indicates collaboration between people and defines expertise teams.

The format is the matrix with N rows and (N+2) columns, where N is the number of developers.

  1. First column is the number of lines the developer wrote.
  2. Second column is how many lines were written by the developer and deleted by unidentified developers (if --people-dict is not specified, it is always 0).
  3. The rest of the columns show how many lines were written by the developer and deleted by identified developers.

The sequence of developers is stored in people_sequence YAML node.

Code ownership

Ember.js top 20 code ownership

Ember.js top 20 devs - code ownership

hercules --burndown --burndown-people [--people-dict=/path/to/identities]
labours -m ownership

--burndown-people also allows to draw the code share through time stacked area plot. That is, how many lines are alive at the sampled moments in time for each identified developer.

Couples

Linux kernel file couples

torvalds/linux files' coupling in Tensorflow Projector

hercules --couples [--people-dict=/path/to/identities]
labours -m couples -o <name> [--couples-tmp-dir=/tmp]

Important: it requires Tensorflow to be installed, please follow official instructions.

The files are coupled if they are changed in the same commit. The developers are coupled if they change the same file. hercules records the number of couples throughout the whole commit history and outputs the two corresponding co-occurrence matrices. labours then trains Swivel embeddings - dense vectors which reflect the co-occurrence probability through the Euclidean distance. The training requires a working Tensorflow installation. The intermediate files are stored in the system temporary directory or --couples-tmp-dir if it is specified. The trained embeddings are written to the current working directory with the name depending on -o. The output format is TSV and matches Tensorflow Projector so that the files and people can be visualized with t-SNE implemented in TF Projector.

Structural hotness

      46  jinja2/compiler.py:visit_Template [FunctionDef]
      42  jinja2/compiler.py:visit_For [FunctionDef]
      34  jinja2/compiler.py:visit_Output [FunctionDef]
      29  jinja2/environment.py:compile [FunctionDef]
      27  jinja2/compiler.py:visit_Include [FunctionDef]
      22  jinja2/compiler.py:visit_Macro [FunctionDef]
      22  jinja2/compiler.py:visit_FromImport [FunctionDef]
      21  jinja2/compiler.py:visit_Filter [FunctionDef]
      21  jinja2/runtime.py:__call__ [FunctionDef]
      20  jinja2/compiler.py:visit_Block [FunctionDef]

Thanks to Babelfish, hercules is able to measure how many times each structural unit has been modified. By default, it looks at functions; refer to Semantic UAST XPath manual to switch to something else.

hercules --shotness [--shotness-xpath-*]
labours -m shotness

Couples analysis automatically loads "shotness" data if available.

Jinja2 functions grouped by structural hotness

hercules --shotness --pb https://github.com/pallets/jinja | labours -m couples -f pb

Aligned commit series

tensorflow/tensorflow

tensorflow/tensorflow aligned commit series of top 50 developers by commit number.

hercules --devs [--people-dict=/path/to/identities]
labours -m devs -o <name>

We record how many commits made, as well as lines added, removed and changed per day for each developer. We plot the resulting commit time series using a few tricks to show the temporal grouping. In other words, two adjacent commit series should look similar after normalization.

  1. We compute the distance matrix of the commit series. Our distance metric is Dynamic Time Warping. We use FastDTW algorithm which has linear complexity proportional to the length of time series. Thus the overall complexity of computing the matrix is quadratic.
  2. We compile the linear list of commit series with Seriation technique. Particularly, we solve the Travelling Salesman Problem which is NP-complete. However, given the typical number of developers which is less than 1,000, there is a good chance that the solution does not take much time. We use Google or-tools solver.
  3. We find 1-dimensional clusters in the resulting path with HDBSCAN algorithm and assign colors accordingly.
  4. Time series are smoothed by convolving with the Slepian window.

This plot allows to discover how the development team evolved through time. It also shows "commit flashmobs" such as Hacktoberfest. For example, here are the revealed insights from the tensorflow/tensorflow plot above:

  1. "Tensorflow Gardener" is classified as the only outlier.
  2. The "blue" group of developers covers the global maintainers and a few people who left (at the top).
  3. The "red" group shows how core developers join the project or become less active.

Added vs changed lines through time

tensorflow/tensorflow

tensorflow/tensorflow added and changed lines through time.

hercules --devs [--people-dict=/path/to/identities]
labours -m old-vs-new -o <name>

--devs from the previous section allows to plot how many lines were added and how many existing changed (deleted or replaced) through time. This plot is smoothed.

Efforts through time

kubernetes/kubernetes

kubernetes/kubernetes efforts through time.

hercules --devs [--people-dict=/path/to/identities]
labours -m devs-efforts -o <name>

Besides, --devs allows to plot how many lines have been changed (added or removed) by each developer. The upper part of the plot is an accumulated (integrated) lower part. It is impossible to have the same scale for both parts, so the lower values are scaled, and hence there are no lower Y axis ticks. There is a difference between the efforts plot and the ownership plot, although changing lines correlate with owning lines.

Sentiment (positive and negative comments)

Django sentiment

It can be clearly seen that Django comments were positive/optimistic in the beginning, but later became negative/pessimistic.
hercules --sentiment --pb https://github.com/django/django | labours -m sentiment -f pb

We extract new and changed comments from source code on every commit, apply BiDiSentiment general purpose sentiment recurrent neural network and plot the results. Requires libtensorflow. E.g. sadly, we need to hide the rect from the documentation finder for now is negative and Theano has a built-in optimization for logsumexp (...) so we can just write the expression directly is positive. Don't expect too much though - as was written, the sentiment model is general purpose and the code comments have different nature, so there is no magic (for now).

Hercules must be built with "tensorflow" tag - it is not by default:

make TAGS=tensorflow

Such a build requires libtensorflow.

Everything in a single pass

hercules --burndown --burndown-files --burndown-people --couples --shotness --devs [--people-dict=/path/to/identities]
labours -m all

Plugins

Hercules has a plugin system and allows to run custom analyses. See PLUGINS.md.

Merging

hercules combine is the command which joins several analysis results in Protocol Buffers format together.

hercules --burndown --pb https://github.com/go-git/go-git > go-git.pb
hercules --burndown --pb https://github.com/src-d/hercules > hercules.pb
hercules combine go-git.pb hercules.pb | labours -f pb -m burndown-project --resample M

Bad unicode errors

YAML does not support the whole range of Unicode characters and the parser on labours side may raise exceptions. Filter the output from hercules through fix_yaml_unicode.py to discard such offending characters.

hercules --burndown --burndown-people https://github.com/... | python3 fix_yaml_unicode.py | labours -m people

Plotting

These options affects all plots:

labours [--style=white|black] [--backend=] [--size=Y,X]

--style sets the general style of the plot (see labours --help). --background changes the plot background to be either white or black. --backend chooses the Matplotlib backend. --size sets the size of the figure in inches. The default is 12,9.

(required in macOS) you can pin the default Matplotlib backend with

echo "backend: TkAgg" > ~/.matplotlib/matplotlibrc

These options are effective in burndown charts only:

labours [--text-size] [--relative]

--text-size changes the font size, --relative activate the stretched burndown layout.

Custom plotting backend

It is possible to output all the information needed to draw the plots in JSON format. Simply append .json to the output (-o) and you are done. The data format is not fully specified and depends on the Python code which generates it. Each JSON file should contain "type" which reflects the plot kind.

Caveats

  1. Processing all the commits may fail in some rare cases. If you get an error similar to #106 please report there and specify --first-parent as a workaround.
  2. Burndown collection may fail with an Out-Of-Memory error. See the next session for the workarounds.
  3. Parsing YAML in Python is slow when the number of internal objects is big. hercules' output for the Linux kernel in "couples" mode is 1.5 GB and takes more than an hour / 180GB RAM to be parsed. However, most of the repositories are parsed within a minute. Try using Protocol Buffers instead (hercules --pb and labours -f pb).
  4. To speed up yaml parsing
    # Debian, Ubuntu
    apt install libyaml-dev
    # macOS
    brew install yaml-cpp libyaml
    
    # you might need to re-install pyyaml for changes to make effect
    pip uninstall pyyaml
    pip --no-cache-dir install pyyaml
    

Burndown Out-Of-Memory

If the analyzed repository is big and extensively uses branching, the burndown stats collection may fail with an OOM. You should try the following:

  1. Read the repo from disk instead of cloning into memory.
  2. Use --skip-blacklist to avoid analyzing the unwanted files. It is also possible to constrain the --language.
  3. Use the hibernation feature: --hibernation-distance 10 --burndown-hibernation-threshold=1000. Play with those two numbers to start hibernating right before the OOM.
  4. Hibernate on disk: --burndown-hibernation-disk --burndown-hibernation-dir /path.
  5. --first-parent, you win.

Roadmap

  • Switch from src-d/go-git to go-git/go-git. Upgrade the codebase to be compatible with the latest Go version.
  • Update the docs regarding the copyrights and such.
  • Fix the reported bugs.
  • Remove the dependency on Babelfish for parsing the code. It is abandoned and a better alternative should be found.
  • Remove the ad-hoc analyses added while source{d} was agonizing.

hercules's People

Contributors

akutta avatar akx avatar alippai avatar bobheadxi avatar bzz avatar dotyjim-work avatar efx avatar fffej avatar hnarasaki avatar jpoehnelt avatar marnovo avatar mcuadros avatar moncho avatar smacker avatar smola avatar tgsoverly avatar umarniz avatar vmarkovtsev avatar zurk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hercules's Issues

[bug] failed to run the pipeline: file already exists

Hi,
problem looks similar to #106

....noreply.github.com zhang bo|[email protected] shawarma|[email protected]]} error
2019/01/29 13:04:43 Burndown failed on commit #14535 (14536) 8229695e1f0ae647240fc03f54676c49a43a3a39
2019/01/29 13:04:43 failed to run the pipeline: file desktop/core/ext-py/Django-1.9/django/utils/_os.py already exists
 105 / 269 [==========================>----------------------------------------]Repository https://github.com/cloudera/hue failed with exception Command '['/home/jovyan/hercules.linux_amd64', '--pb', '--burndown', '--burndown-people', '--devs', '--first-parent', '/tmp/hercules_ighnkt0b']' returned non-zero exit status 1. at stat step

Repository: https://github.com/cloudera/hue
Hercules:

>>> ./hercules.linux_amd64 version
Version: 7
Git:     6f3f16ddf25e7f399a48b9f7d0ccdec6acecb778

getting the package fails because of plumbing/difftree

command go get gopkg.in/src-d/hercules.v1 result in this :

package gopkg.in/src-d/go-git.v4/plumbing/difftree: cannot find package "gopkg.in/src-d/go-git.v4/plumbing/difftree" in any of:
	/GOROOT/src/gopkg.in/src-d/go-git.v4/plumbing/difftree (from $GOROOT)
	/GOPATH/src/gopkg.in/src-d/go-git.v4/plumbing/difftree (from $GOPATH)

Burndown files empty history panic

smacker in ~/Downloads
$ ./hercules --burndown --burndown-files https://github.com/sirupsen/logrus
finalizing...panic: empty history

goroutine 1 [running]:
gopkg.in/src-d/hercules.v5/leaves.(*BurndownAnalysis).groupSparseHistory(0xc002b943c0, 0xc002d2aff0, 0x754, 0x8, 0xc0000d9990, 0x3f, 0x754)
	/Users/travis/gopath/src/gopkg.in/src-d/hercules.v5/leaves/burndown.go:1221 +0x726
gopkg.in/src-d/hercules.v5/leaves.(*BurndownAnalysis).Finalize(0xc002b943c0, 0x4cb5f80, 0xc000122180)
	/Users/travis/gopath/src/gopkg.in/src-d/hercules.v5/leaves/burndown.go:371 +0x14a
gopkg.in/src-d/hercules.v5/internal/core.(*Pipeline).Run(0xc001f1bc30, 0xc002262000, 0x3c1, 0x400, 0xc002550708, 0xc000ba0300, 0x0)
	/Users/travis/gopath/src/gopkg.in/src-d/hercules.v5/internal/core/pipeline.go:686 +0x5fa
main.glob..func3(0x56a64a0, 0xc000a32960, 0x1, 0x3)
	/Users/travis/gopath/src/gopkg.in/src-d/hercules.v5/cmd/hercules/root.go:240 +0x76b
gopkg.in/src-d/hercules.v5/vendor/github.com/spf13/cobra.(*Command).execute(0x56a64a0, 0xc0000ba0d0, 0x3, 0x3, 0x56a64a0, 0xc0000ba0d0)
	/Users/travis/gopath/src/gopkg.in/src-d/hercules.v5/vendor/github.com/spf13/cobra/command.go:766 +0x2cc
gopkg.in/src-d/hercules.v5/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0x56a64a0, 0x0, 0x4b31e30, 0x4c)
	/Users/travis/gopath/src/gopkg.in/src-d/hercules.v5/vendor/github.com/spf13/cobra/command.go:852 +0x2fd
gopkg.in/src-d/hercules.v5/vendor/github.com/spf13/cobra.(*Command).Execute(0x56a64a0, 0x40075a0, 0xc000096058)
	/Users/travis/gopath/src/gopkg.in/src-d/hercules.v5/vendor/github.com/spf13/cobra/command.go:800 +0x2b
main.main()
	/Users/travis/gopath/src/gopkg.in/src-d/hercules.v5/cmd/hercules/root.go:471 +0x31

the same error happens on master

question: what's the recommended practice to install libtensorflow.so?

I'm getting error ./hercules.linux_amd64: error while loading shared libraries: libtensorflow.so: cannot open shared object file: No such file or directory

What's the recommended practice to install the right version of libtensorflow.so on Linux/Debian?

Or can ./hercules.linux_amd64 be statically linked?

"internal diff error" and panic

With version

commit 4d54d684c2f14f387fbf38b7badfb69641785e05
Author: Vadim Markovtsev <[email protected]>
Date:   Fri Apr 21 15:16:12 2017 +0200
hercules https://github.com/php-yaoi/php-yaoi
modules/Sql/Sql_Expression.php: internal diff error/github.com/php-yaoi/php-yaoi
.......
81f4da7d6fa017c175c846964c4d15f40c4700d3: modification error
panic: rbtree internal assertion failed [recovered]
	panic: rbtree internal assertion failed [recovered]
	panic: rbtree internal assertion failed

goroutine 1 [running]:
gopkg.in/src-d/hercules%2ev1.(*Analyser).Analyse.func3.1(0xc421927c20)
	/Users/vpoturaev/golang/src/gopkg.in/src-d/hercules.v1/analyser.go:330 +0x142
panic(0x135f5c0, 0xc42033abb0)
	/usr/local/Cellar/go/1.8.1/libexec/src/runtime/panic.go:489 +0x2cf
gopkg.in/src-d/hercules%2ev1.(*Analyser).handleModification.func2.1(0xc420de2100, 0xc420bb3000, 0xeb2, 0xc42160f500, 0x13fe)
	/Users/vpoturaev/golang/src/gopkg.in/src-d/hercules.v1/analyser.go:152 +0x454
panic(0x135f5c0, 0xc42033abb0)
	/usr/local/Cellar/go/1.8.1/libexec/src/runtime/panic.go:489 +0x2cf
gopkg.in/src-d/hercules%2ev1.doAssert(0xc420f31200)
	/Users/vpoturaev/golang/src/gopkg.in/src-d/hercules.v1/rbtree.go:256 +0x77
gopkg.in/src-d/hercules%2ev1.Iterator.Next(0x0, 0x0, 0x179, 0xc420f31200)
	/Users/vpoturaev/golang/src/gopkg.in/src-d/hercules.v1/rbtree.go:232 +0x30
gopkg.in/src-d/hercules%2ev1.(*File).Update(0xc4202145f0, 0x179, 0x65, 0x28, 0x2)
	/Users/vpoturaev/golang/src/gopkg.in/src-d/hercules.v1/file.go:131 +0x55d
gopkg.in/src-d/hercules%2ev1.(*Analyser).handleModification.func2(0xc420de2100, 0xc420bb3000, 0xeb2, 0xc42160f500, 0x13fe, 0xc421927a50, 0xc421927a38, 0xc421927a68, 0xc421927968, 0x28, ...)
	/Users/vpoturaev/golang/src/gopkg.in/src-d/hercules.v1/analyser.go:167 +0x26c
gopkg.in/src-d/hercules%2ev1.(*Analyser).handleModification(0xc421927ea0, 0xc420de2100, 0x179, 0xc42051b9e0, 0xc42051ba10)
	/Users/vpoturaev/golang/src/gopkg.in/src-d/hercules.v1/analyser.go:181 +0x4c2
gopkg.in/src-d/hercules%2ev1.(*Analyser).Analyse.func3(0xc421927c20, 0xc421927ea0, 0xc421927c28, 0x179, 0xc42051b9e0, 0xc42051ba10)
	/Users/vpoturaev/golang/src/gopkg.in/src-d/hercules.v1/analyser.go:333 +0x80
gopkg.in/src-d/hercules%2ev1.(*Analyser).Analyse(0xc421927ea0, 0xc42114a000, 0x1cf, 0x200, 0x1, 0xb, 0x0)
	/Users/vpoturaev/golang/src/gopkg.in/src-d/hercules.v1/analyser.go:334 +0x620
main.main()
	/Users/vpoturaev/golang/src/gopkg.in/src-d/hercules.v1/cmd/hercules/main.go:123 +0x912

Panic on emberjs

@Serabe found:

./hercules -people -couples https://github.com/emberjs/ember.js > emberjs.yaml                               
file to vendor/ruby/1.9.1/bundler/gems/abbot-from-scratch-754164ff560e 754164ff560e2597b62fb326358fb8b9f7fc3ed4
BlobCache failed on commit #255 22df75f1c6b95ec4c4b2e68b16d308a443cf6bf6
panic: object not found

goroutine 1 [running]:
main.main()
        /home/sourced/Projects/hercules/src/gopkg.in/src-d/hercules.v2/cmd/hercules/main.go:186 +0x12da

panic: context deadline exceeded

Hello,

I've tried hercules on the github.com/cozy/cozy-stack repository, and it has failed with this error:

$ docker run --rm srcd/hercules hercules --burndown --burndown-files --burndown-people --couples --shotness --devs --pb https://github.com/cozy/cozy-stack >hercules.out

panic: context deadline exceeded

goroutine 1 [running]:
gopkg.in/src-d/hercules.v7/internal/plumbing/uast.(*Extractor).Initialize(0xc423758c80, 0xc420a79740, 0x0, 0x0)
	/root/src/gopkg.in/src-d/hercules.v7/internal/plumbing/uast/uast.go:175 +0x2b9
gopkg.in/src-d/hercules.v7/internal/core.(*Pipeline).Initialize(0xc471317c10, 0xc420a79410, 0xc473a60840, 0x7f37cea07bb8)
	/root/src/gopkg.in/src-d/hercules.v7/internal/core/pipeline.go:664 +0x47d
main.glob..func3(0x1e6a060, 0xc42046ef80, 0x1, 0x8)
	/root/src/gopkg.in/src-d/hercules.v7/cmd/hercules/root.go:265 +0x78a
gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra.(*Command).execute(0x1e6a060, 0xc4200300a0, 0x8, 0x8, 0x1e6a060, 0xc4200300a0)
	/root/src/gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra/command.go:766 +0x2c1
gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0x1e6a060, 0xc4202814b0, 0xc420281480, 0xc4200dab00)
	/root/src/gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra/command.go:852 +0x30a
gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra.(*Command).Execute(0x1e6a060, 0xc4200a6058, 0x0)
	/root/src/gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra/command.go:800 +0x2b
main.main()
	/root/src/gopkg.in/src-d/hercules.v7/cmd/hercules/root.go:509 +0x31

Refine added vs changed lines by solving LAP

For each file change, we've got added and deleted lines. Some of them are sequential and we treat them as changed. We should solve a linear assignment problem over the left lines (deleted -> added) to determine moves and improve the changed tracking.

build error, library not found for tensorflow

github.com/tensorflow/tensorflow/tensorflow/go

ld: library not found for -ltensorflow
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [/Users/macbook/go/bin/hercules] Error 2

burndown fails for some repos with "$COMMIT does not have a branch assigned"

Tested with the newest v5 release on OS X 10.12.6 (16G1510).

Example failing run:

hercules --burndown --burndown-people --pb https://github.com/dashpay/dash | tee dash.pb | ./labours.py -m ownership
Reading the input... Enumerating objects: 94, done.
2018/10/23 14:27:27 parent 76d9eddfa471448ae3eda1e0430cf9fd77c8529b > 591e64dc3b657f7a974b6a7dfc736308be56bbad does not have a branch assigned
panic: parent 76d9eddfa471448ae3eda1e0430cf9fd77c8529b > 591e64dc3b657f7a974b6a7dfc736308be56bbad does not have a branch assigned

goroutine 1 [running]:
log.Panicf(0x4af5a55, 0x2e, 0xc000af3130, 0x2, 0x2)
	/Users/travis/.gimme/versions/go1.11.1.darwin.amd64/src/log/log.go:333 +0xda
gopkg.in/src-d/hercules.v5/internal/core.generatePlan.func3()
	/Users/travis/gopath/src/gopkg.in/src-d/hercules.v5/internal/core/forks.go:525 +0x4cc
gopkg.in/src-d/hercules.v5/internal/core.generatePlan(0xc0d53758e0, 0xc0d3ab9ad0, 0xc0d4f64de0, 0xc0d3ab9b00, 0xc0d4f64e10, 0xc00b37cf98, 0xb37cf98d3b52a80, 0x5bcf13ae)
	/Users/travis/gopath/src/gopkg.in/src-d/hercules.v5/internal/core/forks.go:557 +0x1aa
gopkg.in/src-d/hercules.v5/internal/core.prepareRunPlan(0xc0d26c0000, 0x3a2e, 0x3c00, 0x0, 0x0, 0x0)
	/Users/travis/gopath/src/gopkg.in/src-d/hercules.v5/internal/core/forks.go:145 +0x111
gopkg.in/src-d/hercules.v5/internal/core.(*Pipeline).Run(0xc000af3c30, 0xc0d26c0000, 0x3a2e, 0x3c00, 0xc000aa4428, 0xc0d3a00ad0, 0x0)
	/Users/travis/gopath/src/gopkg.in/src-d/hercules.v5/internal/core/pipeline.go:616 +0x9b
main.glob..func3(0x5607ca0, 0xc000a5a580, 0x1, 0x4)
	/Users/travis/gopath/src/gopkg.in/src-d/hercules.v5/cmd/hercules/root.go:223 +0x723
github.com/spf13/cobra.(*Command).execute(0x5607ca0, 0xc000030060, 0x4, 0x4, 0x5607ca0, 0xc000030060)
	/Users/travis/gopath/src/github.com/spf13/cobra/command.go:766 +0x2cc
github.com/spf13/cobra.(*Command).ExecuteC(0x5607ca0, 0x4aeb556, 0x26, 0xc00046683c)
	/Users/travis/gopath/src/github.com/spf13/cobra/command.go:852 +0x2fd
github.com/spf13/cobra.(*Command).Execute(0x5607ca0, 0x4007430, 0xc0000400b8)
	/Users/travis/gopath/src/github.com/spf13/cobra/command.go:800 +0x2b
main.main()
	/Users/travis/gopath/src/gopkg.in/src-d/hercules.v5/cmd/hercules/root.go:429 +0x31
done
Traceback (most recent call last):
  File "./labours.py", line 1287, in <module>
    sys.exit(main())
  File "./labours.py", line 1140, in main
    header = reader.get_header()
  File "./labours.py", line 141, in get_header
    header = self.data["hercules"]
TypeError: 'NoneType' object is not subscriptable

Thanks a lot for your work!

Does not compile for me

$ go version
go version go1.7.3 linux/amd64

$go install gopkg.in/src-d/hercules.v1/cmd/hercules
../hercules.v1/cmd/hercules/main.go:13:2: code in directory /home/kohlerm/go/src/gopkg.in/src-d/go-git.v4 expects import "srcd.works/go-git.v4"

removing the import comment in doc.go
diff --git a/doc.go b/doc.go
index d304938..242f3be 100644
--- a/doc.go
+++ b/doc.go
@@ -34,4 +34,4 @@
// fmt.Println(commit)
// }
// }
-package git // import "srcd.works/go-git.v4"
+package git

../../../github.com/fatih/color/color.go:21: undefined: isatty.IsCygwinTerminal
bash: ../../../github.com/fatih/color/color.go:21:: No such file or directory

Removing the IsCygwinTerminal call (I'm on linux)
$ go install gopkg.in/src-d/hercules.v1/cmd/hercules
gopkg.in/src-d/hercules.v1
../hercules.v1/analyser.go:66: cannot use blob (type *"srcd.works/go-git.v4/plumbing/object".Blob) as type *"gopkg.in/src-d/go-git.v4/plumbing/object".Blob in argument to loc
../hercules.v1/analyser.go:85: cannot use blob (type *"srcd.works/go-git.v4/plumbing/object".Blob) as type *"gopkg.in/src-d/go-git.v4/plumbing/object".Blob in argument to loc
../hercules.v1/analyser.go:107: cannot use blob_from (type *"srcd.works/go-git.v4/plumbing/object".Blob) as type *"gopkg.in/src-d/go-git.v4/plumbing/object".Blob in argument to str
../hercules.v1/analyser.go:108: cannot use blob_to (type *"srcd.works/go-git.v4/plumbing/object".Blob) as type *"gopkg.in/src-d/go-git.v4/plumbing/object".Blob in argument to str
../hercules.v1/analyser.go:213: cannot use commit (type *"srcd.works/go-git.v4/plumbing/object".Commit) as type *"gopkg.in/src-d/go-git.v4/plumbing/object".Commit in append
../hercules.v1/analyser.go:218: cannot use commit (type *"srcd.works/go-git.v4/plumbing/object".Commit) as type *"gopkg.in/src-d/go-git.v4/plumbing/object".Commit in append
../hercules.v1/analyser.go:310: cannot use prev_tree (type *"gopkg.in/src-d/go-git.v4/plumbing/object".Tree) as type *"srcd.works/go-git.v4/plumbing/object".Tree in argument to difftree.DiffTree
../hercules.v1/analyser.go:310: cannot use tree (type *"gopkg.in/src-d/go-git.v4/plumbing/object".Tree) as type *"srcd.works/go-git.v4/plumbing/object".Tree in argument to difftree.DiffTree

Any hints how to get it compiled?

IndexError in labours.py

$ hercules https://github.com/go-reform/reform | python3 labours.py --resample month
Traceback (most recent call last):
  File "labours.py", line 168, in <module>
    sys.exit(main())
  File "labours.py", line 79, in main
    matrix[i, i] += matrix[i, :i].sum()
IndexError: index 12 is out of bounds for axis 1 with size 12
$ hercules https://github.com/go-reform/reform | python3 labours.py
Traceback (most recent call last):
  File "labours.py", line 168, in <module>
    sys.exit(main())
  File "labours.py", line 136, in main
    if pyplot.xlim()[1] - locs[-1] >= (locs[-1] - locs[-2]) / 2:
IndexError: list index out of range

[bug] some file does not exist (histories)

Hi,
hercules fails on this particular repository

egor@egor-sourced:~/workspace/hercules$ ./bin/hercules_v6 --burndown --burndown-files  

https://github.com/src-d/ml 756 / 1456 [================================>------------------------------] 1s2019/01/23 14:40:30 Burndown failed on commit #593 (806) 4f323dd5dc6852b21c29a63edd20c157a83d75e8
2019/01/23 14:40:30 failed to run the pipeline: file doc/Doc/how_to_use_ast2vec.ipynb > doc/how_to_use_ast2vec.ipynb does not exist (histories)

Analyzing repositories with deleted submodules

Hello,

first of all I want to thank you for open sourcing this amazing tool. It is a lot of fun to play around with it.

Unfortunately, I found an issue while running the following command:
hercules --burndown https://github.com/angular/angular >angular_angular.yaml

Resulted in:

Reading the input... file from tools/rtts-assert 6caafd2561ece8cbfdabbe7357b50ce9192db18c
BlobCache failed on commit #13 61ceed5bf641e3001776332e125a671a06709c9c
panic: file not found

goroutine 1 [running]:
main.glob..func3(0x1c7e980, 0xc420a06b70, 0x1, 0x3)
	/root/src/gopkg.in/src-d/hercules.v3/cmd/hercules/root.go:202 +0xacc
github.com/spf13/cobra.(*Command).execute(0x1c7e980, 0xc4200100d0, 0x3, 0x3, 0x1c7e980, 0xc4200100d0)
	/root/src/github.com/spf13/cobra/command.go:757 +0x2c1
github.com/spf13/cobra.(*Command).ExecuteC(0x1c7e980, 0x26, 0xc4201dce91, 0x0)
	/root/src/github.com/spf13/cobra/command.go:843 +0x334
github.com/spf13/cobra.(*Command).Execute(0x1c7e980, 0x0, 0xc42018bf70)
	/root/src/github.com/spf13/cobra/command.go:791 +0x2b
main.main()
	/root/src/gopkg.in/src-d/hercules.v3/cmd/hercules/root.go:386 +0x31

And if we take a look at the commit angular/angular@61ceed5 we can see that it only removed two submodules.

Is it maybe possible to ignore submodules / commits that remove them?

Pipeline.Commits() lacks side branch commits

Pipeline.Commits() returns the commits from the main branch. This simple algorithm discard commits in side branches and produces an incomplete (but integral) history. We need to think how we can include as many side commits as possible.

[bug] panic: runtime error: slice bounds out of range

Hi,
it looks like the problem #163 wasn't totally fixed

panic: runtime error: slice bounds out of range [recovered]
        panic: runtime error: slice bounds out of range

goroutine 931 [running]:
gopkg.in/src-d/hercules.v7/internal/plumbing.(*RenameAnalysis).blobsAreClose.func1(0xc01415ad20, 0xc01415ad20)
        /home/travis/gopath/src/gopkg.in/src-d/hercules.v7/internal/plumbing/renames.go:367 +0x196
panic(0x11705c0, 0x20b8120)
        /home/travis/.gimme/versions/go1.11.5.linux.amd64/src/runtime/panic.go:513 +0x1b9
gopkg.in/src-d/hercules.v7/internal/plumbing.(*RenameAnalysis).blobsAreClose(0xc002482e10, 0xc01415ad20, 0xc01415ad20, 0xc00b806f00, 0x0, 0x0)
        /home/travis/gopath/src/gopkg.in/src-d/hercules.v7/internal/plumbing/renames.go:430 +0xd52
gopkg.in/src-d/hercules.v7/internal/plumbing.(*RenameAnalysis).Consume.func1(0x0, 0x0)
        /home/travis/gopath/src/gopkg.in/src-d/hercules.v7/internal/plumbing/renames.go:232 +0x414
gopkg.in/src-d/hercules.v7/internal/plumbing.(*RenameAnalysis).Consume.func3(0xc014b84dc0, 0xc03914e1a0)
        /home/travis/gopath/src/gopkg.in/src-d/hercules.v7/internal/plumbing/renames.go:314 +0x27
created by gopkg.in/src-d/hercules.v7/internal/plumbing.(*RenameAnalysis).Consume
        /home/travis/gopath/src/gopkg.in/src-d/hercules.v7/internal/plumbing/renames.go:314 +0x1a74
Repository https://github.com/grandnode/grandnode failed with exception Command '['/home/jovyan/hercules.linux_amd64', '--pb', '--burndown', '--burndown-people', '--devs', '--first-parent', '/tmp/hercules_7jshd8o1']' returned non-zero exit status 2.at stat step

Repository: https://github.com/grandnode/grandnode
Hercules:

>>> ./hercules.linux_amd64 version
Version: 7
Git:     6f3f16ddf25e7f399a48b9f7d0ccdec6acecb778

Measure code complexity & use it to estimate `score` per developer

Hi,
2 points:

  1. measure code complexity per file/class/function & build a distribution of complexities -> long tail will show files that could be considered for refactoring.
  2. average complexity per developer based on his history of contribution -> it will show who tends to write complex code and who is not

Panic: repository already exists

When you run hercules in a remote URL repository after it was already run once (thus it is in the /tmp/repo-cache folder, for example), you get a panic: repository already existserror message.

Hercules could either download the repository again (which could have been updated, for example) or just skip it since it is already in place (in this case you miss any updates in the remote repo) instead of returning a panic.

P.s.: removing /tmp/repo-cache will enable you to run it again as if it was the first time, without the panic.

Log:

>>> hercules https://github.com/src-d/go-git /tmp/repo-cache | python3 labours.py --resample raw --output go-git.json
panic: repository already exists

goroutine 1 [running]:
main.main()
	/Users/xxxxxx/go/src/gopkg.in/src-d/hercules.v2/cmd/hercules/main.go:151 +0xad6
Reading the input... Warning: failed to import yaml.CLoader, falling back to slow yaml.Loader
done
Traceback (most recent call last):
  File "labours.py", line 869, in <module>
    sys.exit(main())
  File "labours.py", line 794, in main
    header = reader.get_header()
  File "labours.py", line 119, in get_header
    header = self.data["burndown"]
TypeError: 'NoneType' object is not subscriptable

Hercules fails on emberjs/ember.js

$ hercules --quiet --burndown --burndown-people https://github.com/emberjs/ember.js | python3 labours.py -m ownership
Warning: clint is not installed, no fancy progressbars in the terminal for you.
Reading the input... file to vendor/ruby/1.9.1/bundler/gems/abbot-from-scratch-754164ff560e 754164ff560e2597b62fb326358fb8b9f7fc3ed4
BlobCache failed on commit #255 22df75f1c6b95ec4c4b2e68b16d308a443cf6bf6
panic: file not found

goroutine 1 [running]:
main.glob..func3(0x5280cc0, 0xc420a30100, 0x1, 0x4)
	/Users/smacker/go/src/gopkg.in/src-d/hercules.v3/cmd/hercules/root.go:210 +0xc25
github.com/spf13/cobra.(*Command).execute(0x5280cc0, 0xc420010150, 0x4, 0x4, 0x5280cc0, 0xc420010150)
	/Users/smacker/go/src/github.com/spf13/cobra/command.go:750 +0x2c1
github.com/spf13/cobra.(*Command).ExecuteC(0x5280cc0, 0x26, 0xc420a36071, 0x0)
	/Users/smacker/go/src/github.com/spf13/cobra/command.go:831 +0x30e
github.com/spf13/cobra.(*Command).Execute(0x5280cc0, 0x0, 0xc42019ff70)
	/Users/smacker/go/src/github.com/spf13/cobra/command.go:784 +0x2b
main.main()
	/Users/smacker/go/src/gopkg.in/src-d/hercules.v3/cmd/hercules/root.go:398 +0x31
done

Coupling calculations fails on Swivel import

Under the virtualenv

go get gopkg.in/src-d/hercules.v2/cmd/hercules
virtualenv -p python3 .venv
pip3 install -r requirements.txt
hercules -couples https://github.com/src-d/go-git | python3 labours.py -m couples -o gogit_couples.tsv

Fails with

Reading the input... done
Traceback (most recent call last):
  File "labours.py", line 679, in <module>
    sys.exit(main())
  File "labours.py", line 650, in main
    *train_embeddings(files_coocc, args.couples_tmp_dir))
  File "labours.py", line 421, in train_embeddings
    from . import swivel
ImportError: cannot import name 'swivel'

Add the plot of bugs per person/unit through time

It is possible to classify each commit as bugfix or not using its message. If it is a bugfix, we record the owners of the changed lines and consider that the bug is theirs. We also record the structural units (functions, classes and files) and relate bugs to them.

[bug] panic: runtime error: invalid memory address or nil pointer dereference

Hi,

got this error log when I tried to combine results for several (1000) repositories:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x1043753]

goroutine 1 [running]:
main.loadMessage(0x7ffed2f3131b, 0x3f, 0xc001947908, 0x31, 0xc09e4058d0, 0x213dc30, 0x0, 0x0)
        /home/travis/gopath/src/gopkg.in/src-d/hercules.v7/cmd/hercules/combine.go:88 +0x273
main.glob..func1(0x20c38e0, 0xc000b2e000, 0x3d4, 0x3d4)
        /home/travis/gopath/src/gopkg.in/src-d/hercules.v7/cmd/hercules/combine.go:40 +0x1a0
gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra.(*Command).execute(0x20c38e0, 0xc000b1e000, 0x3d4, 0x400, 0x20c38e0, 0xc000b1e000)
        /home/travis/gopath/src/gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra/command.go:766 +0x2cc
gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0x20c3da0, 0xc000b5c220, 0xc000b5c1f0, 0xc000042500)
        /home/travis/gopath/src/gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra/command.go:852 +0x2fd
gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra.(*Command).Execute(0x20c3da0, 0x842f40, 0xc0000de058)
        /home/travis/gopath/src/gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra/command.go:800 +0x2b
main.main()
        /home/travis/gopath/src/gopkg.in/src-d/hercules.v7/cmd/hercules/root.go:509 +0x31

And full log:

```console panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x1043753]

goroutine 1 [running]:
main.loadMessage(0x7ffed2f3131b, 0x3f, 0xc001947908, 0x31, 0xc09e4058d0, 0x213dc30, 0x0, 0x0)
/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/cmd/hercules/combine.go:88 +0x273
main.glob..func1(0x20c38e0, 0xc000b2e000, 0x3d4, 0x3d4)
/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/cmd/hercules/combine.go:40 +0x1a0
gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra.(*Command).execute(0x20c38e0, 0xc000b1e000, 0x3d4, 0x400, 0x20c38e0, 0xc000b1e000)
/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra/command.go:766 +0x2cc
gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0x20c3da0, 0xc000b5c220, 0xc000b5c1f0, 0xc000042500)
/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra/command.go:852 +0x2fd
gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra.(*Command).Execute(0x20c3da0, 0x842f40, 0xc0000de058)
/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra/command.go:800 +0x2b
main.main()
/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/cmd/hercules/root.go:509 +0x31
Aggregating of statistics failed with exception Command '['/home/jovyan/hercules.linux_amd64', 'combine', '/home/jovyan/reports/NeXTs/Clusterize.js/statistics.pb', '/home/jovyan/reports/petehunt/webpack-howto/statistics.pb', '/home/jovyan/reports/alibaba/anyproxy/statistics.pb', '/home/jovyan/reports/bailicangdu/vue2-happyfri/statistics.pb', '/home/jovyan/reports/feathersjs/feathers/statistics.pb', '/home/jovyan/reports/uxsolutions/bootstrap-datepicker/statistics.pb', '/home/jovyan/reports/TarrySingh/Artificial-Intelligence-Deep-Learning-Machine-Learning-Tutorials/statistics.pb', '/home/jovyan/reports/hql287/Manta/statistics.pb', '/home/jovyan/reports/matthieua/WOW/statistics.pb', '/home/jovyan/reports/skv-headless/react-native-scrollable-tab-view/statistics.pb', '/home/jovyan/reports/fgnass/spin.js/statistics.pb', '/home/jovyan/reports/moment/moment/statistics.pb', '/home/jovyan/reports/googlevr/gvr-unity-sdk/statistics.pb', '/home/jovyan/reports/JacksonTian/fks/statistics.pb', '/home/jovyan/reports/ianstormtaylor/slate/statistics.pb', '/home/jovyan/reports/ether/etherpad-lite/statistics.pb', '/home/jovyan/reports/facebook/relay/statistics.pb', '/home/jovyan/reports/typicode/husky/statistics.pb', '/home/jovyan/reports/guillaumepotier/Parsley.js/statistics.pb', '/home/jovyan/reports/FormidableLabs/spectacle/statistics.pb', '/home/jovyan/reports/airbnb/enzyme/statistics.pb', '/home/jovyan/reports/twitter/bootstrap/statistics.pb', '/home/jovyan/reports/ParsePlatform/parse-server/statistics.pb', '/home/jovyan/reports/substack/browserify-handbook/statistics.pb', '/home/jovyan/reports/sandstorm-io/sandstorm/statistics.pb', '/home/jovyan/reports/mattermost/platform/statistics.pb', '/home/jovyan/reports/Matt-Esch/virtual-dom/statistics.pb', '/home/jovyan/reports/tj/co/statistics.pb', '/home/jovyan/reports/parcel-bundler/parcel/statistics.pb', '/home/jovyan/reports/trekhleb/javascript-algorithms/statistics.pb', '/home/jovyan/reports/Ar1i/PokemonGo-Bot/statistics.pb', '/home/jovyan/reports/josdejong/mathjs/statistics.pb', '/home/jovyan/reports/baianat/vee-validate/statistics.pb', '/home/jovyan/reports/marktext/marktext/statistics.pb', '/home/jovyan/reports/avwo/whistle/statistics.pb', '/home/jovyan/reports/electron-userland/electron-packager/statistics.pb', '/home/jovyan/reports/dc-js/dc.js/statistics.pb', '/home/jovyan/reports/paulmillr/chokidar/statistics.pb', '/home/jovyan/reports/jadejs/jade/statistics.pb', '/home/jovyan/reports/jumpserver/jumpserver/statistics.pb', '/home/jovyan/reports/feathericons/feather/statistics.pb', '/home/jovyan/reports/substack/stream-handbook/statistics.pb', '/home/jovyan/reports/shichuan/javascript-patterns/statistics.pb', '/home/jovyan/reports/sarcadass/granim.js/statistics.pb', '/home/jovyan/reports/jwagner/smartcrop.js/statistics.pb', '/home/jovyan/reports/componentjs/component/statistics.pb', '/home/jovyan/reports/hexojs/hexo/statistics.pb', '/home/jovyan/reports/addyosmani/jquery-ui-bootstrap/statistics.pb', '/home/jovyan/reports/tomchentw/react-google-maps/statistics.pb', '/home/jovyan/reports/alexmingoia/koa-router/statistics.pb', '/home/jovyan/reports/apache/couchdb/statistics.pb', '/home/jovyan/reports/VerbalExpressions/JSVerbalExpressions/statistics.pb', '/home/jovyan/reports/fbsamples/f8app/statistics.pb', '/home/jovyan/reports/angular/protractor/statistics.pb', '/home/jovyan/reports/senchalabs/connect/statistics.pb', '/home/jovyan/reports/wekan/wekan/statistics.pb', '/home/jovyan/reports/matthew-andrews/isomorphic-fetch/statistics.pb', '/home/jovyan/reports/zeit/hyperterm/statistics.pb', '/home/jovyan/reports/mozilla-services/react-jsonschema-form/statistics.pb', '/home/jovyan/reports/avajs/ava/statistics.pb', '/home/jovyan/reports/scottschiller/SoundManager2/statistics.pb', '/home/jovyan/reports/dangrossman/bootstrap-daterangepicker/statistics.pb', '/home/jovyan/reports/ReactTraining/react-router/statistics.pb', '/home/jovyan/reports/adobe/brackets/statistics.pb', '/home/jovyan/reports/requirejs/requirejs/statistics.pb', '/home/jovyan/reports/zuiidea/antd-admin/statistics.pb', '/home/jovyan/reports/jakesgordon/javascript-state-machine/statistics.pb', '/home/jovyan/reports/ruanyf/webpack-demos/statistics.pb', '/home/jovyan/reports/mozilla/pdf.js/statistics.pb', '/home/jovyan/reports/yuche/vue-strap/statistics.pb', '/home/jovyan/reports/MediaBrowser/Emby/statistics.pb', '/home/jovyan/reports/derbyjs/derby/statistics.pb', '/home/jovyan/reports/Mango/slideout/statistics.pb', '/home/jovyan/reports/wearehive/project-guidelines/statistics.pb', '/home/jovyan/reports/kkga/spacegray/statistics.pb', '/home/jovyan/reports/kesenhoo/android-training-course-in-chinese/statistics.pb', '/home/jovyan/reports/zeit/hyper/statistics.pb', '/home/jovyan/reports/brianreavis/selectize.js/statistics.pb', '/home/jovyan/reports/mleibman/SlickGrid/statistics.pb', '/home/jovyan/reports/serverless/serverless/statistics.pb', '/home/jovyan/reports/chriso/validator.js/statistics.pb', '/home/jovyan/reports/request/request/statistics.pb', '/home/jovyan/reports/oldj/SwitchHosts/statistics.pb', '/home/jovyan/reports/Flipboard/react-canvas/statistics.pb', '/home/jovyan/reports/luruke/barba.js/statistics.pb', '/home/jovyan/reports/koenbok/Framer/statistics.pb', '/home/jovyan/reports/kartik-v/bootstrap-fileinput/statistics.pb', '/home/jovyan/reports/afaqurk/linux-dash/statistics.pb', '/home/jovyan/reports/Unitech/pm2/statistics.pb', '/home/jovyan/reports/eduardolundgren/tracking.js/statistics.pb', '/home/jovyan/reports/daniel-lundin/snabbt.js/statistics.pb', '/home/jovyan/reports/facebook/react-devtools/statistics.pb', '/home/jovyan/reports/SeleniumHQ/selenium/statistics.pb', '/home/jovyan/reports/sindresorhus/ava/statistics.pb', '/home/jovyan/reports/aframevr/aframe/statistics.pb', '/home/jovyan/reports/reactjs/react-redux/statistics.pb', '/home/jovyan/reports/zeit/styled-jsx/statistics.pb', '/home/jovyan/reports/bnoguchi/everyauth/statistics.pb', '/home/jovyan/reports/hiloteam/Hilo/statistics.pb', '/home/jovyan/reports/Khan/tota11y/statistics.pb', '/home/jovyan/reports/callmecavs/bricks.js/statistics.pb', '/home/jovyan/reports/bevacqua/dragula/statistics.pb', '/home/jovyan/reports/tj/commander.js/statistics.pb', '/home/jovyan/reports/zalmoxisus/redux-devtools-extension/statistics.pb', '/home/jovyan/reports/NekR/offline-plugin/statistics.pb', '/home/jovyan/reports/facebook/immutable-js/statistics.pb', '/home/jovyan/reports/cazala/synaptic/statistics.pb', '/home/jovyan/reports/mozilla/nunjucks/statistics.pb', '/home/jovyan/reports/pugjs/pug/statistics.pb', '/home/jovyan/reports/chentsulin/electron-react-boilerplate/statistics.pb', '/home/jovyan/reports/nuxt/nuxt.js/statistics.pb', '/home/jovyan/reports/strongloop/loopback/statistics.pb', '/home/jovyan/reports/ant-design/ant-design-pro/statistics.pb', '/home/jovyan/reports/metalsmith/metalsmith/statistics.pb', '/home/jovyan/reports/eslint/eslint/statistics.pb', '/home/jovyan/reports/Eonasdan/bootstrap-datetimepicker/statistics.pb', '/home/jovyan/reports/chaozh/awesome-blockchain-cn/statistics.pb', '/home/jovyan/reports/jxnblk/rebass/statistics.pb', '/home/jovyan/reports/oblador/react-native-vector-icons/statistics.pb', '/home/jovyan/reports/HubSpot/tether/statistics.pb', '/home/jovyan/reports/apache/incubator-echarts/statistics.pb', '/home/jovyan/reports/masayuki0812/c3/statistics.pb', '/home/jovyan/reports/FreeCodeCamp/FreeCodeCamp/statistics.pb', '/home/jovyan/reports/rstacruz/jquery.transit/statistics.pb', '/home/jovyan/reports/stylus/stylus/statistics.pb', '/home/jovyan/reports/metafizzy/isotope/statistics.pb', '/home/jovyan/reports/BrowserSync/browser-sync/statistics.pb', '/home/jovyan/reports/ducksboard/gridster.js/statistics.pb', '/home/jovyan/reports/nolimits4web/Framework7/statistics.pb', '/home/jovyan/reports/shutterstock/rickshaw/statistics.pb', '/home/jovyan/reports/Nickersoft/push.js/statistics.pb', '/home/jovyan/reports/marcuswestin/store.js/statistics.pb', '/home/jovyan/reports/TalAter/annyang/statistics.pb', '/home/jovyan/reports/jquery/jquery-mousewheel/statistics.pb', '/home/jovyan/reports/imakewebthings/waypoints/statistics.pb', '/home/jovyan/reports/louischatriot/nedb/statistics.pb', '/home/jovyan/reports/CodeboxIDE/codebox/statistics.pb', '/home/jovyan/reports/Swiip/generator-gulp-angular/statistics.pb', '/home/jovyan/reports/foreverjs/forever/statistics.pb', '/home/jovyan/reports/reduxjs/redux/statistics.pb', '/home/jovyan/reports/nolanlawson/optimize-js/statistics.pb', '/home/jovyan/reports/svg/svgo/statistics.pb', '/home/jovyan/reports/sindresorhus/caprine/statistics.pb', '/home/jovyan/reports/jasmine/jasmine/statistics.pb', '/home/jovyan/reports/zeit/pkg/statistics.pb', '/home/jovyan/reports/google/google-api-nodejs-client/statistics.pb', '/home/jovyan/reports/expressjs/morgan/statistics.pb', '/home/jovyan/reports/tj/ejs/statistics.pb', '/home/jovyan/reports/electron/electron-quick-start/statistics.pb', '/home/jovyan/reports/almende/vis/statistics.pb', '/home/jovyan/reports/github/fetch/statistics.pb', '/home/jovyan/reports/reactjs/react-rails/statistics.pb', '/home/jovyan/reports/GitbookIO/gitbook/statistics.pb', '/home/jovyan/reports/markdown-it/markdown-it/statistics.pb', '/home/jovyan/reports/niklasvh/html2canvas/statistics.pb', '/home/jovyan/reports/trufflesuite/truffle/statistics.pb', '/home/jovyan/reports/fejes713/30-seconds-of-interviews/statistics.pb', '/home/jovyan/reports/OpenZeppelin/zeppelin-solidity/statistics.pb', '/home/jovyan/reports/yeoman/generator-angular/statistics.pb', '/home/jovyan/reports/Microsoft/ailab/statistics.pb', '/home/jovyan/reports/coryhouse/react-slingshot/statistics.pb', '/home/jovyan/reports/noraesae/perfect-scrollbar/statistics.pb', '/home/jovyan/reports/alsotang/node-lessons/statistics.pb', '/home/jovyan/reports/FezVrasta/popper.js/statistics.pb', '/home/jovyan/reports/Rohfosho/CosmosBrowserBackend/statistics.pb', '/home/jovyan/reports/IonicaBizau/git-stats/statistics.pb', '/home/jovyan/reports/RubyLouvre/avalon/statistics.pb', '/home/jovyan/reports/reflux/refluxjs/statistics.pb', '/home/jovyan/reports/fengyuanchen/cropperjs/statistics.pb', '/home/jovyan/reports/brave/browser-laptop/statistics.pb', '/home/jovyan/reports/fex-team/webuploader/statistics.pb', '/home/jovyan/reports/filamentgroup/loadCSS/statistics.pb', '/home/jovyan/reports/erikras/redux-form/statistics.pb', '/home/jovyan/reports/este/este/statistics.pb', '/home/jovyan/reports/jonschlinkert/remarkable/statistics.pb', '/home/jovyan/reports/yarnpkg/yarn/statistics.pb', '/home/jovyan/reports/Hashnode/mern-starter/statistics.pb', '/home/jovyan/reports/less/less.js/statistics.pb', '/home/jovyan/reports/wangfupeng1988/wangEditor/statistics.pb', '/home/jovyan/reports/zouhir/jarvis/statistics.pb', '/home/jovyan/reports/madrobby/keymaster/statistics.pb', '/home/jovyan/reports/redux-saga/redux-saga/statistics.pb', '/home/jovyan/reports/mgcrea/angular-strap/statistics.pb', '/home/jovyan/reports/sindresorhus/fkill-cli/statistics.pb', '/home/jovyan/reports/lerna/lerna/statistics.pb', '/home/jovyan/reports/Jermolene/TiddlyWiki5/statistics.pb', '/home/jovyan/reports/fengyuanchen/cropper/statistics.pb', '/home/jovyan/reports/websockets/ws/statistics.pb', '/home/jovyan/reports/terkelg/prompts/statistics.pb', '/home/jovyan/reports/yangshun1029/aria2gui/statistics.pb', '/home/jovyan/reports/bartaz/impress.js/statistics.pb', '/home/jovyan/reports/maxogden/art-of-node/statistics.pb', '/home/jovyan/reports/SBoudrias/Inquirer.js/statistics.pb', '/home/jovyan/reports/vasanthk/react-bits/statistics.pb', '/home/jovyan/reports/thinkgem/jeesite/statistics.pb', '/home/jovyan/reports/relax/relax/statistics.pb', '/home/jovyan/reports/joeblau/gitignore.io/statistics.pb', '/home/jovyan/reports/paypal/downshift/statistics.pb', '/home/jovyan/reports/mozilla/metrics-graphics/statistics.pb', '/home/jovyan/reports/FineUploader/fine-uploader/statistics.pb', '/home/jovyan/reports/zeit/micro/statistics.pb', '/home/jovyan/reports/GetStream/Winds/statistics.pb', '/home/jovyan/reports/rethinkdb/horizon/statistics.pb', '/home/jovyan/reports/aksonov/react-native-router-flux/statistics.pb', '/home/jovyan/reports/openstf/stf/statistics.pb', '/home/jovyan/reports/Soundnode/soundnode-app/statistics.pb', '/home/jovyan/reports/reactstrap/reactstrap/statistics.pb', '/home/jovyan/reports/balderdashy/waterline/statistics.pb', '/home/jovyan/reports/gabrielbull/react-desktop/statistics.pb', '/home/jovyan/reports/breach/breach_core/statistics.pb', '/home/jovyan/reports/reactjs/reselect/statistics.pb', '/home/jovyan/reports/nnnick/Chart.js/statistics.pb', '/home/jovyan/reports/nasa/openmct/statistics.pb', '/home/jovyan/reports/rstacruz/nprogress/statistics.pb', '/home/jovyan/reports/firebase/functions-samples/statistics.pb', '/home/jovyan/reports/jlongster/prettier/statistics.pb', '/home/jovyan/reports/ejci/favico.js/statistics.pb', '/home/jovyan/reports/appbaseio/dejaVu/statistics.pb', '/home/jovyan/reports/pagekit/vue-resource/statistics.pb', '/home/jovyan/reports/helmetjs/helmet/statistics.pb', '/home/jovyan/reports/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/statistics.pb', '/home/jovyan/reports/callmecavs/layzr.js/statistics.pb', '/home/jovyan/reports/Khan/aphrodite/statistics.pb', '/home/jovyan/reports/webpack/webpack-dev-server/statistics.pb', '/home/jovyan/reports/graphql/graphql-js/statistics.pb', '/home/jovyan/reports/carhartl/jquery-cookie/statistics.pb', '/home/jovyan/reports/fangwei716/30-days-of-react-native/statistics.pb', '/home/jovyan/reports/visionmedia/debug/statistics.pb', '/home/jovyan/reports/rlidwka/sinopia/statistics.pb', '/home/jovyan/reports/rt2zz/redux-persist/statistics.pb', '/home/jovyan/reports/developit/htm/statistics.pb', '/home/jovyan/reports/StockSharp/StockSharp/statistics.pb', '/home/jovyan/reports/facebook/draft-js/statistics.pb', '/home/jovyan/reports/react-dnd/react-dnd/statistics.pb', '/home/jovyan/reports/qrohlf/trianglify/statistics.pb', '/home/jovyan/reports/cnodejs/nodeclub/statistics.pb', '/home/jovyan/reports/happypoulp/redux-tutorial/statistics.pb', '/home/jovyan/reports/taye/interact.js/statistics.pb', '/home/jovyan/reports/typekit/webfontloader/statistics.pb', '/home/jovyan/reports/commitizen/cz-cli/statistics.pb', '/home/jovyan/reports/zurb/foundation-sites/statistics.pb', '/home/jovyan/reports/knockout/knockout/statistics.pb', '/home/jovyan/reports/zenorocha/clipboard.js/statistics.pb', '/home/jovyan/reports/janpaepke/ScrollMagic/statistics.pb', '/home/jovyan/reports/hacksalot/HackMyResume/statistics.pb', '/home/jovyan/reports/badges/shields/statistics.pb', '/home/jovyan/reports/jeromeetienne/jquery-qrcode/statistics.pb', '/home/jovyan/reports/artf/grapesjs/statistics.pb', '/home/jovyan/reports/KotlinBy/awesome-kotlin/statistics.pb', '/home/jovyan/reports/mishoo/UglifyJS2/statistics.pb', '/home/jovyan/reports/google/lovefield/statistics.pb', '/home/jovyan/reports/PrismJS/prism/statistics.pb', '/home/jovyan/reports/nfl/react-helmet/statistics.pb','/home/jovyan/reports/knsv/mermaid/statistics.pb', '/home/jovyan/reports/garris/BackstopJS/statistics.pb', '/home/jovyan/reports/mikeal/request/statistics.pb', '/home/jovyan/reports/serverless/examples/statistics.pb', '/home/jovyan/reports/mongodb/node-mongodb-native/statistics.pb', '/home/jovyan/reports/beefproject/beef/statistics.pb', '/home/jovyan/reports/reactjs/react-router-tutorial/statistics.pb', '/home/jovyan/reports/processing/p5.js/statistics.pb', '/home/jovyan/reports/giakki/uncss/statistics.pb', '/home/jovyan/reports/bailicangdu/vue2-elm/statistics.pb', '/home/jovyan/reports/ryanoasis/nerd-fonts/statistics.pb', '/home/jovyan/reports/LeaVerou/awesomplete/statistics.pb', '/home/jovyan/reports/dylang/npm-check/statistics.pb', '/home/jovyan/reports/GoogleChrome/workbox/statistics.pb', '/home/jovyan/reports/CodeSeven/toastr/statistics.pb', '/home/jovyan/reports/bailicangdu/node-elm/statistics.pb', '/home/jovyan/reports/chvin/react-tetris/statistics.pb', '/home/jovyan/reports/vvo/gifify/statistics.pb', '/home/jovyan/reports/scottjehl/Respond/statistics.pb', '/home/jovyan/reports/danilowoz/react-content-loader/statistics.pb', '/home/jovyan/reports/akiran/react-slick/statistics.pb', '/home/jovyan/reports/assaf/zombie/statistics.pb', '/home/jovyan/reports/callemall/material-ui/statistics.pb', '/home/jovyan/reports/kolodny/exercises/statistics.pb', '/home/jovyan/reports/felixrieseberg/windows95/statistics.pb', '/home/jovyan/reports/dhg/Skeleton/statistics.pb', '/home/jovyan/reports/lokesh/color-thief/statistics.pb', '/home/jovyan/reports/gaearon/redux-thunk/statistics.pb', '/home/jovyan/reports/brianc/node-postgres/statistics.pb', '/home/jovyan/reports/DevExpress/testcafe/statistics.pb', '/home/jovyan/reports/jspm/jspm-cli/statistics.pb', '/home/jovyan/reports/yhat/rodeo/statistics.pb', '/home/jovyan/reports/mxstbr/react-boilerplate/statistics.pb', '/home/jovyan/reports/facebook/jest/statistics.pb', '/home/jovyan/reports/gorhill/uBlock/statistics.pb', '/home/jovyan/reports/olton/Metro-UI-CSS/statistics.pb', '/home/jovyan/reports/vuejs-templates/webpack/statistics.pb', '/home/jovyan/reports/timarney/react-app-rewired/statistics.pb', '/home/jovyan/reports/timuric/Content-generator-sketch-plugin/statistics.pb','/home/jovyan/reports/google/blockly/statistics.pb', '/home/jovyan/reports/material-components/material-components-web/statistics.pb', '/home/jovyan/reports/alvarcarto/url-to-pdf-api/statistics.pb', '/home/jovyan/reports/trentm/node-bunyan/statistics.pb', '/home/jovyan/reports/eligrey/FileSaver.js/statistics.pb', '/home/jovyan/reports/dianping/cat/statistics.pb', '/home/jovyan/reports/1j01/jspaint/statistics.pb', '/home/jovyan/reports/jscs-dev/node-jscs/statistics.pb', '/home/jovyan/reports/youzan/zanui-weapp/statistics.pb', '/home/jovyan/reports/wenzhixin/bootstrap-table/statistics.pb', '/home/jovyan/reports/leecade/react-native-swiper/statistics.pb', '/home/jovyan/reports/facebook/jscodeshift/statistics.pb', '/home/jovyan/reports/stylelint/stylelint/statistics.pb', '/home/jovyan/reports/foru17/front-end-collect/statistics.pb', '/home/jovyan/reports/ericdrowell/KineticJS/statistics.pb', '/home/jovyan/reports/sohutv/cachecloud/statistics.pb', '/home/jovyan/reports/krisk/Fuse/statistics.pb', '/home/jovyan/reports/alvarotrigo/fullPage.js/statistics.pb', '/home/jovyan/reports/gionkunz/chartist-js/statistics.pb', '/home/jovyan/reports/filamentgroup/tablesaw/statistics.pb', '/home/jovyan/reports/tastejs/todomvc/statistics.pb', '/home/jovyan/reports/mjmlio/mjml/statistics.pb', '/home/jovyan/reports/mrdoob/three.js/statistics.pb', '/home/jovyan/reports/ziahamza/webui-aria2/statistics.pb', '/home/jovyan/reports/i18next/i18next/statistics.pb', '/home/jovyan/reports/OptimalBits/bull/statistics.pb', '/home/jovyan/reports/harthur/brain/statistics.pb', '/home/jovyan/reports/JedWatson/classnames/statistics.pb','/home/jovyan/reports/enaqx/awesome-react/statistics.pb', '/home/jovyan/reports/felixge/node-style-guide/statistics.pb', '/home/jovyan/reports/webdriverio/webdriverio/statistics.pb', '/home/jovyan/reports/SimulatedGREG/electron-vue/statistics.pb', '/home/jovyan/reports/react-toolbox/react-toolbox/statistics.pb', '/home/jovyan/reports/JasperFx/marten/statistics.pb', '/home/jovyan/reports/dotnet/dotnet-docker-samples/statistics.pb', '/home/jovyan/reports/domaindrivendev/Swashbuckle.AspNetCore/statistics.pb', '/home/jovyan/reports/rogeralsing/Microphone/statistics.pb', '/home/jovyan/reports/prose/prose/statistics.pb', '/home/jovyan/reports/zloirock/core-js/statistics.pb', '/home/jovyan/reports/keijiro/KvantSpray/statistics.pb', '/home/jovyan/reports/Microsoft/vstest/statistics.pb', '/home/jovyan/reports/jakubgarfield/Bonobo-Git-Server/statistics.pb', '/home/jovyan/reports/lzybkr/PSReadLine/statistics.pb', '/home/jovyan/reports/mganss/HtmlSanitizer/statistics.pb', '/home/jovyan/reports/Siccity/xNode/statistics.pb', '/home/jovyan/reports/ubisoftinc/Sharpmake/statistics.pb', '/home/jovyan/reports/Accelerider/BaiduPanDownloadWinform/statistics.pb', '/home/jovyan/reports/mellinoe/ImGui.NET/statistics.pb', '/home/jovyan/reports/Microsoft/CodeContracts/statistics.pb', '/home/jovyan/reports/MathewSachin/Captura/statistics.pb', '/home/jovyan/reports/googleads/googleads-mobile-unity/statistics.pb', '/home/jovyan/reports/umbraco/Umbraco-CMS/statistics.pb', '/home/jovyan/reports/TaoK/PoorMansTSqlFormatter/statistics.pb', '/home/jovyan/reports/NetEase/UnitySocketIO/statistics.pb', '/home/jovyan/reports/eventflow/EventFlow/statistics.pb', '/home/jovyan/reports/filoe/cscore/statistics.pb', '/home/jovyan/reports/HTBox/allReady/statistics.pb', '/home/jovyan/reports/sta/websocket-sharp/statistics.pb', '/home/jovyan/reports/filipw/dotnet-script/statistics.pb', '/home/jovyan/reports/MarlabsInc/SocialGoal/statistics.pb', '/home/jovyan/reports/Kwoth/NadekoBot/statistics.pb', '/home/jovyan/reports/Microsoft/msbuild/statistics.pb', '/home/jovyan/reports/Microsoft/RTVS/statistics.pb', '/home/jovyan/reports/TylerBrinkley/Enums.NET/statistics.pb', '/home/jovyan/reports/elvirbrk/NoteHighlight2016/statistics.pb', '/home/jovyan/reports/dotnetcore/surging/statistics.pb', '/home/jovyan/reports/peters/winforms-modernui/statistics.pb', '/home/jovyan/reports/SteamRE/SteamKit/statistics.pb', '/home/jovyan/reports/neuecc/UniRx/statistics.pb', '/home/jovyan/reports/sq/JSIL/statistics.pb', '/home/jovyan/reports/NewEraCracker/LOIC/statistics.pb', '/home/jovyan/reports/Radarr/Radarr/statistics.pb', '/home/jovyan/reports/opentk/opentk/statistics.pb', '/home/jovyan/reports/Jessecar96/SteamDesktopAuthenticator/statistics.pb', '/home/jovyan/reports/chocolatey/choco/statistics.pb', '/home/jovyan/reports/aspnet/JavaScriptServices/statistics.pb', '/home/jovyan/reports/DarthFubuMVC/fubumvc/statistics.pb', '/home/jovyan/reports/ArthurHub/HTML-Renderer/statistics.pb', '/home/jovyan/reports/SubtitleEdit/subtitleedit/statistics.pb', '/home/jovyan/reports/MicrosoftArchive/cqrs-journey/statistics.pb', '/home/jovyan/reports/RSuter/NSwag/statistics.pb', '/home/jovyan/reports/keijiro/KinoBloom/statistics.pb', '/home/jovyan/reports/OnsenUI/OnsenUI/statistics.pb', '/home/jovyan/reports/Azure/DotNetty/statistics.pb', '/home/jovyan/reports/fholm/unityassets/statistics.pb', '/home/jovyan/reports/aspnetboilerplate/module-zero/statistics.pb', '/home/jovyan/reports/chummer5a/chummer5a/statistics.pb', '/home/jovyan/reports/Foundry376/Mailspring/statistics.pb', '/home/jovyan/reports/Microsoft/DbgShell/statistics.pb', '/home/jovyan/reports/madskristensen/Miniblog.Core/statistics.pb', '/home/jovyan/reports/cobbr/SharpSploit/statistics.pb', '/home/jovyan/reports/grumpydev/TinyIoC/statistics.pb', '/home/jovyan/reports/samus/mongodb-csharp/statistics.pb', '/home/jovyan/reports/neuecc/Utf8Json/statistics.pb', '/home/jovyan/reports/madskristensen/MiniBlog/statistics.pb', '/home/jovyan/reports/mono/monotouch-bindings/statistics.pb', '/home/jovyan/reports/PavelTorgashov/FastColoredTextBox/statistics.pb', '/home/jovyan/reports/JeremySkinner/FluentValidation/statistics.pb', '/home/jovyan/reports/Franiac/TwitchLeecher/statistics.pb', '/home/jovyan/reports/neuecc/LINQ-to-GameObject-for-Unity/statistics.pb', '/home/jovyan/reports/AutoFixture/AutoFixture/statistics.pb', '/home/jovyan/reports/Microsoft/Quantum/statistics.pb', '/home/jovyan/reports/Microsoft/uwp-experiences/statistics.pb', '/home/jovyan/reports/Epix37/Hearthstone-Deck-Tracker/statistics.pb', '/home/jovyan/reports/Seneral/Node_Editor_Framework/statistics.pb','/home/jovyan/reports/NuGet/NuGetGallery/statistics.pb', '/home/jovyan/reports/jbogard/MediatR/statistics.pb', '/home/jovyan/reports/charlesw/tesseract/statistics.pb', '/home/jovyan/reports/bitdust/EarthLiveSharp/statistics.pb', '/home/jovyan/reports/IdentityServer/IdentityServer4/statistics.pb', '/home/jovyan/reports/cDima/Aerial/statistics.pb', '/home/jovyan/reports/jwt-dotnet/jwt/statistics.pb', '/home/jovyan/reports/Unity-Technologies/FPSSample/statistics.pb', '/home/jovyan/reports/jamesmontemagno/Xamarin.Plugins/statistics.pb', '/home/jovyan/reports/Kinect/RoomAliveToolkit/statistics.pb', '/home/jovyan/reports/Recognos/Metrics.NET/statistics.pb', '/home/jovyan/reports/enyim/EnyimMemcached/statistics.pb', '/home/jovyan/reports/neo-project/neo/statistics.pb', '/home/jovyan/reports/sjdirect/abot/statistics.pb', '/home/jovyan/reports/mike-ward/Markdown-Edit/statistics.pb', '/home/jovyan/reports/pythonnet/pythonnet/statistics.pb', '/home/jovyan/reports/primaryobjects/AI-Programmer/statistics.pb', '/home/jovyan/reports/AutoMapper/AutoMapper/statistics.pb', '/home/jovyan/reports/ONLYOFFICE/CommunityServer/statistics.pb', '/home/jovyan/reports/TheBerkin/Rant/statistics.pb', '/home/jovyan/reports/aalhour/C-Sharp-Algorithms/statistics.pb', '/home/jovyan/reports/WordDocX/DocX/statistics.pb', '/home/jovyan/reports/GitTools/GitLink/statistics.pb', '/home/jovyan/reports/sethjuarez/numl/statistics.pb', '/home/jovyan/reports/bbougot/Popcorn/statistics.pb', '/home/jovyan/reports/googlesamples/tango-examples-unity/statistics.pb', '/home/jovyan/reports/BrighterCommand/Brighter/statistics.pb', '/home/jovyan/reports/tkellogg/Jump-Location/statistics.pb', '/home/jovyan/reports/pwntester/ysoserial.net/statistics.pb', '/home/jovyan/reports/Xeroday/Spotify-Ad-Blocker/statistics.pb', '/home/jovyan/reports/PowerShell/PSScriptAnalyzer/statistics.pb', '/home/jovyan/reports/AdamsLair/duality/statistics.pb', '/home/jovyan/reports/Caliburn-Micro/Caliburn.Micro/statistics.pb', '/home/jovyan/reports/liguobao/58HouseSearch/statistics.pb', '/home/jovyan/reports/plotly/plotly.js/statistics.pb', '/home/jovyan/reports/phw198/OutlookGoogleCalendarSync/statistics.pb', '/home/jovyan/reports/tmenier/Flurl/statistics.pb', '/home/jovyan/reports/MichaCo/CacheManager/statistics.pb', '/home/jovyan/reports/Particular/NServiceBus/statistics.pb', '/home/jovyan/reports/jimradford/superputty/statistics.pb', '/home/jovyan/reports/Microsoft/Cognitive-Samples-IntelligentKiosk/statistics.pb', '/home/jovyan/reports/AdaptiveConsulting/ReactiveTraderCloud/statistics.pb', '/home/jovyan/reports/tjoudeh/AngularJSAuthentication/statistics.pb', '/home/jovyan/reports/bitbeans/SimpleDnsCrypt/statistics.pb', '/home/jovyan/reports/statianzo/Fleck/statistics.pb', '/home/jovyan/reports/dotnet/corefxlab/statistics.pb', '/home/jovyan/reports/SergeyTeplyakov/ErrorProne.NET/statistics.pb', '/home/jovyan/reports/ckimes89/graphql-net/statistics.pb', '/home/jovyan/reports/Netflix/Fido/statistics.pb', '/home/jovyan/reports/Reactive-Extensions/Rx.NET/statistics.pb', '/home/jovyan/reports/ComponentFactory/Krypton/statistics.pb', '/home/jovyan/reports/dotnetcore/NPOI/statistics.pb', '/home/jovyan/reports/sailro/Reflexil/statistics.pb', '/home/jovyan/reports/jshackles/idle_master/statistics.pb', '/home/jovyan/reports/Glimpse/Glimpse/statistics.pb', '/home/jovyan/reports/bonesoul/CoiniumServ/statistics.pb', '/home/jovyan/reports/keijiro/Pix2Pix/statistics.pb', '/home/jovyan/reports/GoogleCloudPlatform/microservices-demo/statistics.pb', '/home/jovyan/reports/01org/acat/statistics.pb', '/home/jovyan/reports/Tlaster/YourAV/statistics.pb','/home/jovyan/reports/oxyplot/oxyplot/statistics.pb', '/home/jovyan/reports/redcanaryco/atomic-red-team/statistics.pb', '/home/jovyan/reports/GuillaumeSalles/redux.NET/statistics.pb', '/home/jovyan/reports/rlabrecque/Steamworks.NET/statistics.pb', '/home/jovyan/reports/Microsoft/WindowsCommunityToolkit/statistics.pb', '/home/jovyan/reports/accord-net/framework/statistics.pb', '/home/jovyan/reports/praeclarum/NGraphics/statistics.pb', '/home/jovyan/reports/dennismagno/metroframework-modern-ui/statistics.pb', '/home/jovyan/reports/Fody/Costura/statistics.pb', '/home/jovyan/reports/lukencode/FluentEmail/statistics.pb', '/home/jovyan/reports/keijiro/Klak/statistics.pb', '/home/jovyan/reports/Azure/autorest/statistics.pb', '/home/jovyan/reports/mgravell/protobuf-net/statistics.pb', '/home/jovyan/reports/Chman/Moments/statistics.pb', '/home/jovyan/reports/dotnet/wcf/statistics.pb', '/home/jovyan/reports/rickyah/ini-parser/statistics.pb', '/home/jovyan/reports/OneGet/oneget/statistics.pb', '/home/jovyan/reports/Jays2Kings/DS4Windows/statistics.pb', '/home/jovyan/reports/aelij/roslynpad/statistics.pb', '/home/jovyan/reports/ErikEJ/SqlCeToolbox/statistics.pb', '/home/jovyan/reports/EsotericSoftware/spine-runtimes/statistics.pb', '/home/jovyan/reports/gigya/microdot/statistics.pb', '/home/jovyan/reports/neuecc/MagicOnion/statistics.pb', '/home/jovyan/reports/aspnet/benchmarks/statistics.pb', '/home/jovyan/reports/tgjones/gemini/statistics.pb', '/home/jovyan/reports/vietnam-devs/coolstore-microservices/statistics.pb', '/home/jovyan/reports/beto-rodriguez/Live-Charts/statistics.pb', '/home/jovyan/reports/xenolightning/AudioSwitcher_v1/statistics.pb', '/home/jovyan/reports/johanneszab/TumblThree/statistics.pb', '/home/jovyan/reports/brockallen/BrockAllen.MembershipReboot/statistics.pb', '/home/jovyan/reports/petabridge/akka-bootcamp/statistics.pb', '/home/jovyan/reports/fluentribbon/Fluent.Ribbon/statistics.pb', '/home/jovyan/reports/NRules/NRules/statistics.pb', '/home/jovyan/reports/msgpack/msgpack-cli/statistics.pb', '/home/jovyan/reports/Windows-Readiness/AbsoluteBeginnersWin10/statistics.pb', '/home/jovyan/reports/dvsekhvalnov/jose-jwt/statistics.pb', '/home/jovyan/reports/Microsoft/BotBuilder-Samples/statistics.pb', '/home/jovyan/reports/QuantConnect/Lean/statistics.pb', '/home/jovyan/reports/fdorg/flashdevelop/statistics.pb', '/home/jovyan/reports/hallatore/Netling/statistics.pb', '/home/jovyan/reports/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp/statistics.pb', '/home/jovyan/reports/kenvix/USBCopyer/statistics.pb', '/home/jovyan/reports/abpframework/abp/statistics.pb', '/home/jovyan/reports/MarkPieszak/aspnetcore-angular2-universal/statistics.pb', '/home/jovyan/reports/realm/realm-dotnet/statistics.pb','/home/jovyan/reports/dotnet/machinelearning/statistics.pb', '/home/jovyan/reports/johnculviner/jquery.fileDownload/statistics.pb', '/home/jovyan/reports/canton7/RestEase/statistics.pb', '/home/jovyan/reports/seesharper/LightInject/statistics.pb', '/home/jovyan/reports/StackExchange/Dapper/statistics.pb', '/home/jovyan/reports/sshnet/SSH.NET/statistics.pb', '/home/jovyan/reports/SaladLab/Json.Net.Unity3D/statistics.pb', '/home/jovyan/reports/aspnet/MusicStore/statistics.pb', '/home/jovyan/reports/shadowsocks/shadowsocks-windows/statistics.pb', '/home/jovyan/reports/dotnetcore/cap/statistics.pb', '/home/jovyan/reports/NancyFx/Nancy/statistics.pb', '/home/jovyan/reports/Mrs4s/BaiduPanDownload/statistics.pb', '/home/jovyan/reports/PlayFab/consuldotnet/statistics.pb', '/home/jovyan/reports/xamarin/Sport/statistics.pb', '/home/jovyan/reports/clojure/clojure-clr/statistics.pb', '/home/jovyan/reports/PKISharp/win-acme/statistics.pb', '/home/jovyan/reports/sunkaixuan/SqlSugar/statistics.pb', '/home/jovyan/reports/github-for-unity/Unity/statistics.pb', '/home/jovyan/reports/OpenLiveWriter/OpenLiveWriter/statistics.pb', '/home/jovyan/reports/opserver/Opserver/statistics.pb', '/home/jovyan/reports/lachesis/scallion/statistics.pb', '/home/jovyan/reports/opendns/dnscrypt-win-client/statistics.pb', '/home/jovyan/reports/azzvx/gogotester/statistics.pb', '/home/jovyan/reports/xunit/xunit/statistics.pb', '/home/jovyan/reports/Pash-Project/Pash/statistics.pb', '/home/jovyan/reports/OpenCover/opencover/statistics.pb', '/home/jovyan/reports/tangxuehua/enode/statistics.pb', '/home/jovyan/reports/AntShares/AntShares/statistics.pb', '/home/jovyan/reports/EventStore/EventStore/statistics.pb', '/home/jovyan/reports/mayuki/Kurukuru/statistics.pb', '/home/jovyan/reports/mongodb/mongo-csharp-driver/statistics.pb', '/home/jovyan/reports/PFCKrutonium/Windows-10-Login-Background-Changer/statistics.pb', '/home/jovyan/reports/geffzhang/NanoFabric/statistics.pb', '/home/jovyan/reports/petabridge/akkadotnet-code-samples/statistics.pb', '/home/jovyan/reports/ZeBobo5/Vlc.DotNet/statistics.pb', '/home/jovyan/reports/Microsoft/WindowsTemplateStudio/statistics.pb', '/home/jovyan/reports/schotime/NPoco/statistics.pb', '/home/jovyan/reports/gsscoder/commandline/statistics.pb', '/home/jovyan/reports/cjacobwade/HelpfulScripts/statistics.pb', '/home/jovyan/reports/twilio/twilio-csharp/statistics.pb', '/home/jovyan/reports/Microsoft/GraphEngine/statistics.pb', '/home/jovyan/reports/dwmkerr/sharpshell/statistics.pb', '/home/jovyan/reports/aspnet/EntityFramework6/statistics.pb', '/home/jovyan/reports/mono/xwt/statistics.pb','/home/jovyan/reports/bchavez/Bogus/statistics.pb', '/home/jovyan/reports/SamSaffron/dapper-dot-net/statistics.pb', '/home/jovyan/reports/Theo47/depressurizer/statistics.pb', '/home/jovyan/reports/webgio/Rotativa/statistics.pb', '/home/jovyan/reports/openchain/openchain/statistics.pb', '/home/jovyan/reports/schambers/fluentmigrator/statistics.pb', '/home/jovyan/reports/Flafla2/Vive-Teleporter/statistics.pb', '/home/jovyan/reports/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql/statistics.pb','/home/jovyan/reports/ServiceStack/ServiceStack.Redis/statistics.pb', '/home/jovyan/reports/IronWarrior/SuperCharacterController/statistics.pb', '/home/jovyan/reports/kriasoft/aspnet-starter-kit/statistics.pb', '/home/jovyan/reports/dlrudie/Snip/statistics.pb', '/home/jovyan/reports/dotnet/codeformatter/statistics.pb', '/home/jovyan/reports/paulyoder/LinqToExcel/statistics.pb', '/home/jovyan/reports/Ninputer/VBF/statistics.pb', '/home/jovyan/reports/codebude/QRCoder/statistics.pb', '/home/jovyan/reports/MrRoundRobin/telegram.bot/statistics.pb', '/home/jovyan/reports/mathnet/mathnet-numerics/statistics.pb', '/home/jovyan/reports/dotnet-architecture/eShopOnContainers/statistics.pb', '/home/jovyan/reports/Perfare/UnityStudio/statistics.pb', '/home/jovyan/reports/danielpalme/IocPerformance/statistics.pb', '/home/jovyan/reports/iolevel/peachpie/statistics.pb', '/home/jovyan/reports/anderscui/jieba.NET/statistics.pb', '/home/jovyan/reports/Microsoft/Git-Credential-Manager-for-Windows/statistics.pb', '/home/jovyan/reports/DDoSolitary/LxRunOffline/statistics.pb', '/home/jovyan/reports/linvi/tweetinvi/statistics.pb', '/home/jovyan/reports/sjkp/letsencrypt-siteextension/statistics.pb', '/home/jovyan/reports/toolgood/ToolGood.Words/statistics.pb', '/home/jovyan/reports/xceedsoftware/DocX/statistics.pb', '/home/jovyan/reports/i66soft/osharp/statistics.pb', '/home/jovyan/reports/aspnet-contrib/AspNet.Security.OAuth.Providers/statistics.pb', '/home/jovyan/reports/aspnet/Caching/statistics.pb', '/home/jovyan/reports/KSP-KOS/KOS/statistics.pb', '/home/jovyan/reports/icsharpcode/ILSpy/statistics.pb', '/home/jovyan/reports/OmniSharp/omnisharp-roslyn/statistics.pb', '/home/jovyan/reports/PrismLibrary/Prism-Samples-Wpf/statistics.pb', '/home/jovyan/reports/frhagn/Typewriter/statistics.pb', '/home/jovyan/reports/Ryochan7/DS4Windows/statistics.pb', '/home/jovyan/reports/SiliconStudio/xenko/statistics.pb', '/home/jovyan/reports/NLog/NLog/statistics.pb', '/home/jovyan/reports/Depressurizer/depressurizer/statistics.pb', '/home/jovyan/reports/PintaProject/Pinta/statistics.pb', '/home/jovyan/reports/marmelab/ng-admin/statistics.pb', '/home/jovyan/reports/unity3d-jp/AssetGraph/statistics.pb', '/home/jovyan/reports/dotnet/wpf/statistics.pb', '/home/jovyan/reports/dotnet/cli/statistics.pb', '/home/jovyan/reports/davideicardi/DynamicExpresso/statistics.pb', '/home/jovyan/reports/ekonbenefits/impromptu-interface/statistics.pb', '/home/jovyan/reports/zeromq/netmq/statistics.pb', '/home/jovyan/reports/StackExchange/StackExchange.Redis/statistics.pb', '/home/jovyan/reports/xenko3d/xenko/statistics.pb', '/home/jovyan/reports/Microsoft/clrmd/statistics.pb', '/home/jovyan/reports/IdentityServer/IdentityServer3/statistics.pb', '/home/jovyan/reports/WebApiContrib/WebAPIContrib/statistics.pb', '/home/jovyan/reports/unity3d-jp/unitychan-crs/statistics.pb', '/home/jovyan/reports/chenguanzhou/MarkDownEditor/statistics.pb', '/home/jovyan/reports/sjh37/EntityFramework-Reverse-POCO-Code-First-Generator/statistics.pb', '/home/jovyan/reports/ResourceHunter/BaiduPanDownloadWinform/statistics.pb', '/home/jovyan/reports/github/VisualStudio/statistics.pb', '/home/jovyan/reports/chocolatey/ChocolateyGUI/statistics.pb', '/home/jovyan/reports/ElectronNET/Electron.NET/statistics.pb', '/home/jovyan/reports/projectkudu/kudu/statistics.pb', '/home/jovyan/reports/libgit2/libgit2sharp/statistics.pb', '/home/jovyan/reports/lukebuehler/CShell/statistics.pb', '/home/jovyan/reports/lunet-io/markdig/statistics.pb', '/home/jovyan/reports/JamesNK/Newtonsoft.Json/statistics.pb', '/home/jovyan/reports/MarimerLLC/csla/statistics.pb', '/home/jovyan/reports/confluentinc/confluent-kafka-dotnet/statistics.pb', '/home/jovyan/reports/akkadotnet/akka.net/statistics.pb', '/home/jovyan/reports/quasar/QuasarRAT/statistics.pb', '/home/jovyan/reports/modesttree/Projeny/statistics.pb', '/home/jovyan/reports/dotnet/eShopOnContainers/statistics.pb', '/home/jovyan/reports/danielpalme/ReportGenerator/statistics.pb', '/home/jovyan/reports/paulcbetts/ModernHttpClient/statistics.pb', '/home/jovyan/reports/Microsoft/PartsUnlimited/statistics.pb', '/home/jovyan/reports/dotnet/templating/statistics.pb', '/home/jovyan/reports/moq/moq/statistics.pb', '/home/jovyan/reports/thesecretlab/YarnSpinner/statistics.pb', '/home/jovyan/reports/OmniSharp/omnisharp-server/statistics.pb', '/home/jovyan/reports/luckyrat/KeeFox/statistics.pb', '/home/jovyan/reports/slipster216/VertexPaint/statistics.pb', '/home/jovyan/reports/icsharpcode/AvalonEdit/statistics.pb', '/home/jovyan/reports/telerik/JustDecompileEngine/statistics.pb', '/home/jovyan/reports/ll4080333/UnityCodes/statistics.pb', '/home/jovyan/reports/smartstoreag/SmartStoreNET/statistics.pb', '/home/jovyan/reports/modesttree/Zenject/statistics.pb', '/home/jovyan/reports/devbridge/BetterCMS/statistics.pb', '/home/jovyan/reports/fluentassertions/fluentassertions/statistics.pb', '/home/jovyan/reports/File-New-Project/EarTrumpet/statistics.pb', '/home/jovyan/reports/cake-build/cake/statistics.pb', '/home/jovyan/reports/openiddict/openiddict-core/statistics.pb', '/home/jovyan/reports/GaoKaiHaHa/MyUnityFrameWork/statistics.pb', '/home/jovyan/reports/SharePoint/PnP/statistics.pb', '/home/jovyan/reports/spring-projects/spring-net/statistics.pb', '/home/jovyan/reports/prime31/CharacterController2D/statistics.pb', '/home/jovyan/reports/mxgmn/WaveFunctionCollapse/statistics.pb', '/home/jovyan/reports/elastic/elasticsearch-net/statistics.pb', '/home/jovyan/reports/wudixiaop/ShaderlabVS/statistics.pb', '/home/jovyan/reports/cyanfish/naps2/statistics.pb', '/home/jovyan/reports/aspnet/AspNetKatana/statistics.pb', '/home/jovyan/reports/gree/unity-webview/statistics.pb', '/home/jovyan/reports/x360ce/x360ce/statistics.pb', '/home/jovyan/reports/ChangemakerStudios/Papercut/statistics.pb', '/home/jovyan/reports/castleproject/Core/statistics.pb', '/home/jovyan/reports/louthy/language-ext/statistics.pb', '/home/jovyan/reports/Tyrrrz/YoutubeExplode/statistics.pb', '/home/jovyan/reports/xamarin/Xamarin.Auth/statistics.pb', '/home/jovyan/reports/fluentmigrator/fluentmigrator/statistics.pb', '/home/jovyan/reports/codecadwallader/codemaid/statistics.pb', '/home/jovyan/reports/facebook/nuclide/statistics.pb', '/home/jovyan/reports/xonsh/xonsh/statistics.pb', '/home/jovyan/reports/taxigps/xbmc-addons-chinese/statistics.pb', '/home/jovyan/reports/socialcopsdev/camelot/statistics.pb', '/home/jovyan/reports/chiphuyen/stanford-tensorflow-tutorials/statistics.pb', '/home/jovyan/reports/XX-net/XX-Net/statistics.pb', '/home/jovyan/reports/rpicard/explore-flask/statistics.pb', '/home/jovyan/reports/Russell91/pythonpy/statistics.pb', '/home/jovyan/reports/openai/roboschool/statistics.pb', '/home/jovyan/reports/google/deepvariant/statistics.pb', '/home/jovyan/reports/beetbox/beets/statistics.pb', '/home/jovyan/reports/bitcoinbook/bitcoinbook/statistics.pb', '/home/jovyan/reports/pyinvoke/invoke/statistics.pb', '/home/jovyan/reports/miso-belica/sumy/statistics.pb', '/home/jovyan/reports/snipsco/snips-nlu/statistics.pb', '/home/jovyan/reports/Azure/azure-sdk-for-net/statistics.pb','/home/jovyan/reports/shidenggui/easytrader/statistics.pb', '/home/jovyan/reports/ildoonet/tf-pose-estimation/statistics.pb', '/home/jovyan/reports/what-studio/profiling/statistics.pb', '/home/jovyan/reports/huhamhire/huhamhire-hosts/statistics.pb','/home/jovyan/reports/cvxgrp/cvxpy/statistics.pb', '/home/jovyan/reports/kennethreitz/envoy/statistics.pb', '/home/jovyan/reports/michael-lazar/rtv/statistics.pb', '/home/jovyan/reports/jonathanslenders/ptpython/statistics.pb', '/home/jovyan/reports/bear/python-twitter/statistics.pb', '/home/jovyan/reports/SublimeText/LaTeXTools/statistics.pb', '/home/jovyan/reports/jorgebastida/gordon/statistics.pb', '/home/jovyan/reports/spotify/luigi/statistics.pb', '/home/jovyan/reports/Kozea/WeasyPrint/statistics.pb', '/home/jovyan/reports/automl/auto-sklearn/statistics.pb', '/home/jovyan/reports/LazoCoder/Pokemon-Terminal/statistics.pb', '/home/jovyan/reports/jflesch/paperwork/statistics.pb', '/home/jovyan/reports/airbnb/streamalert/statistics.pb', '/home/jovyan/reports/charlesq34/pointnet/statistics.pb', '/home/jovyan/reports/cython/cython/statistics.pb', '/home/jovyan/reports/openai/gym/statistics.pb', '/home/jovyan/reports/i-tu/Hasklig/statistics.pb', '/home/jovyan/reports/TomorrowTodayLabs/NewtonVR/statistics.pb', '/home/jovyan/reports/robotframework/robotframework/statistics.pb', '/home/jovyan/reports/donnemartin/awesome-aws/statistics.pb', '/home/jovyan/reports/google/enjarify/statistics.pb', '/home/jovyan/reports/pika/pika/statistics.pb', '/home/jovyan/reports/fmfn/BayesianOptimization/statistics.pb', '/home/jovyan/reports/localstack/localstack/statistics.pb', '/home/jovyan/reports/vinta/awesome-python/statistics.pb', '/home/jovyan/reports/kstenerud/iOS-Universal-Framework/statistics.pb', '/home/jovyan/reports/Rochester-NRT/AlphaGo/statistics.pb', '/home/jovyan/reports/geekan/scrapy-examples/statistics.pb', '/home/jovyan/reports/ansible/ansible-container/statistics.pb', '/home/jovyan/reports/deepfakes/faceswap/statistics.pb', '/home/jovyan/reports/yunjey/StarGAN/statistics.pb', '/home/jovyan/reports/deepmind/trfl/statistics.pb', '/home/jovyan/reports/Kinto/kinto/statistics.pb', '/home/jovyan/reports/kennethreitz/httpbin/statistics.pb', '/home/jovyan/reports/emirozer/fake2db/statistics.pb', '/home/jovyan/reports/apachecn/awesome-algorithm/statistics.pb', '/home/jovyan/reports/kayhayen/Nuitka/statistics.pb', '/home/jovyan/reports/rossant/awesome-math/statistics.pb', '/home/jovyan/reports/pwndbg/pwndbg/statistics.pb', '/home/jovyan/reports/hack4impact/flask-base/statistics.pb', '/home/jovyan/reports/sshuttle/sshuttle/statistics.pb', '/home/jovyan/reports/davidhalter/jedi/statistics.pb', '/home/jovyan/reports/python-openxml/python-docx/statistics.pb', '/home/jovyan/reports/fogleman/Minecraft/statistics.pb', '/home/jovyan/reports/deepmind/sonnet/statistics.pb', '/home/jovyan/reports/kachayev/fn.py/statistics.pb', '/home/jovyan/reports/stamparm/maltrail/statistics.pb', '/home/jovyan/reports/gnemoug/distribute_crawler/statistics.pb', '/home/jovyan/reports/rbgirshick/fast-rcnn/statistics.pb', '/home/jovyan/reports/sripathikrishnan/redis-rdb-tools/statistics.pb', '/home/jovyan/reports/zoofIO/flexx/statistics.pb', '/home/jovyan/reports/requests/requests/statistics.pb', '/home/jovyan/reports/pytorch/pytorch/statistics.pb', '/home/jovyan/reports/lyft/confidant/statistics.pb', '/home/jovyan/reports/openai/glow/statistics.pb', '/home/jovyan/reports/bup/bup/statistics.pb', '/home/jovyan/reports/encode/apistar/statistics.pb', '/home/jovyan/reports/tzutalin/labelImg/statistics.pb', '/home/jovyan/reports/andersbll/neural_artistic_style/statistics.pb', '/home/jovyan/reports/Fantomas42/django-blog-zinnia/statistics.pb', '/home/jovyan/reports/cloudtools/troposphere/statistics.pb', '/home/jovyan/reports/devttys0/binwalk/statistics.pb', '/home/jovyan/reports/lihaoyi/macropy/statistics.pb', '/home/jovyan/reports/anishathalye/git-remote-dropbox/statistics.pb', '/home/jovyan/reports/ccxt/ccxt/statistics.pb', '/home/jovyan/reports/floydhub/dl-docker/statistics.pb', '/home/jovyan/reports/dotnet/roslyn/statistics.pb', '/home/jovyan/reports/coleifer/huey/statistics.pb', '/home/jovyan/reports/OpenMined/PySyft/statistics.pb', '/home/jovyan/reports/yangshun/tech-interview-handbook/statistics.pb', '/home/jovyan/reports/madmaze/pytesseract/statistics.pb', '/home/jovyan/reports/PyCQA/pylint/statistics.pb', '/home/jovyan/reports/epinna/weevely3/statistics.pb', '/home/jovyan/reports/gelstudios/gitfiti/statistics.pb', '/home/jovyan/reports/CoreSecurity/impacket/statistics.pb', '/home/jovyan/reports/spmallick/learnopencv/statistics.pb','/home/jovyan/reports/gaussic/text-classification-cnn-rnn/statistics.pb', '/home/jovyan/reports/yidao620c/python3-cookbook/statistics.pb', '/home/jovyan/reports/Tencent/tencent-ml-images/statistics.pb', '/home/jovyan/reports/jonathanslenders/python-prompt-toolkit/statistics.pb', '/home/jovyan/reports/celery/kombu/statistics.pb', '/home/jovyan/reports/drduh/macOS-Security-and-Privacy-Guide/statistics.pb', '/home/jovyan/reports/rg3/youtube-dl/statistics.pb', '/home/jovyan/reports/ranger/ranger/statistics.pb', '/home/jovyan/reports/hardikvasa/google-images-download/statistics.pb', '/home/jovyan/reports/NVIDIA/DIGITS/statistics.pb', '/home/jovyan/reports/VitaliyRodnenko/geeknote/statistics.pb', '/home/jovyan/reports/boto/boto/statistics.pb', '/home/jovyan/reports/Tribler/tribler/statistics.pb', '/home/jovyan/reports/fxsjy/jieba/statistics.pb', '/home/jovyan/reports/fchollet/keras/statistics.pb', '/home/jovyan/reports/rhiever/Data-Analysis-and-Machine-Learning-Projects/statistics.pb', '/home/jovyan/reports/soimort/you-get/statistics.pb', '/home/jovyan/reports/IDSIA/sacred/statistics.pb', '/home/jovyan/reports/micheloosterhof/cowrie/statistics.pb', '/home/jovyan/reports/ansible/awx/statistics.pb', '/home/jovyan/reports/powerline/powerline/statistics.pb', '/home/jovyan/reports/dae/anki/statistics.pb', '/home/jovyan/reports/jxtech/wechatpy/statistics.pb', '/home/jovyan/reports/laramies/theHarvester/statistics.pb', '/home/jovyan/reports/quark0/darts/statistics.pb', '/home/jovyan/reports/jokkedk/webgrind/statistics.pb', '/home/jovyan/reports/aboul3la/Sublist3r/statistics.pb', '/home/jovyan/reports/Uberi/speech_recognition/statistics.pb', '/home/jovyan/reports/editorconfig/editorconfig-vim/statistics.pb', '/home/jovyan/reports/ab77/netflix-proxy/statistics.pb', '/home/jovyan/reports/clowwindy/shadowsocks/statistics.pb', '/home/jovyan/reports/django-oscar/django-oscar/statistics.pb', '/home/jovyan/reports/JonathanSalwan/ROPgadget/statistics.pb', '/home/jovyan/reports/facebook/PathPicker/statistics.pb', '/home/jovyan/reports/python/peps/statistics.pb', '/home/jovyan/reports/deis/deis/statistics.pb', '/home/jovyan/reports/graphql-python/graphene/statistics.pb', '/home/jovyan/reports/fraser-hemp/gradify/statistics.pb', '/home/jovyan/reports/alex-sherman/deco/statistics.pb', '/home/jovyan/reports/aws/chalice/statistics.pb', '/home/jovyan/reports/fabric/fabric/statistics.pb', '/home/jovyan/reports/thampiman/reverse-geocoder/statistics.pb', '/home/jovyan/reports/posativ/isso/statistics.pb', '/home/jovyan/reports/yosinski/deep-visualization-toolbox/statistics.pb', '/home/jovyan/reports/Chyroc/WechatSogou/statistics.pb', '/home/jovyan/reports/hyperopt/hyperopt/statistics.pb', '/home/jovyan/reports/jupyterhub/jupyterhub/statistics.pb', '/home/jovyan/reports/pytorch/examples/statistics.pb', '/home/jovyan/reports/arc90/git-sweep/statistics.pb', '/home/jovyan/reports/facebookresearch/Detectron/statistics.pb', '/home/jovyan/reports/wepe/MachineLearning/statistics.pb', '/home/jovyan/reports/PyMySQL/PyMySQL/statistics.pb', '/home/jovyan/reports/3b1b/manim/statistics.pb', '/home/jovyan/reports/tensorflow/cleverhans/statistics.pb', '/home/jovyan/reports/mozillazg/python-pinyin/statistics.pb', '/home/jovyan/reports/smicallef/spiderfoot/statistics.pb', '/home/jovyan/reports/django-haystack/django-haystack/statistics.pb', '/home/jovyan/reports/KeyboardFire/mkcast/statistics.pb', '/home/jovyan/reports/s0md3v/Photon/statistics.pb', '/home/jovyan/reports/mhagger/git-imerge/statistics.pb', '/home/jovyan/reports/openstack/swift/statistics.pb', '/home/jovyan/reports/HazyResearch/snorkel/statistics.pb', '/home/jovyan/reports/mooz/percol/statistics.pb', '/home/jovyan/reports/Lasagne/Lasagne/statistics.pb', '/home/jovyan/reports/uber/pyro/statistics.pb', '/home/jovyan/reports/keleshev/schema/statistics.pb', '/home/jovyan/reports/openai/baselines/statistics.pb', '/home/jovyan/reports/pydata/pandas/statistics.pb', '/home/jovyan/reports/nvie/rq/statistics.pb', '/home/jovyan/reports/edx/edx-platform/statistics.pb', '/home/jovyan/reports/bitcoin/bips/statistics.pb', '/home/jovyan/reports/evilsocket/opensnitch/statistics.pb', '/home/jovyan/reports/dbcli/mycli/statistics.pb', '/home/jovyan/reports/facebook/codemod/statistics.pb', '/home/jovyan/reports/angr/angr/statistics.pb', '/home/jovyan/reports/balloob/pychromecast/statistics.pb', '/home/jovyan/reports/pexpect/pexpect/statistics.pb', '/home/jovyan/reports/scikit-image/scikit-image/statistics.pb', '/home/jovyan/reports/warner/magic-wormhole/statistics.pb', '/home/jovyan/reports/evhub/coconut/statistics.pb', '/home/jovyan/reports/euske/pdfminer/statistics.pb', '/home/jovyan/reports/junyanz/pytorch-CycleGAN-and-pix2pix/statistics.pb', '/home/jovyan/reports/darknessomi/musicbox/statistics.pb', '/home/jovyan/reports/salesforce/decaNLP/statistics.pb', '/home/jovyan/reports/isnowfy/snownlp/statistics.pb', '/home/jovyan/reports/dzhibas/SublimePrettyJson/statistics.pb', '/home/jovyan/reports/locustio/locust/statistics.pb', '/home/jovyan/reports/mahmoud/awesome-python-applications/statistics.pb', '/home/jovyan/reports/nodejs/node-gyp/statistics.pb', '/home/jovyan/reports/theskumar/python-dotenv/statistics.pb', '/home/jovyan/reports/CiscoCloud/microservices-infrastructure/statistics.pb', '/home/jovyan/reports/Manisso/fsociety/statistics.pb', '/home/jovyan/reports/xxg1413/python/statistics.pb', '/home/jovyan/reports/nltk/nltk/statistics.pb', '/home/jovyan/reports/donnemartin/gitsome/statistics.pb', '/home/jovyan/reports/lorien/grab/statistics.pb', '/home/jovyan/reports/matthiasplappert/keras-rl/statistics.pb', '/home/jovyan/reports/platformio/platformio-core/statistics.pb', '/home/jovyan/reports/SublimeCodeIntel/SublimeCodeIntel/statistics.pb', '/home/jovyan/reports/imWildCat/scylla/statistics.pb', '/home/jovyan/reports/ckreibich/scholar.py/statistics.pb', '/home/jovyan/reports/jsvine/waybackpack/statistics.pb', '/home/jovyan/reports/jmcarp/robobrowser/statistics.pb', '/home/jovyan/reports/idan/oauthlib/statistics.pb', '/home/jovyan/reports/getnikola/nikola/statistics.pb', '/home/jovyan/reports/sphinx-doc/sphinx/statistics.pb', '/home/jovyan/reports/deepmind/learning-to-learn/statistics.pb', '/home/jovyan/reports/larsenwork/monoid/statistics.pb', '/home/jovyan/reports/Hironsan/BossSensor/statistics.pb', '/home/jovyan/reports/Rip-Rip/clang_complete/statistics.pb', '/home/jovyan/reports/p-e-w/maybe/statistics.pb', '/home/jovyan/reports/facebookresearch/pytext/statistics.pb', '/home/jovyan/reports/daviddrysdale/python-phonenumbers/statistics.pb', '/home/jovyan/reports/openai/pixel-cnn/statistics.pb', '/home/jovyan/reports/openai/universe/statistics.pb', '/home/jovyan/reports/cemoody/lda2vec/statistics.pb', '/home/jovyan/reports/calebmadrigal/trackerjacker/statistics.pb', '/home/jovyan/reports/pallets/flask/statistics.pb', '/home/jovyan/reports/klen/python-mode/statistics.pb', '/home/jovyan/reports/hexahedria/biaxial-rnn-music-composition/statistics.pb', '/home/jovyan/reports/swisskyrepo/PayloadsAllTheThings/statistics.pb', '/home/jovyan/reports/wiseodd/generative-models/statistics.pb', '/home/jovyan/reports/Urinx/WeixinBot/statistics.pb', '/home/jovyan/reports/feross/SpoofMAC/statistics.pb', '/home/jovyan/reports/pudo/dataset/statistics.pb', '/home/jovyan/reports/SpiderLabs/Responder/statistics.pb', '/home/jovyan/reports/Yelp/elastalert/statistics.pb', '/home/jovyan/reports/lauris/awesome-scala/statistics.pb', '/home/jovyan/reports/kennethreitz/grequests/statistics.pb', '/home/jovyan/reports/meetshah1995/pytorch-semseg/statistics.pb', '/home/jovyan/reports/docker/docker-registry/statistics.pb', '/home/jovyan/reports/celery/celery/statistics.pb', '/home/jovyan/reports/pavelgonchar/colornet/statistics.pb', '/home/jovyan/reports/maebert/jrnl/statistics.pb', '/home/jovyan/reports/brennerm/PyTricks/statistics.pb', '/home/jovyan/reports/sdg-mit/gitless/statistics.pb', '/home/jovyan/reports/agronholm/apscheduler/statistics.pb', '/home/jovyan/reports/binux/pyspider/statistics.pb', '/home/jovyan/reports/honza/vim-snippets/statistics.pb', '/home/jovyan/reports/pfnet/chainer/statistics.pb', '/home/jovyan/reports/tangqiaoboy/iOSBlogCN/statistics.pb', '/home/jovyan/reports/python-attrs/attrs/statistics.pb', '/home/jovyan/reports/pannous/tensorflow-speech-recognition/statistics.pb', '/home/jovyan/reports/tensorflow/skflow/statistics.pb', '/home/jovyan/reports/s0md3v/XSStrike/statistics.pb', '/home/jovyan/reports/pallets/werkzeug/statistics.pb', '/home/jovyan/reports/GetBlimp/django-rest-framework-jwt/statistics.pb', '/home/jovyan/reports/django-tastypie/django-tastypie/statistics.pb', '/home/jovyan/reports/zeusees/HyperLPR/statistics.pb', '/home/jovyan/reports/ecthros/uncaptcha/statistics.pb', '/home/jovyan/reports/TomAnthony/itermocil/statistics.pb', '/home/jovyan/reports/drathier/stack-overflow-import/statistics.pb', '/home/jovyan/reports/diafygi/acme-tiny/statistics.pb', '/home/jovyan/reports/jsvine/markovify/statistics.pb', '/home/jovyan/reports/crsmithdev/arrow/statistics.pb', '/home/jovyan/reports/paarthneekhara/text-to-image/statistics.pb', '/home/jovyan/reports/chrippa/livestreamer/statistics.pb', '/home/jovyan/reports/python-pillow/Pillow/statistics.pb', '/home/jovyan/reports/python-visualization/folium/statistics.pb', '/home/jovyan/reports/lyst/lightfm/statistics.pb', '/home/jovyan/reports/bijection/sistine/statistics.pb', '/home/jovyan/reports/DanMcInerney/wifijammer/statistics.pb', '/home/jovyan/reports/svenstaro/genact/statistics.pb', '/home/jovyan/reports/oarriaga/face_classification/statistics.pb', '/home/jovyan/reports/Yelp/dumb-init/statistics.pb', '/home/jovyan/reports/dvf/blockchain/statistics.pb', '/home/jovyan/reports/shadowsocks/shadowsocks/statistics.pb', '/home/jovyan/reports/fail2ban/fail2ban/statistics.pb', '/home/jovyan/reports/LiuLang/bcloud/statistics.pb', '/home/jovyan/reports/tkipf/gcn/statistics.pb', '/home/jovyan/reports/flask-admin/flask-admin/statistics.pb', '/home/jovyan/reports/plotly/plotly.py/statistics.pb', '/home/jovyan/reports/lra/mackup/statistics.pb', '/home/jovyan/reports/Flolagale/mailin/statistics.pb', '/home/jovyan/reports/tensorlayer/tensorlayer/statistics.pb', '/home/jovyan/reports/zeromq/pyzmq/statistics.pb', '/home/jovyan/reports/jdwittenauer/ipython-notebooks/statistics.pb', '/home/jovyan/reports/Jahaja/psdash/statistics.pb', '/home/jovyan/reports/hylang/hy/statistics.pb', '/home/jovyan/reports/shadowsocksr-backup/shadowsocksr/statistics.pb', '/home/jovyan/reports/avinassh/rockstar/statistics.pb', '/home/jovyan/reports/kubernetes-incubator/kubespray/statistics.pb', '/home/jovyan/reports/mli/gluon-tutorials-zh/statistics.pb', '/home/jovyan/reports/aziz/PlainTasks/statistics.pb', '/home/jovyan/reports/luispedro/BuildingMachineLearningSystemsWithPython/statistics.pb', '/home/jovyan/reports/ironmaniiith/Github-profile-name-writer/statistics.pb', '/home/jovyan/reports/facebookresearch/Horizon/statistics.pb', '/home/jovyan/reports/mmin18/LayoutCast/statistics.pb','/home/jovyan/reports/egrcc/zhihu-python/statistics.pb', '/home/jovyan/reports/donnemartin/saws/statistics.pb', '/home/jovyan/reports/cobrateam/splinter/statistics.pb', '/home/jovyan/reports/statsmodels/statsmodels/statistics.pb', '/home/jovyan/reports/ascribe/image-match/statistics.pb', '/home/jovyan/reports/sqlmapproject/sqlmap/statistics.pb', '/home/jovyan/reports/dcramer/sentry/statistics.pb', '/home/jovyan/reports/chrisallenlane/cheat/statistics.pb', '/home/jovyan/reports/mkdocs/mkdocs/statistics.pb', '/home/jovyan/reports/tornadoweb/tornado/statistics.pb', '/home/jovyan/reports/joelpx/plasma/statistics.pb', '/home/jovyan/reports/facebook/augmented-traffic-control/statistics.pb', '/home/jovyan/reports/elceef/dnstwist/statistics.pb', '/home/jovyan/reports/eudicots/Cactus/statistics.pb', '/home/jovyan/reports/sshwsfc/xadmin/statistics.pb', '/home/jovyan/reports/DamnWidget/anaconda/statistics.pb', '/home/jovyan/reports/getsentry/raven-python/statistics.pb', '/home/jovyan/reports/scipy-lectures/scipy-lecture-notes/statistics.pb', '/home/jovyan/reports/keon/algorithms/statistics.pb', '/home/jovyan/reports/django-crispy-forms/django-crispy-forms/statistics.pb', '/home/jovyan/reports/GoogleCloudPlatform/distroless/statistics.pb', '/home/jovyan/reports/trentm/python-markdown2/statistics.pb', '/home/jovyan/reports/alicevision/meshroom/statistics.pb', '/home/jovyan/reports/amueller/word_cloud/statistics.pb', '/home/jovyan/reports/pypa/virtualenv/statistics.pb', '/home/jovyan/reports/aio-libs/aiohttp/statistics.pb', '/home/jovyan/reports/mono/monodevelop/statistics.pb', '/home/jovyan/reports/s3tools/s3cmd/statistics.pb', '/home/jovyan/reports/zalando/patroni/statistics.pb', '/home/jovyan/reports/falconry/falcon/statistics.pb', '/home/jovyan/reports/dylanaraps/pywal/statistics.pb', '/home/jovyan/reports/hyde/hyde/statistics.pb', '/home/jovyan/reports/apachecn/awesome-leetcode/statistics.pb', '/home/jovyan/reports/qtile/qtile/statistics.pb', '/home/jovyan/reports/biopython/biopython/statistics.pb', '/home/jovyan/reports/rafalp/Misago/statistics.pb', '/home/jovyan/reports/zulip/zulip/statistics.pb', '/home/jovyan/reports/saltstack/salt/statistics.pb', '/home/jovyan/reports/npm/npm/statistics.pb', '/home/jovyan/reports/mozilla/sops/statistics.pb', '/home/jovyan/reports/Azure/azure-powershell/statistics.pb']' returned non-zero exit status 2.


</details>

[bug] devs visualization fails

Hi,
when I tried to launch this command
python3 labours.py -m devs -i res.pb -o image.png
I got

Reading the input... done
Picking top 100 developers by commit count
Calculating the distance matrix
Ordering the series
Plotting
Traceback (most recent call last):
  File "/home/ec2-user/scripts/hercules/labours.py", line 1618, in <module>
    sys.exit(main())
  File "/home/ec2-user/scripts/hercules/labours.py", line 1593, in main
    modes[args.mode]()
  File "/home/ec2-user/scripts/hercules/labours.py", line 1560, in devs
    show_devs(args, reader.get_name(), *reader.get_header(), data)
  File "/home/ec2-user/scripts/hercules/labours.py", line 1353, in show_devs
    axes[-1].xaxis.set_major_locator(matplotlib.dates.YearLocator(interval=interval))
TypeError: __init__() got an unexpected keyword argument 'interval'

it happens because YearLocator doesn't have this argument (link).
As I understand the logic - it should be
matplotlib.dates.YearLocator(base=max(1, interval // 12))

[bug] internal integrity error

Hi,
couple of repositories failed with this log.

Repository https://github.com/NServiceBus/NServiceBus:

2019/01/28 14:51:20 Burndown failed on commit #2866 (2867) 0968c2ee54453bedc5cff4026d5706412d65c2e9
2019/01/28 14:51:20 failed to run the pipeline: src/NServiceBus.PowerShell/AddLoggingConfig.cs: internal integrity error src33 != 32 d3a3cead2afe3548456368f4cefbdc28d1eb4178 -> d3a3cead2afe3548456368f4cefbdc28d1eb4178
 13 / 561 [=>------------------------------------------------------------------]Repository https://github.com/NServiceBus/NServiceBus failed with exception Command '['/home/jovyan/hercules.linux_amd64', '--pb', '--burndown', '--burndown-people', '--devs', '--first-parent', '/tmp/hercules__ta50wus']' returned non-zero exit status 1. at stat step

Repository https://github.com/Flafla2/Vive-Teleporter:

 1798 / 3493 [==============================>----------------------------] 6m56s2019/01/28 14:43:19 ====TREE====
0 1
186 -1
2019/01/28 14:43:19 Burndown failed on commit #8 (9) 23aca646f161455593f252e0ad94fde9c8fb5e84
2019/01/28 14:43:19 failed to run the pipeline: Assets/ParabolicPointer.cs: internal integrity error src 185 != 186 02b326d0471eb09b71685238b72a90cb28dba5d7 -> 1fc064cdd914b649f520db41237659dcb87ef5fb
Repository https://github.com/Flafla2/Vive-Teleporter failed with exception Command '['/home/jovyan/hercules.linux_amd64', '--pb', '--burndown', '--burndown-people', '--devs', '--first-parent', '/tmp/hercules_rk4hh22g']' returned non-zero exit status 1. at stat step

Steps to reproduce - cache repository & launch hercules.linux_amd64 --pb --burndown --burndown-people --devs --first-parent cache_dir.
hercules has version 7.1.0.

Panic: file x already exists

I'm trying to run hercules against my repo:

$ ./hercules --burndown .
2018/09/19 15:47:54 Burndown failed on commit #2201 (3024) 8fd831a7cb4f2d6012bb984be66dc7fd9e3a8f99
panic: file app/core/modules/****.js already exists

goroutine 1 [running]:
main.glob..func3(0xd36140, 0xc00025cce0, 0x1, 0x2)
        c:/gopath/src/gopkg.in/src-d/hercules.v4/cmd/hercules/root.go:225 +0xb26
github.com/spf13/cobra.(*Command).execute(0xd36140, 0xc00008e0d0, 0x2, 0x3, 0xd36140, 0xc00008e0d0)
        c:/gopath/src/github.com/spf13/cobra/command.go:766 +0x2d3
github.com/spf13/cobra.(*Command).ExecuteC(0xd36140, 0x104ab40, 0x26, 0xc000a52089)
        c:/gopath/src/github.com/spf13/cobra/command.go:852 +0x304
github.com/spf13/cobra.(*Command).Execute(0xd36140, 0x406f37, 0xc00007c058)
        c:/gopath/src/github.com/spf13/cobra/command.go:800 +0x32
main.main()
        c:/gopath/src/gopkg.in/src-d/hercules.v4/cmd/hercules/root.go:429 +0x38

Using (v4 on Windows): https://github.com/src-d/hercules/releases/download/v4/hercules.win64.zip

Crash on analyzing Microsoft/vscode

I have the repo locally:

(git-theseus) requiel@requiels-PC ~/gitRepo/vscode $ hercules --burndown --burndown-people .
638 / 17076 [==>--------------------------------------------------------] 19m5sfile to schemastore d0c99822ea4ed56bd02ad10877f0b4c9a0539508
BlobCache failed on commit #639 52953617cbba72333370c22a1cb0d80643ee537c
panic: file not found

goroutine 1 [running]:
main.glob..func3(0x1c3c8c0, 0xc420a769f0, 0x1, 0x3)
/home/travis/gopath/src/gopkg.in/src-d/hercules.v3/cmd/hercules/root.go:202 +0xacc
github.com/spf13/cobra.(*Command).execute(0x1c3c8c0, 0xc4200100d0, 0x3, 0x3, 0x1c3c8c0, 0xc4200100d0)
/home/travis/gopath/src/github.com/spf13/cobra/command.go:750 +0x2c1
github.com/spf13/cobra.(*Command).ExecuteC(0x1c3c8c0, 0x26, 0xc42046ab9b, 0x0)
/home/travis/gopath/src/github.com/spf13/cobra/command.go:831 +0x30e
github.com/spf13/cobra.(*Command).Execute(0x1c3c8c0, 0x0, 0xc4201a7f70)
/home/travis/gopath/src/github.com/spf13/cobra/command.go:784 +0x2b
main.main()
/home/travis/gopath/src/gopkg.in/src-d/hercules.v3/cmd/hercules/root.go:386 +0x31

Panic running hercules combine

Panic running combine.

panic: runtime error: index out of range

goroutine 1 [running]:
gopkg.in/src-d/hercules.v7/leaves.(*CouplesAnalysis).MergeResults.func2(0xc000bca000, 0x261, 0x261, 0xc000bb2000, 0x261, 0x400, 0xc000a9e300, 0x1, 0x1)
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/leaves/couples.go:340 +0x2c1
gopkg.in/src-d/hercules.v7/leaves.(*CouplesAnalysis).MergeResults(0xc00015c070, 0x12088e0, 0xc00004a300, 0x12088e0, 0xc00004a580, 0xc000b60030, 0xc000bd4420, 0x11b4500, 0xc000aaa940)
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/leaves/couples.go:345 +0x84b
main.mergeResults(0xc000b49950, 0xc000b60030, 0xc000a8ce70, 0xc000bd4420)
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/cmd/hercules/combine.go:157 +0x1b4
main.glob..func1(0x20c48e0, 0xc000032600, 0x259, 0x259)
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/cmd/hercules/combine.go:42 +0x794
gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra.(*Command).execute(0x20c48e0, 0xc0000eac00, 0x259, 0x260, 0x20c48e0, 0xc0000eac00)
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra/command.go:766 +0x2cc
gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0x20c4da0, 0xc000a9e660, 0xc000a9e630, 0xc000476700)
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra/command.go:852 +0x2fd
gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra.(*Command).Execute(0x20c4da0, 0x843150, 0xc0000be058)
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra/command.go:800 +0x2b
main.main()
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/cmd/hercules/root.go:509 +0x31
ERROR:root:Aggregating of statistics failed with exception Command

docker run failed issue

docker run --rm srcd/hercules hercules --burndown --pb https://github.com/git/git | docker run --rm -i -v $(pwd):/io srcd/hercules labours.py -f pb -m project -o /io/git_git.png

get below msg

You need to generate internal/pb/pb_pb2.py - run "make"

Traceback (most recent call last):
File "/usr/local/bin/labours.py", line 1258, in
sys.exit(main())
File "/usr/local/bin/labours.py", line 1121, in main
reader = read_input(args)
File "/usr/local/bin/labours.py", line 344, in read_input
reader.read(args.input)
File "/usr/local/bin/labours.py", line 234, in read
raise e from None
File "/usr/local/bin/labours.py", line 230, in read
from internal.pb.pb_pb2 import AnalysisResults
ModuleNotFoundError: No module named 'internal'

Panic running analysis

panic: time may not be >= MaxUint32

goroutine 1 [running]:
gopkg.in/src-d/hercules.v7/internal/burndown.(*File).Update(0xc00049cb40, 0xffffffff, 0x1e, 0x0, 0x1)
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/internal/burndown/file.go:155 +0xfec
gopkg.in/src-d/hercules.v7/leaves.(*BurndownAnalysis).handleModification.func1(0xc00fc125ff, 0xc00fc12580, 0x1)
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/leaves/burndown.go:1240 +0x14c
gopkg.in/src-d/hercules.v7/leaves.(*BurndownAnalysis).handleModification(0xc001304690, 0xc00fb22300, 0x3ffff, 0xc00fc20750, 0xc00fc20a50, 0x85085e, 0xc00fa97b60)
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/leaves/burndown.go:1265 +0x91c
gopkg.in/src-d/hercules.v7/leaves.(*BurndownAnalysis).Consume(0xc001304690, 0xc00fa97b60, 0x2120d60, 0x9, 0xc006bed2c8)
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/leaves/burndown.go:361 +0x380
gopkg.in/src-d/hercules.v7/internal/core.(*Pipeline).Run(0xc0085d3c20, 0xc00139e000, 0x145, 0x200, 0x0, 0x0, 0x0)
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/internal/core/pipeline.go:763 +0xfa9
main.glob..func3(0x20c4da0, 0xc00013f300, 0x1, 0x8)
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/cmd/hercules/root.go:269 +0x840
gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra.(*Command).execute(0x20c4da0, 0xc0000dc010, 0x8, 0x8, 0x20c4da0, 0xc0000dc010)
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra/command.go:766 +0x2cc
gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0x20c4da0, 0xc00027b6a0, 0xc00027b670, 0xc0000feb00)
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra/command.go:852 +0x2fd
gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra.(*Command).Execute(0x20c4da0, 0x843150, 0xc0000b4058)
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/vendor/github.com/spf13/cobra/command.go:800 +0x2b
main.main()
	/home/travis/gopath/src/gopkg.in/src-d/hercules.v7/cmd/hercules/root.go:509 +0x31

slice bounds out of range error

What i get after running
hercules --devs <repo> | python labours.py -m devs

2417 / 29722 1h58m45spanic: runtime error: slice bounds out of range

goroutine 4816 [running]:
gopkg.in/src-d/hercules.v6/internal/plumbing.(*RenameAnalysis).blobsAreClose(0xc000a49580, 0xc04aa1e370, 0xc00c8b60a0, 0xc00b80ee48, 0x9, 0xc0933c3f90)
c:/gopath/src/gopkg.in/src-d/hercules.v6/internal/plumbing/renames.go:411 +0xb30
gopkg.in/src-d/hercules.v6/internal/plumbing.(*RenameAnalysis).Consume.func1(0x0, 0x0)
c:/gopath/src/gopkg.in/src-d/hercules.v6/internal/plumbing/renames.go:232 +0x41b
gopkg.in/src-d/hercules.v6/internal/plumbing.(*RenameAnalysis).Consume.func3(0xc00b313950, 0xc00650cd30)
c:/gopath/src/gopkg.in/src-d/hercules.v6/internal/plumbing/renames.go:314 +0x2e
created by gopkg.in/src-d/hercules.v6/internal/plumbing.(*RenameAnalysis).Consume
c:/gopath/src/gopkg.in/src-d/hercules.v6/internal/plumbing/renames.go:314 +0x1a7b

No data has been read - has Hercules crashed?

Non-deterministic `RuntimeWarning`

I have seen the below error multiple times on different repos. Running the exact command again does not reproduce the issues reliably. I'm only seen this running against git repos on the local disk; it has never occured while running against an https:// or git:// URL (but I have run far fewer of those). I'm using the Docker containers to run both hercules and labours.py. Sorry for the slight fuzzy ticket but it only happens every ~10 runs so its difficult to dig into. I'm running on Mac using Docker for Mac.

Here is the command I'm running: docker run -v $(pwd):/code --rm srcd/hercules hercules --burndown --burndown-people --pb /code/git-repo | docker run --rm -i -v /tmp:/io srcd/hercules labours.py -f pb -m all -o /io/image.png

And the error that sometimes happens but not always.

/usr/local/bin/labours.py:366: RuntimeWarning: invalid value encountered in double_scalars
  / (lifetimes.sum() * matrix.shape[1]))

Hercules fails on facebook/react

$ hercules --quiet --burndown --burndown-people https://github.com/facebook/react | python3 labours.py -m ownership
Warning: clint is not installed, no fancy progressbars in the terminal for you.
Reading the input... src/renderers/shared/fiber/__tests__/ReactIncrementalSideEffects-test.js: internal diff error
Update(1385, 742, 2 (0), 1 (0))
====TREE AFTER====
0 1803368
15 3736889
16 1803368
17 1295532
19 787735
20 1803612
21 1803368
22 3736889
24 1803368
26 4556073
30 1803368
31 8177001
33 1803368
35 1803404
36 8177001
37 1803368
39 1295532
40 1803368
55 8177001
56 1803368
59 8177001
60 1803368
62 1803477
71 8177001
76 1803477
83 8177001
84 1803477
87 2999524
88 1803477
93 2999524
94 1803477
98 1803477
107 8177001
110 1803477
116 8177001
117 1803477
120 8177001
121 1803477
123 1803477
131 8177001
134 1803477
140 2999524
141 1803477
146 8177001
147 1803477
149 1803485
168 8177001
173 1803485
180 8177001
181 1803485
186 8177001
187 1803485
192 8177001
193 1803485
196 8177001
197 1803485
218 8177001
221 1803485
228 8177001
229 1803485
234 8177001
235 1803485
240 8177001
241 1803485
243 1295532
244 1803368
245 1803404
246 1803368
262 2999524
263 1803404
264 1803368
267 3736755
268 2999524
269 1803404
273 1295532
274 1803404
291 8177001
292 1803368
293 1803404
294 3736755
295 1803404
296 8177001
297 1803404
300 8177001
301 1803404
303 1295532
304 1803404
318 8177001
320 1803404
323 8177001
324 1803404
332 2999524
333 1803404
339 3736755
340 1803404
342 2999524
343 1803404
346 7898444
347 1803404
350 1803443
351 1803404
356 2999524
357 1803404
361 1295532
362 1803404
397 2999524
398 1803404
404 3736755
405 1803404
407 2999524
408 1803404
411 7898444
412 1803404
421 2999524
422 1803404
426 3736841
428 787803
429 3736841
458 1295532
459 1803404
469 8177001
470 1803368
472 1803443
475 1803477
476 1803443
493 3736755
494 2999524
495 1803443
497 8177001
498 1803443
501 3736755
502 2999524
503 8177001
504 1803443
505 3736755
506 2999524
507 1803443
512 8177001
514 1803443
516 2999524
517 1803443
518 3736755
519 2999524
520 1803443
525 8177001
527 1803443
529 1803477
531 2999524
532 1803443
533 1803477
534 1803443
537 8177001
539 1803443
542 2999524
543 1803443
549 1803477
584 3736841
585 2999524
586 1803477
588 8177001
589 1803477
597 2999524
598 8177001
599 1803477
601 3736877
602 1803477
605 2999524
606 1803477
615 8177001
617 1803477
627 2999524
628 1803477
637 8177001
639 1803477
651 2999524
652 1803477
661 8177001
663 1803477
672 2999524
673 1803477
682 8177001
684 1803477
687 1803481
688 1803477
689 1803443
690 1803479
698 8177001
699 1803479
702 8177001
703 1803479
724 2999524
725 8177001
726 1803479
733 3736841
734 2999524
735 1803479
756 3736841
757 2999524
758 1803479
776 2999524
777 1803479
788 3736877
789 1803479
790 1803368
794 1803443
809 2999524
810 1803443
814 2999524
815 1803443
823 3736805
852 1803443
853 1803477
999 1803477
1000 4556073
1001 1803477
1060 4556073
1062 7095615
1063 4556073
1068 1803477
1073 3736798
1097 1803368
1098 -1
====END====
Burndown failed on commit #4568 b1b4a2fb252f26fe10d29ba60d85ff89a85ff3ec
panic: DiffDelete may not appear after DiffInsert/DiffDelete

goroutine 1 [running]:
main.glob..func3(0x5280cc0, 0xc4201cb900, 0x1, 0x4)
	/Users/smacker/go/src/gopkg.in/src-d/hercules.v3/cmd/hercules/root.go:210 +0xc25
github.com/spf13/cobra.(*Command).execute(0x5280cc0, 0xc420010150, 0x4, 0x4, 0x5280cc0, 0xc420010150)
	/Users/smacker/go/src/github.com/spf13/cobra/command.go:750 +0x2c1
github.com/spf13/cobra.(*Command).ExecuteC(0x5280cc0, 0x26, 0xc420462b71, 0x0)
	/Users/smacker/go/src/github.com/spf13/cobra/command.go:831 +0x30e
github.com/spf13/cobra.(*Command).Execute(0x5280cc0, 0x0, 0xc42019ff70)
	/Users/smacker/go/src/github.com/spf13/cobra/command.go:784 +0x2b
main.main()
	/Users/smacker/go/src/gopkg.in/src-d/hercules.v3/cmd/hercules/root.go:398 +0x31
done

Bugfix pattern mining

  • Add Hercules analysis to classify commits as bugfix and other appropriate classes - #188
  • Take the UAST difference algorithm implementation from https://github.com/quinor/sdk/tree/master/uast/diff
  • Study how it performs on the real files
  • Add Hercules analysis to extract the structured diffs
  • Add Hercules analysis to mine bugfix patterns

TODO for @Jan21: add here the list of relevant papers

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.