Code Monkey home page Code Monkey logo

coderadarvisualization's Introduction

Preface

The whole application was rewritten using Angular 6 - checkout the angular-ui branch and the demo.
Feel free to contribute :-)

Visualization of software quality and evolution

Background

In the context of my bachelor thesis, I developed a prototypic application that can visualize the structure and quality of software. It has been developed with the help of web technologies HTML, CSS and JavaScript. For the three-dimensional visualization, the library Three.js was used.

With the comparison of different versions of this software, tendencies of the software's evolution shall be revealed and become visible. According to that, the aim of this application is that developers and also project managers are able to intuitively explore and localize flaws and possibilities to improve their projects. Therefore, results of static code analyses are visualized in the form of a city with buildings representing the files and districts representing the modules of the project.

How to install

Checkout and install dependencies

After checking out the project to your local harddrive, you can install all needed dependencies with npm:

npm install

Coderadar

The application is yet designed to visualize results of static code analyses of the tool Coderadar exclusively. So at the moment, you would need to have a locally running Coderadar server and a fully analyzed sample project in order to use the application. To see how this works, just have a look at the GitHub project and at the administration guide.

How to develop

Transpiling to ES5

Because ES6 is used for writing the JavaScript code, you need to transpile the code into ES5 to make the app run in all browsers. You can easily do that with the help of gulp:

gulp

To make the development a lot more comfortable, you can also start a code watcher with gulp. It will automatically transpile the JavaScript code to ES5 whenever it detects a change in the source files:

gulp watch

Execute tests

To make sure the code works properly, you can run unit tests with

npm test

Screenshots

Just choose two versions of your software project (based on GIT) and the type of view:

Choose Versions

You can compare the two versions either side by side ...

Split View

... or in a merged view:

Merged View

You can filter for specific properties of your classes ...

filter

... and map different types of metrics to your personal visualization.

mapping

Of course, you can also search for certain files in your project and highlight them in the visualization

search

coderadarvisualization's People

Contributors

pschild avatar

Stargazers

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

Watchers

 avatar  avatar

Forkers

jongoe

coderadarvisualization's Issues

Use base area instead of side length

A class with a metric value 3 times higher than another class currently seems 9 times larger.

Use the base area instead of the side length to make it appear only 3 times larger as it should be.

Split view: different initial colorization for the two versions

Background: the colorization per commit (blue and orange) does not make sense in the split view, because the user can make a difference between the two versions without color anyway. Initially, the colorization per metric can be used or it can be even thought about other informations that can be visualized by color (e.g., the age of the components or the colorization of the 3 biggest and 3 smallest components).
When only the color metric is used, the radio switch for choosing the colorization can be removed.

Add date information whenever the commitId is displayed

Labels showing the commitId should be changed so that they also show the date and time of the according commit. So the user can remember what commit he chose.

Examples:

  • ComparisonContainer => Headlines in the table should be added with date
  • Tooltips
  • tbc

Animated GIF or Video

It would be a cool feature to be able to automatically make a picture for each commit and combine them in an animated GIF or a movie. This has no real analytical value but it would explicitly show the evolution of a project which would be a gimmick in every presentation :).

height- und groundArea-Faktoren überdenken

Diese Faktoren müssen dynamisch gesetzt werden:
Die maximale Höhe aller Blöcke, die ggf. gezeichnet werden könnten, ist x. Alle anderen Höhen damit berechnen.

=> die Faktoren können deutlich kleiner sein als aktuell, sodass auch die Kamera eine "kleinere" Startposition erhalten kann

Helfer-Blöcke müssen die Höhe vom "anderen" Commit haben

Ein Helfer-Block ist immer dann sichtbar, wenn eine Klasse im "anderen" Commit größer war. Der jeweilige Helfer-Block muss dann die Höhe des "anderen" Commits annehmen.
Dafür muss noch eine Methode geschrieben werden, da es momentan nur möglich ist, mit der Höhe des aktuellen Commits zu arbeiten.

Allow to save screenshots of visualiziation(s)

renderer = new THREE.WebGLRenderer({..., preserveDrawingBuffer: true});
...
imgData = renderer.domElement.toDataURL();
var w = window.open('about:blank','image from canvas');
w.document.write("<img src='"+imgData+"' alt='from canvas'/>");

Transparenz fehlerhaft

es werden nicht alle blöcke korrekt transparent dargestellt (wenn zB ein block angeklickt wird, der auf der anderen seite nicht vorhanden ist)

Merged Mode: andere Farben wählen

unveränderte Dateien: gelb/grau (?)
hinzugefügte Dateien: grün
gelöschte Dateien: rot
veränderte Dateien: orange/blau (mit Transparenz)

Mergen überarbeiten

Beim Mergen der Commit-Daten müssen die Klassen und Module, die nur in einem der beiden Revisionen vorkommen, erhalten bleiben und mit gerendert werden.

Die Seite, die die Dateien NICHT enthält, könnte stattdessen eine leere Grundfläche zeigen. Dies sollte aber einstellbar sein, evtl. auch über eine Checkbox. So hat der User mehr Freiheiten.

Move camera to bird's-eye view

When clicking a button, the camera could automatically animate to bird's-eye view.
Idea: preview in the corner/in the middle of the screen?

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.