STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt,...

46
Uwe Lappöhn | CTS EVENTIM STATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20 th & 21 st

Transcript of STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt,...

Page 1: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

Uwe Lappöhn | CTS EVENTIM

STATIC CODE ANALYSIS @ EVENTIM

PBUGG 2019 | Frankfurt, May 20th & 21st

Page 2: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

2

PURPOSE OF STATIC CODE ANALYSIS

COMPANY PROFILE

TOOL 1: SONARQUBE

AGENDA

OUR MOTIVATION

TOOL 2: SOTOARC

Page 3: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

3

3

• Market Leader in Ticketing & Live Entertainment in Europe

• Proprietary Development

• Operating in 20+ Countries

• Growth from von € 15 Million (1999) to € 1.2 Billion (2018)

• Specialized Systems for Specialized Segments

COMPANY PROFILE

Page 4: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

4

EVENTIM.INHOUSE

Page 5: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

5

EVENTIM.INHOUSE

Page 6: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

6

EVENTIM.INHOUSE

Page 7: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

7

EVENTIM.INHOUSE

Page 8: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

8

EVENTIM.INHOUSE: TEAMS

Scrum

Master

Product

Manager

Product

Manager

DEV & QA

Architect

FOCUS-TEAMS

ONLINE

LOGIC

NUMBERS Architect

Page 9: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

9

PURPOSE OF STATIC CODE ANALYSIS

COMPANY PROFILE

TOOL 1: SONARQUBE

AGENDA

OUR MOTIVATION

TOOL 2: SOTOARC

Page 10: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

10

WHAT‘S THAT?

… static because the program analyzed does not need to be executed

… white-box approach

… works tool-based

… can be integrated into a build pipeline

STATIC CODE ANALYSIS: DEFINITION

Page 11: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

11

AND WHAT‘S THAT FOR?

… helps to understand the code structure

… checks coding standards

… finds code smells

STATIC CODE ANALYSIS: PURPOSE

Page 12: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

12

PURPOSE OF STATIC CODE ANALYSIS

COMPANY PROFILE

TOOL 1: SONARQUBE

AGENDA

OUR MOTIVATION

TOOL 2: SOTOARC

Page 13: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

13

STATIC CODE ANALYSIS: OUR MOTIVATION

Page 14: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

14

STATIC CODE ANALYSIS: OUR MOTIVATION

Page 15: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

15

STATIC CODE ANALYSIS: OUR MOTIVATION

Page 16: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

16

WE NEED IT BECAUSE

… we constantly want to improve the quality of our code.

… our team grew (from 6 to >20) and grows

… we want to avoid code smells

… we started a project to renew our software architecture

N-tier

C#

Domain Driven Design

STATIC CODE ANALYSIS: SUMMARY

Page 17: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

17

PURPOSE OF STATIC CODE ANALYSIS

COMPANY PROFILE

TOOL 1: SONARQUBE

AGENDA

OUR MOTIVATION

TOOL 2: SOTOARC

Page 18: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

18

SONARQUBE AND POWERBUILDER?

Page 19: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

19

https://www.sonarqube.org/

Page 20: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

20

WHAT WE DID TO MAKE IT WORK

… created a plugin that uses PowerScript as grammar

… implemented rules using the new grammar

… integrated the plugin into Sonarqube

SONARQUBE

Page 21: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

21

https://github.com/qualitesys/Qcr4Pbl

EXAMPLE

Page 22: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

22

https://github.com/qualitesys/Qcr4Pbl

EXAMPLE

Page 23: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

23

https://github.com/qualitesys/Qcr4Pbl

EXAMPLE

Page 24: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

24

https://github.com/qualitesys/Qcr4Pbl

EXAMPLE

Page 25: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

25

https://github.com/qualitesys/Qcr4Pbl

EXAMPLE

Page 26: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

26

PURPOSE OF STATIC CODE ANALYSIS

COMPANY PROFILE

TOOL 1: SONARQUBE

AGENDA

OUR MOTIVATION

TOOL 2: SOTOARC

Page 27: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

27

WHAT IS THAT THING?

Visualizes the static structure of a system

Helps to understand the structure

Helps to model a target architecture

Performs a conformity check

Checks and detects where the code is not compliant

Simulates potential restructurings and their effects

SOTOARC

Page 28: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

28

SOTOARC AND POWERBUILDER?

SOTOARC

Page 29: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

29

https://www.hello2morrow.com/products/sotograph

SOTOARC

Page 30: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

30

WHAT WE DID

… we took a stable and relatively invariable package →

ACCESS CONTROL

Performs the interaction between INHOUSE and ACCESS CONTROL

SOTOARC

Page 31: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

31

EXAMPLE

Page 32: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

32

EXAMPLE

Page 33: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

33

WHAT WE DID TO MAKE IT WORK

… ZKS-Service is coded in Powerbuilder

… C# will be generated with PB.Net from Powerscript

… C# is deployd on IIS

… generated C# code is base for SOTOARC

SOTOARC

Page 34: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

34

Start SOTOARC with original code structure

SOTOARC

Page 35: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

35

EXAMPLE

Page 36: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

36

EXAMPLE

Page 37: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

37

EXAMPLE

Page 38: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

38

EXAMPLE

Page 39: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

39

EXAMPLE

Page 40: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

40

EXAMPLE

Page 41: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

41

After the restructuring with SOTOARC

SOTOARC

Page 42: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

42

EXAMPLE

Page 43: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

43

EXAMPLE

Page 44: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

44

EXAMPLE

Page 45: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

45

EXAMPLE

Page 46: STATIC CODE ANALYSIS @ EVENTIM - PowerBuilderSTATIC CODE ANALYSIS @ EVENTIM PBUGG 2019 | Frankfurt, May 20th & 21st 2 PURPOSE OF STATIC CODE ANALYSIS COMPANY PROFILE TOOL 1: SONARQUBE

[email protected]