Giter Club home page Giter Club logo

repositoryminer's People

Contributors

alex9849 avatar dobbyfanbase avatar hettel avatar

Watchers

 avatar  avatar

repositoryminer's Issues

Frontend filebrowser

Im Frontend wird ein filebrowser benötigt, mit dessen Hilfe der Anwender durch sein Projekt navigieren können soll.

Design technisch kann sich an diesem Filebrowser (https://vuetify-file-browser-demo.herokuapp.com/) oder am github/gitlab filebrowser orientiert werden.

Akzeptanzkriterien:

  • Anwender kann in Hin- und Rückrichtung durch die Dateien navigieren
  • FileBrowser Komponente gibt Rückmeldung über den aktuell ausgewählten Ordner.

Ein Beispiel FileTree-Object kann im Issue #10 gefunden werden

Einlesen von Daten

Als Productowner, möchte ich Protokolldaten von Git Repositories einlesen können.
Bsp. git log --numstat

Akzeptanzkriterien:

  • Die Daten werden von einer Protokolldatei eingelesen (keine GitHub API etc.)
  • Die Daten werden in einem zur Weiterverarbeitung geeigneten Format vorgehalten.

Initiale Projektdoku

Als Produktowner, habe ich ein Interesse daran alle Informationen zum Start des Projekts zu haben.

Akzeptanzrkriterien:

  • Readme.md enthält Informationen zum Ausführen des Projekts

DAO-Schicht schreiben

Die erstellten Model Klassen müssen in der Datenbank persistiert, geladen und gelöscht werden können.
Die Model Klassen sind im Package "model" im Projekt backend zu finden.

  • Alle Models können persistiert werden
  • Alle Models können geladen werden

Anforderungen für das Model Project:

  • Löschen anhand der id ist möglich

Anforderungen für das Model Commit:

  • Laden ist anhand des Filters "ByProject" möglich
  • Laden ist anhand des Filters "ByProjectAndAuthor" möglich

Anforderungen für das Model FileChanges:

  • Laden ist anhand des Filters "ByCommit" möglich

D3.js Komponenten

Als Anwender möchte ich mir Graphen zu diversen Metriken des Projektes anzeigen lassen können.
Zum Anzeigen der Graphen wird D3.js verwendet. Um D3.js in Vue.js verwenden zu können müssen Wrapper Komponenten erstellt werden.
Für den Anfang sollen folgende Diagrammtypen bereitstehen.

  • Bar
  • Circle
  • Line
  • Circle Packing

Akzeptanzkriterien:

  • Diagrammtypen nehmen Daten über eine Property entgegen
  • Diagramm sollte über Properties möglichst individualisierbar sein

Verbesserung der Dokumentation

Als Benutzer möchte ich eine ausführlicher Dokumentation über die Installation und das Starten des Programms. Die einzelnen Schritte sollen gut nachvollziehbar beschrieben sein.

Bemerkungen

  • Im Abschnitt Build wird man zur Installation von Quasar aufgefordert und auf die Web-Seite verwiesen. Dort wird man aufgefordert Node zu installieren. Der Befehl Build for Production scheint aber auch noch mal eine spezifische Node Version zu installieren. Hier sollte die Doku ausführlicher sein.

  • Nach der Installation von Quasar bleibt der Befehl quasar dev erstmal wirkungslos. Was soll da passieren? Anscheinend muss man auch Build for Production ausführen. Danach hat es funktioniert.

  • Wie startet man das Programm außerhalb der IDE? Das paketierte Programm liegt im target-Verzeichnis

  • Es wäre schön wenn es einen allgemeinen Installationsvorgang gibt, mit dem man das Tool (Programm) mit allen Abhängigkeiten installieren könnte und auch mit einem Befehl starten und Stoppen könnte. Für Benutzer ist es immer unschön, wenn man sich noch viele zusätzliche Werkzeuge installieren muss. Könnte man das fertige Programm nicht in einen Dockercontainer packen, den man sich als Nutzer einfach lädt und startet?

Minimalverbesserungen

Wie im Meeting besprochen, sollen in diesem Issue alle kleineren Änderungen bearbeitet werden.
Diese wären:

  • Responsive-Graphs (dynamisches mitwachsen der Graphen, wenn sich die seitengröße ändert)
  • Überprüfen, ob Autoren-mergen wirklich korrekt funktioniert
  • Entfernen der Sidebar und einfügen eines Home-Buttons

Berechnung Ownership

Als Productowner möchte ich, dass die Eigentümerschaft zu einem eingelesenen Repository berechnet werden kann. Die Eigentümerschaft definiert sich als den Anteil (in Prozent) eines Entwicklers am Lebenzyklus einer Datei.

Akzeptanzkriterien:

  • Die Anwendung gibt zu einem eingelesenen Repository die Eigentümerschaft pro Entwickler aus
  • Das Datum zu dem die Eigentümerschaft berechnet wurde wird mit angegeben.

Autoren mergen

Momentan wird jeder im Git-log vorkommender Name als einzelner Autor betrachtet. Als User möchte ich mehrere Autoren nachträglich in der UI zu einem Autor mergen können, sodass diese als einer betrachtet werden.
Gemergte Autoren sollten im Nachhinein auch wieder geunmerget werden können.

Todo:

  • Datenstruktur unterstützt gemergte Autoren
  • UI um Autoren mergen und unmergen zu können
  • Existierende SQL-Queries werden auf neue Datenstruktur angepasst
  • Backendfunktionalität um Autoren mergen und unmergen zu können

Oberfläche

Als Productowner möchte ich die Anwendung über eine geeignete Oberfläche steuern können.

Akzeptanzkriterien:

  • Funktionen der Anwendung sind über gängige Eingabewerkzeuge steuerbar (Maus)
  • Die Anwendung gibt Rückmeldung über ihren Zustand.

Graph-API

Das Frontend soll seinen aktuellen Zustand an das Backend übermitteln können. Das Backend soll daraufhin mit allen für den Zustand verfügbaren Graphenoptionen antworten, welche vom Nutzer angefordert werden können.

Z.B. Welche Graphen sind im Dateibrowser verfügbar und unter welcher URL sind diese zu finden. Welche von diesen Graphen beziehen sich auf Ordner, welche auf Dateien, welche aus beides...

Die API sollte so gestaltet und implementiert werden, dass zu einem späteren Zeitpunkt auch nach anderen Statistiken gefragt werden kann, welche sich nicht zwangsweise auf den Dateibrowser, sondern z.B. auf die Autoren oder das gesamte Projekt beziehen.

  • Implementierund von Backend-Endpoints
  • Implementierung von Frontend-Endpoints

Berechnung Ownership-Trend

Als Productowner möchte ich das die Anwendung einen Verlauf der Eigentümerschaft des zugrundeliegenden Repositories ausgibt.

Akzeptanzkriterien:

  • Die Eigentümerschaft wird commitweise ermittelt.
  • Ausgabe erfolgt im CSV Format

Bug: Malformed git-log!

Ausführen des Befehls

git log --pretty=format:'[%h] [%an] (%p) %ad %s' --date="format:%Y-%m-%d %H:%M:%S" -m --numstat --summary --parents >> repolog.log

erzeugt auf meinem System eine anscheinend UTF-8 Datei. Beim Versuch die Datei als Projekt in die Anwendung zu importieren erhalte ich folgenden Fehler:

java.lang.IllegalArgumentException: Malformed git-log! Make sure the File-Encoding is set to UTF-16!
at de.hskl.repominer.service.logparser.LogParser.toUnparsedCommits(LogParser.java:120)
at de.hskl.repominer.service.logparser.LogParser.parseLogStream(LogParser.java:28)
...

Aktuelle Projektstruktur erzeugen

Damit sich der Nutzer später durch sein Projekt navigieren kann, soll aus dem Git-Log die aktuelle Projektstruktur generiert werden können. Hierzu existiert in der DB bereits eine View, welche die Pfade zu allen Dateien aktuell anzeigt. Alle Dateien mit Pfaden != null sind nicht gelöscht!
Der Endpoint /api/project/{id}/structure soll auf eine GET-Request mit einem Objekt folgender Form antworten:

[{
  "name": "TestOrdner",
  "isFolder": true,
  "children": [{
      "name": "TestUnterOrdner",
      "isFolder": true,
      "children": [{
        "name": "FunnyFile.txt",
        "isFolder": false
      }]
    },
    {
      "name": "LeererUnterOrdner",
      "isFolder": true,
      "children": []
    }]
  }, 
  {
    "name": "RootFile.txt",
    "isFolder": false
  }
]

Visualisierung Ownership

Als Productowner, möchte ich, die Eigentümerschaft (Ownership) von Entwicklern zu einem bestimmten Zeitpunkt, angezeigt bekommen.

Akzeptanzkriterien:

  • Die Eigentümerschaft wird über eine Visualisierung dargestellt (Circle Packing)
  • Der Zeitpunkt zu dem die angezeigt Visualisierung berechnet wurde, wird angezeigt.
  • Die Entwickler der Anwendung können unterschieden werden.
  • Die Entwickler werden in einer Legende aufgeführt
  • Steuerungsmöglichkeiten der Auswertung (Zeitpunkt)

Commit heatmap

Als Nutzer möchte, ich herausfinden können, welche Dateien wie oft zusammen committet werden. Hierzu soll eine Heatmap mit allen Dateien in der X und in der Y-Achse angefordert werden können, welche als Datenpunkte die Anzahl der Commits anzeigt, in denen beide Dateien vorkommen. Die Datein in der Heatmap sollen vom Nutzer sortiert werden können. (z.B. nach Erstellungs-Datum, Alphabetisch, als Breitensuche)

Heatmap Beispiel: https://www.highcharts.com/demo/heatmap-canvas

Visualisierung Ownership-Trend

Als Productowner, möchte ich das die Entwicklung Eigentümerschaft eines Projekts entsprechend Visualisierung wird.

Akzeptanzkriterien:

  • Anzeige der Berechneten Daten
  • Steuerungsmöglichkeiten der Auswertung

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.