alex9849 / repositoryminer Goto Github PK
View Code? Open in Web Editor NEWLicense: MIT License
License: MIT License
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:
Ein Beispiel FileTree-Object kann im Issue #10 gefunden werden
Als Productowner, möchte ich Protokolldaten von Git Repositories einlesen können.
Bsp. git log --numstat
Akzeptanzkriterien:
Als Produktowner, habe ich ein Interesse daran alle Informationen zum Start des Projekts zu haben.
Akzeptanzrkriterien:
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.
Anforderungen für das Model Project:
Anforderungen für das Model Commit:
Anforderungen für das Model FileChanges:
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.
Akzeptanzkriterien:
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?
Wie im Meeting besprochen, sollen in diesem Issue alle kleineren Änderungen bearbeitet werden.
Diese wären:
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:
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:
Als Productowner möchte ich die Anwendung über eine geeignete Oberfläche steuern können.
Akzeptanzkriterien:
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.
Als Productowner möchte ich das die Anwendung einen Verlauf der Eigentümerschaft des zugrundeliegenden Repositories ausgibt.
Akzeptanzkriterien:
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)
...
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
}
]
Als Productowner, möchte ich, die Eigentümerschaft (Ownership) von Entwicklern zu einem bestimmten Zeitpunkt, angezeigt bekommen.
Akzeptanzkriterien:
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
Als Productowner, möchte ich das die Entwicklung Eigentümerschaft eines Projekts entsprechend Visualisierung wird.
Akzeptanzkriterien:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.