• Stars
    star
    155
  • Rank 233,816 (Top 5 %)
  • Language
    Java
  • License
    MIT License
  • Created almost 9 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A tool that estimates the Truck Factor of GitHub projects

Truck-Factor

This is a tool for estimating the Truck Factor of GitHub projects, using information from commit history. Truck Factor (also known as Bus Factor or Lottery Number) is the minimal number of developers that have to be hit by a truck (or leave) before a project is incapacitated.

Environment

The scripts for extract commit information from git repositories are implemented using Shell and AWK. So, the execution environment must support those script languages. Optionally, the Ruby interpreter is required if you decide to use the Linguist library to automatically discard files like documentation and third-party libraries. See the specific Linguist requirements in linguist page.

Usage

Get the last version of the truckfactor-tool

To run the tool to perform these steps:

  1. Clone the repository to be analysed.

    • example: git clone https://github.com/mtov/Truck-Factor.git
  2. Build the necessary Java code.

    • commands: cd Truck-Factor/gittruckfactor; mvn package
  3. Execute the scripts to extract information from the git repository to be analyzed:

    1. Extract commit and file information.

      • command: ./scripts/commit_log_script.sh <git_repository_path>
      • example: ./scripts/commit_log_script.sh git/Truck-Factor
    2. Extract files to be discard using Linguist library (Optional)

      • command: ./scripts/linguist_script.sh <git_repository_path>
      • example: ./scripts/linguist_script.sh git/Truck-Factor
  4. Execute the gittruckfactor tool.

    • command: java –jar gittruckfactor-1.0.jar <git_repository_path> <git_repository_fullname>
    • example: java –jar gittruckfactor-1.0.jar git/Truck-Factor aserg-ufmg/Truck-Factor

Optional Settings

Repository specifc information can be provided using the files in the folder repo_info, which can improve the TF calculation results. The additional information supported are:

  • Filtered files (filtered-files.txt): set files that must be discard before start the TF calculation.
    • Info pattern: <git_repository_fullname>;<file_path>;<filter_info>
  • Aliases (alias.txt): set developers aliases.
    • Info pattern: <git_repository_fullname>;<developer_alias1>;<developer_alias2>
  • Modules (modules.txt): map files to modules.
    • Info pattern: <git_repository_fullname>;<file_path>;<module_name>
      • Module calculation not implemented yet.

Run-time settings

Algorithm's variables can be set by modifying the config.properties file.

Example

Here are the TF values as estimated by this tool for some popular GitHub projects (using data from November, 2016):

  • FreeCodeCamp: 1
  • Bootstrap: 3
  • D3: 1
  • React: 4
  • AngularJS: 6
  • Font-Awesome: 1
  • jquery: 4
  • electron: 1
  • tensorflow: 2
  • docker: 13
  • meteor: 5
  • swift: 5
  • vue: 1
  • rails: 11
  • atom: 4

More Info

Guilherme Avelino, Leonardo Passos, Andre Hora, Marco Tulio Valente. A Novel Approach for Estimating Truck Factors. In 24th International Conference on Program Comprehension (ICPC), pages 1-10, 2016.

More Repositories

1

JSCity

Visualizing JavaScript source code as navigable 3D cities
JavaScript
1,393
star
2

RefDiff

A tool to mine refactorings in the commit history of git repositories.
JavaScript
142
star
3

micro-livraria

Exemplo prático de uma pequena livraria virtual implementada usando microsserviços. Inclui também duas tarefas práticas para os alunos.
JavaScript
109
star
4

JSClassFinder

Detecting class-like structures in JavaScript
Smalltalk
65
star
5

pub-sub-store

Exemplo prático de uma loja virtual simples implementada usando uma arquitetura Publish/Subscribe.
JavaScript
57
star
6

apidiff

A tool to identify breaking and non-breaking changes between two versions of a Java library
Java
51
star
7

CSIndex

Transparent data about Brazilian scientific production in Computer Science
HTML
34
star
8

CursoEngenhariaSoftware

Curso de Engenharia de Software (Bacharelado em Ciência da Computação, DCC/UFMG)
34
star
9

demo-ci

Aula prática sobre servidores de Integração Contínua
Java
22
star
10

engsoftmoderna

Repositório com material suplementar do livro Engenharia de Software Moderna
Python
21
star
11

esmforum

Sistema de demonstração do livro Engenharia de Software Moderna
TypeScript
12
star
12

NextBug

A next-good-bug recommender for Bugzilla
Perl
11
star
13

CursoPraticaDesenvolvimentoSoftware

Curso de graduação: Prática em Desenvolvimento de Software
8
star
14

ModularityCheck

A tool for assessing modularity using co-change clustering
Java
8
star
15

demo-cypress

Roteiro prático sobre testes end-to-end (testes de front-end) usando o Cypress.
JavaScript
7
star
16

CursoEngenhariaSoftwarePos

Repositório do curso de Engenharia de Software, para o PPGCC/UFMG
7
star
17

RTTool

A tool for extracting relative thresholds for source code metrics
Java
5
star
18

jextract

Project repository for JExtract, an Extract Method Refactoring Recommendation Tool
Java
5
star
19

why-we-refactor

CSS
4
star
20

sbsi2016-data

Dataset used in the paper "Does Technical Debt Lead to the Rejection of Pull Requests?" Brazilian Symposium on Information Systems (SBSI), p. 1-7, 2016.
3
star
21

angularjs-performance-survey

Companion repository for a paper submitted to IEEE Software
3
star
22

techtrends

CSS
3
star
23

datasets

Datasets used in the papers published by ASERG-UFMG
3
star
24

jmove

A Move Method Recommendation Eclipse Plug-in
Java
3
star
25

angularjs-survey

AngularJS Survey
1
star
26

paper-tse-refdiff-2

TeX
1
star
27

dcl2check

DCL 2.0 checker
1
star