Java Forum Nord 2015. Dirk Mahler



Similar documents
Build management & Continuous integration. with Maven & Hudson

Continuous Integration Multi-Stage Builds for Quality Assurance

Sonatype CLM for Maven. Sonatype CLM for Maven

Maven or how to automate java builds, tests and version management with open source tools

Content. Development Tools 2(63)

Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI)

Mind The Gap! Setting Up A Code Structure Building Bridges

Case Study: Using Jenkins to Build WebSphere Portal Applications for the Enterprise. #jenkinsconf. Jenkins User Conference Boston #jenkinsconf

Maven2 Reference. Invoking Maven General Syntax: Prints help debugging output, very useful to diagnose. Creating a new Project (jar) Example:

Software infrastructure for Java development projects

CI/CD Cheatsheet. Lars Fabian Tuchel Date: 18.March 2014 DOC:

by Charles Souillard CTO and co-founder, BonitaSoft

The Compatible One Application and Platform Service 1 (COAPS) API User Guide

Maven2. Configuration and Build Management. Robert Reiz

SMZ. SocialMedia. Z olutions

Jenkins: The Definitive Guide

Introduction to Programming Tools. Anjana & Shankar September,2010

Software project management. and. Maven

1. Introduction What is Slice? Background Why Slice? Purpose of this Document Intended Audience...

Integrating your Maven Build and Tomcat Deployment

Software project management. and. Maven

Hands on exercise for

Builder User Guide. Version 5.4. Visual Rules Suite - Builder. Bosch Software Innovations

Paul Barham Program Manager - Java. David Staheli (dastahel@microsoft.com) Software Development Manager - Java

CS 378 Big Data Programming

Hello World RESTful web service tutorial

JBoss SOAP Web Services User Guide. Version: M5

Builder User Guide. Version Visual Rules Suite - Builder. Bosch Software Innovations

Modulo II Qualidade de Software com Maven

BIRT Application and BIRT Report Deployment Functional Specification

Apache Karaf in real life ApacheCon NA 2014

Developer s Guide. How to Develop a Communiqué Digital Asset Management Solution

Coherence Managed Servers

CS 378 Big Data Programming. Lecture 2 Map- Reduce

Service Integration course. Cassandra

<Insert Picture Here> What's New in NetBeans IDE 7.2

1 Building, Deploying and Testing DPES application

Oracle WebLogic Server 11g Administration

1 What is Cloud Computing? Cloud Infrastructures OpenStack Amazon EC CAMF Cloud Application Management

PTC Integrity Eclipse and IBM Rational Development Platform Guide

GECKO Software. Introducing FACTORY SCHEMES. Adaptable software factory Patterns

Java Software Quality Tools and techniques

Maven the Beautiful City. Healthy, Viable, and Productive Build Infrastructures

Introduction to the NetBeans Platform

APAC WebLogic Suite Workshop Oracle Parcel Service Overview. Jeffrey West Application Grid Product Management

Drupal CMS for marketing sites

Monitoring PostgreSQL database with Verax NMS

LDBC Social Network Neo Technology

Meister Going Beyond Maven

Continuous integration in OSGi projects using Maven (v:0.1) Sergio Blanco Diez

SA4 Software Developer Survey Survey Specification v2.2

Report Writer's Guide Release 14.1

Improve your tests with Mutation Testing. Nicolas Fränkel

Kohsuke Kawaguchi Sun Microsystems, Inc. hk2.dev.java.net, glassfish.dev.java.net. Session ID

CHAPTER 1 - JAVA EE OVERVIEW FOR ADMINISTRATORS

IBM DB2 XML support. How to Configure the IBM DB2 Support in oxygen

Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012

Cross-domain Identity Management System for Cloud Environment

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Getting Started. SAP HANA Cloud End-to-End-Development Scenarios. Develop your first End-to-End SAP HANA Cloud Application Scenario. Version 1.4.

Course Name: Course in JSP Course Code: P5

Software Quality Exercise 2

Networks and Services

Smart Shopping- An Android Based Shopping Application

FOCUS ON YOUR FEATURES

PROGRAMMERS GUIDE. Version 1.x

Automated performance testing using Maven & JMeter. George Barnett, Atlassian Software

Acknowledgments. p. 55

Introduction to Big data. Why Big data? Case Studies. Introduction to Hadoop. Understanding Features of Hadoop. Hadoop Architecture.

Maven 2 in the real world

SDK Code Examples Version 2.4.2

SAP's Integrated Development Environment for Java. Karl Kessler, SAP AG

RepoGuard Validation Framework for Version Control Systems

ALERT installation setup

Spring Web Flow Reference Guide

Deploying Intellicus Portal on IBM WebSphere

Introduction to Synoptic

Java and RDBMS. Married with issues. Database constraints

Graph Databases: Neo4j

Glassfish, JAVA EE, Servlets, JSP, EJB

Creating an application with the Virgo Web Server

Jenkins User Conference Herzelia, July #jenkinsconf. Testing a Large Support Matrix Using Jenkins. Amir Kibbar HP

Eclipse Committer Bootcamp

Getting Started Android + Linux. February 27 th, 2014

EMC Documentum Composer

Implementing SQI via SOAP Web-Services

Alfresco. Wiley Publishing, Inc. PROFESSIONAL. PRACTICAL SOLUTIONS FOR ENTERPRISE. John Newton CONTENT MANAGEMENT. Michael Farman Michael G.

Apache Sling A REST-based Web Application Framework Carsten Ziegeler cziegeler@apache.org ApacheCon NA 2014

Migration Eclipse 3 to Eclipse 4

