javaland 2017 dirk mahler logo buschmais nur name rgb fileby javaland 2017 dirk mahler....

22
by JavaLand 2017 Dirk Mahler

Upload: others

Post on 28-Oct-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

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