# Gitinspector
## Introdução

O Gitinspector é uma ferramenta para análise estátisca de repositórios Git. A análise padrão apresenta dados análiticos gerais por autor, os quais podem ser complementados com uma análise em uma linha do tempo que mostra a carga de trabalho e atividades de cada autor. Em um funcionamento normal, o gitinspector filtra os resultados para mostrar apenas estatísticas sobre um dado número de extensões e por padrão inclui apenas códigos fonte em suas análises.

## Git Internals

O funcionamento do Gitinspector é baseado na extração de informações que o git utiliza para gerenciar as versões do repositório. Internamente a ferramente utiliza três tipos de arquivos:
* Blob
* Tree
* Commit
O primeio deles é responsável por armazenar os versões dos arquivos do diretório. O segundo para organizar as estruturas do arquivos blob(As tree funcionam basicamente como as árvores de diretório do sistema operacional). Finalmente, os arquivos commits que relacionam os arquivos tree com um autor, um tempo e uma ordem específica. Os usuários da ferramenta normalmente não lidam com a criação ou modificação desses arquivos.
No escopo do Gitinspector é possivel verificar através dos arquivos internos do git quantas linhas de código cada autor adicionou e quantas ele deletou. O aplicativo precisa seguir a pilha de commits de uma determinada branch analizando os autores e quantas linhas cada arquivo blob adicionando por ele tem.

## Requisitos para Instalação

* Git executável definido em uma variável de ambiente (PATH), senão gitinspector não conseguirá executar o git.
* Python 2.6 ou superior.

## Filtros

| Option | Description |
| -m, --metrics[=BOOL] | Apresenta algumas alguma métricas durante avaliação de commits. |
| -l, --list-file-types[=BOOL] | Lista todas as extensões de arquivos dispóniveis na brach atual que está sendo verificada. Útil para verificar os formatos de arquivos em um projeto. |
| -w, --weeks[=BOOL] | Apresenta todas as informações estatíscas em semanas ao invés de meses. |
| --since=DATE | Mostra estatíscas para os commits feitos desde a data indicada. |
| -T, --timeline[=BOOL] | Mostra timeline de commits por autor |

## Uso do Gitinspector em Windows

Se você deseja utilizar o gitinspector em um computador com windows, existem algumas coisas que devem ser consideradas. Para mais informações por gentileza, clique aqui.

## Linguagens Suportadas

| Linguagem | Comentários | Métricas | Extensão dos Arquivos | Incluso em análises por default |
| ADA | Yes | No | ada, adb, ads | No |
| C | Yes | Yes | c, h | Yes |
| C++ | Yes | Yes | cc, h, hh, hpp | Yes |
| C# | Yes | Yes | cs | No |
| GNU Gettext | Yes | No | po, pot | No |
| Haskell | Yes | No | hs | No |
| HTML | Yes | No | html | No |
| Java | Yes | Yes | java | Yes |
| JavaScript | Yes | Yes | js | Yes |
| LaTex | Yes | No | tex | No |
| OCaml | Yes | No | ml, mli | No |
| OpenGL Shading Language | Yes | No | glsl | Yes |
| Perl | Yes | No | pl | No |
| PHP | Yes | php | Exemplo | No |
| Python | Yes | Yes | py | Yes |
| Ruby | Yes | Exemplo | rb | Yes |
| Scala | Yes | Exemplo | scala | No |
| SQL | Yes | Exemplo | sql | Yes |
| XML | Yes | Exemplo | xml, jspx | No |

## Resultados do Gitinspector

A ferramenta pode oferecer seu relatórios em diversos formatos. Ao lado pode ser observada a saída html dos resultados de um projeto em java.
O Gitinspector detalha o número de commits e a quantidade de código inserida e deletada por cada integrante
da equipe.