JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler....

22
by JavaLand 2017 Dirk Mahler

Transcript of JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler....

Page 1: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

by

JavaLand 2017

Dirk Mahler

Page 2: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

2

▪ Motivation▪ jQAssistant▪ The Git Graph▪ Demo▪ Q&A

Page 3: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

Shadows Of The Past – Analysis Of Git Repositories

3

Page 4: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

4

+

Adam Tornhillhttps://pragprog.com/book/atcrime/your-code-as-a-crime-scene

http://codescene.io

Page 5: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

Shadows Of The Past – Analysis Of Git Repositories

5

Page 6: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

6

http://jQAssistant.org

▪ Open Source: GPLv3

▪ Current release: 1.2.0 initiated: 03/2013 first stable release: 04/2015

▪ Neo4j Community Edition http://neo4j.org embedded, no installation necessary

Page 7: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

7

▪ The Idea

Scan software structures

Store in a database

Execute queries▪ Explore

▪ Add high level concepts

▪ Find constraint violations

Create reports

Database

Page 8: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

8

Command Line/

Maven

Scan

Analyze

Report

Plugins

Plugins

Plugins

Page 9: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

9

▪ Available scanner plugins

▪ Plugin API is public

*.class

RDBMS Schema

GitJaCoCo

FindBugsCheckStyle

LiquibaseJAR, WAR, EARZIP

application.xmlweb.xml

MANIFEST.MF /META-INF/services/*

beans.xml

pom.xml surefire-reports.xml

GZ

*.properties

*.xsd

M2 Repository

*.yaml

Page 10: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

10

▪ Getting Started – Maven Project

<build><plugins><plugin>

<groupId>com.buschmais.jqassistant</groupId><artifactId>jqassistant-maven-plugin</artifactId><version>1.x.x</version>

</plugin></plugins>

</build>

▪ mvn install▪ mvn jqassistant:scan▪ mvn jqassistant:server http://localhost:7474

Page 11: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

11

▪ The Git Plugin

<plugin><groupId>com.buschmais.jqassistant</groupId><artifactId>jqassistant-maven-plugin</artifactId><version>1.x.x</version><scanIncludes><scanInclude>

<path>${project.basedir}/.git</path></scanInclude>

</scanIncludes><dependency><groupId>de.kontext-e.jqassistant.plugin</groupId><artifactId>jqassistant.plugin.git</artifactId><version>1.1.4</version>

</dependency></plugin>

Page 12: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

Shadows Of The Past – Analysis Of Git Repositories

12

Page 13: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

13

▪ The Git History Is A Graph!

Commit Commit

HAS_PARENT

Commit

HAS_PARENT

Commit

HAS_PARENT

Commit

HAS_PARENT

Commit

HAS_PARENTHAS_PARENT

Branch

HAS_HEAD

Branch

HAS_HEAD

ON_COMMIT

TagFile

MODIFIES

Change

CONTAINS_CHANGE

Author

COMMITTED COMMITTED

Page 14: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

14

▪ Explore Git Using Queries Which author did a commit?

▪ Let‘s convert this to ASCII art… () as nodes

-[]-> as directed relationships

CommitAuthor

COMMITTED

Page 15: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

15

▪ Explore Git Using Queries Which author did a commit?

▪ Let‘s convert this to ASCII art… () as nodes

-[]-> as directed relationships

()-[]->()

Page 16: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

16

▪ Explore Git Using Queries Which author did a commit?

▪ Let‘s convert this to ASCII art… () as nodes

-[]-> as directed relationships

(a)-[]->(c)

ca

Page 17: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

17

▪ Explore Git Using Queries Which author did a commit?

▪ Let‘s convert this to ASCII art… () as nodes

-[]-> as directed relationships

(a)-[:COMMITTED]->(c)

ca COMMITTED

Page 18: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

18

▪ Explore Git Using Queries Which author did a commit?

▪ Let‘s convert this to ASCII art… () as nodes

-[]-> as directed relationships

(a:Author)-[:COMMITTED]->(c:Commit)

c

Commit

a

Author

COMMITTED

Page 19: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

19

▪ Explore Git Using Queries Which author did a commit?

▪ Pattern matching is the core principle of Cypher

MATCH(a:Author)-[:COMMITTED]->(c:Commit)

RETURNa.name, c.message

c

Commit

a

Author

COMMITTED

Page 20: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

Shadows Of The Past – Analysis Of Git Repositories

20

Page 21: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

21

▪ DukeCon

https://github.com/DirkMahler/dukecon_server (fork)

Page 22: JavaLand 2017 Dirk Mahler logo buschmais nur name rgb fileby JavaLand 2017 Dirk Mahler. logo_buschmais_nur_name_rgb.eps

Web: jqassistant.org

Twitter: @jqassistant

Google Group: jQAssistant

Stackoverflow Tag: jQAssistant

by