Selenium Automation set up with TestNG and Eclipse- A Beginners Guide

Rapid Application Development. and Application Generation Tools. Walter Knesel

Online Courses. Version 9 Comprehensive Series. What's New Series

BARCODE PRINTING SET UP BARCODE PRINTING

Transcription:

by Java Forum Nord 2015 Dirk Mahler

Black Boxes Called Artifacts Software As A Graph jqassistant Let s Explore Libraries! 2

Yes We Scan Software Analysis Using jqassistant 3

Artifact Result of a build/integration processes Black Box What does it hide? acme.war Person.java pom.xml /index.xhtml /WEB-INF/lib/model.jar @Entity public class Person { private String name; } <dependency> <groupid>org.eclipse.persistence</groupid> <artifactid>persistence-api</artifactid> <version>2.1.0</version> </dependency> model.jar /com/acme/model/person.class /META-INF/persistence.xml person.sql create table PERSON (id number, name varchar(255) Let s open it! 4

The Idea Scan software structures Store them into a database Execute queries Why? Holistic view on the real world Exploration effective searches beyond IDE capabilities Individual metrics and visualization Complexity, Dependencies Validation Coding rules, design & architecture constraints Reporting And finally it s fun! Database Find all 5

Which database? Flexible data model schema free extensible good support for relationships Easy-to-use query language expressive Performance http://neo4j.org 6

Yes We Scan Software Analysis Using jqassistant 7

All we need is Nodes Labels Properties Relationships Label name:value RELATIONSHIP TYPE Modeling is just Taking a pen Drawing the structures on a whiteboard (i.e. the database) We don t need Foreign keys Tables and schemas Knowledge in graph theory 8

Web Application Archive filename:acme.war Artifact CONTAINS CONTAINS filename:model.jar Package Package Package Java Archive Artifact CONTAINS name:com CONTAINS name:acme CONTAINS name:model CONTAINS Class REQUIRES REQUIRES Annotation ANNOTATED_BY fqn:com.acme.model.person OF_TYPE DECLARES CONTAINS fqn:javax.persistence.entity OF_TYPE fqn:int Field name:name Maven Pom DECLARES_DEPENDENCY scope:compile Artifact group:org.eclipse.persistence name:persistence-api version: 2.1.0 filename: /META-INF/maven/com.acme.model/pom.xml

Explore an application using queries Which class extends from another class? EXTENDS Let s convert this to ASCII art () as nodes -[]-> as directed relationships Class 10

Explore an application using queries Which class extends from another class? EXTENDS Let s convert this to ASCII art () as nodes -[]-> as directed relationships Class ()-[]->() 11

Explore an application using queries Which class extends from another class? C1 EXTENDS C2 Let s convert this to ASCII art () as nodes -[]-> as directed relationships Class (c1)-[]->(c2) 12

Explore an application using queries Which class extends from another class? C1 EXTENDS C2 Let s convert this to ASCII art () as nodes -[]-> as directed relationships Class (c1)-[:extends]->(c2) 13

Explore an application using queries Which class extends from another class? C1 EXTENDS C2 Let s convert this to ASCII art () as nodes -[]-> as directed relationships Class (c1:class)-[:extends]->(c2:) 14

Explore an application using queries Which class extends from another class? C1 EXTENDS C2 Class Pattern matching is the core principle of Cypher MATCH (c1:class)-[:extends]->(c2:) RETURN c1.fqn, c2.fqn 15

Yes We Scan Software Analysis Using jqassistant 16

http://jqassistant.org Open Source: GPLv3 Current release: 1.0.0 initiated: 03/2013 first stable release: 04/2015 Neo4j Community Edition embedded no installation necessary 17

Scan Plugins Command Line/ Maven Analyze Plugins Report Plugins 18

Getting Started Command Line unzip jqassistant.distribution-1.0.0.zip cd jqassistant.distribution-1.0.0/bin jqassistant.sh scan f model.jar jqassistant.sh scan f acme.war jqassistant.sh scan f acme.ear jqassistant.sh scan u http://somewhere.com/acme.ear jqassistant.sh scan u maven:repository::http://host/releases jqassistant.sh scan u rdbms:schema::jdbc:oracle:thin:user/secret@host:1521:sid jqassistant.sh server http://localhost:7474 19

Getting Started Maven Project <build> <plugins> <plugin> <groupid>com.buschmais.jqassistant.scm</groupid> <artifactid>jqassistant-maven-plugin</artifactid> <version>1.0.0</version> </plugin> </plugins> </build> mvn install jqassistant:scan mvn jqassistant:server 20

Available scanner plugins ZIP JAR, WAR, EAR GZ Liquibase *.class *.properties CheckStyle FindBugs MANIFEST.MF /META-INF/services/* web.xml application.xml beans.xml pom.xml surefire-reports.xml *.xsd JaCoCo *.java Git Plugin API is public M2 Repository RDBMS Schema 21

Yes We Scan Software Analysis Using jqassistant 22

Examples Artifacts and Maven descriptors API changes between releases Declared deprecations Thrown exceptions Structural problems (metrics) Declared members Depth of inheritance hierarchies Cyclomatic complexity Fan In/Fan Out of classes and packages Package Cycles 23

Yes We Scan Software Analysis Using jqassistant https://jqassistant.org/yes-we-scan-exploring-libraries/ 24

What makes the difference? Flexible data model Get information about different aspects of the same software in just one place Extend it using plugins Including custom implementations Expressive queries Enrich and query using your own concepts/abstractions Create specific metrics and reports 25

by Mail: info@jqassistant.de Web: jqassistant.de Twitter: @jqassistant