WEBVTT

1
00:00:05.100 --> 00:00:09.800
it

2
00:00:11.600 --> 00:00:14.700
<00:00:11.600>I'm <00:00:11.727>really <00:00:11.854>happy <00:00:11.981>to <00:00:12.109>be <00:00:12.236>here <00:00:12.363>at <00:00:12.490>we <00:00:12.618>are <00:00:12.745>developers <00:00:12.872>in <00:00:13.000>Berlin

3
00:00:14.700 --> 00:00:17.500
<00:00:14.700>for <00:00:14.840>the <00:00:14.979>first <00:00:15.120>time <00:00:15.260>really <00:00:15.399>happy <00:00:15.540>that <00:00:15.680>all <00:00:15.819>of <00:00:15.959>you <00:00:16.099>joined

4
00:00:17.500 --> 00:00:20.500
<00:00:17.500>the <00:00:17.780>lecture <00:00:18.060>and <00:00:18.340>today <00:00:18.620>me <00:00:18.900>and

5
00:00:20.500 --> 00:00:23.500
<00:00:20.500>my <00:00:20.700>colleague <00:00:20.900>are <00:00:21.100>gonna <00:00:21.300>talk <00:00:21.500>about <00:00:21.700>code <00:00:21.900>quality.

6
00:00:23.500 --> 00:00:26.200
<00:00:23.500>We're <00:00:23.675>gonna <00:00:23.850>talk <00:00:24.025>about <00:00:24.200>code <00:00:24.375>quality <00:00:24.550>checks. <00:00:24.725>We're <00:00:24.900>gonna

7
00:00:26.200 --> 00:00:29.800
<00:00:26.200>talk <00:00:26.400>about <00:00:26.599>how <00:00:26.800>to <00:00:27.000>create <00:00:27.200>custom <00:00:27.400>rules <00:00:27.599>for

8
00:00:29.800 --> 00:00:33.100
<00:00:29.800>code <00:00:30.080>quality <00:00:30.360>checks. <00:00:30.640>And <00:00:30.920>obviously <00:00:31.200>we

9
00:00:32.100 --> 00:00:35.400
<00:00:32.100>are <00:00:32.380>both <00:00:32.660>a <00:00:32.940>lot <00:00:33.220>into <00:00:33.500>Quality

10
00:00:35.400 --> 00:00:38.000
<00:00:35.400>quality <00:00:35.633>something <00:00:35.866>that <00:00:36.100>we <00:00:36.333>put <00:00:36.566>a <00:00:36.800>lot

11
00:00:38.100 --> 00:00:41.600
<00:00:38.100>of <00:00:38.300>emphasis <00:00:38.500>on <00:00:38.700>in <00:00:38.900>in <00:00:39.100>a <00:00:39.300>company <00:00:39.500>and

12
00:00:41.600 --> 00:00:44.400
<00:00:41.600>we <00:00:41.775>want <00:00:41.950>code <00:00:42.125>quality <00:00:42.300>to <00:00:42.475>be <00:00:42.650>to <00:00:42.825>be <00:00:43.000>one

13
00:00:44.400 --> 00:00:47.900
<00:00:44.400>of <00:00:44.680>our <00:00:44.960>differentiators <00:00:45.239>for <00:00:45.519>also <00:00:45.800>developers

14
00:00:47.900 --> 00:00:50.600
<00:00:47.900>and <00:00:48.180>also <00:00:48.460>clients <00:00:48.739>choosing <00:00:49.019>our <00:00:49.300>company.

15
00:00:50.600 --> 00:00:54.300
<00:00:50.600>So <00:00:50.800>that's <00:00:51.000>the <00:00:51.200>topic <00:00:51.400>for <00:00:51.600>today. <00:00:51.800>So <00:00:52.000>let's

16
00:00:54.300 --> 00:00:57.400
<00:00:54.300>get <00:00:54.474>started <00:00:54.650>a <00:00:54.824>short <00:00:55.000>introduction <00:00:55.175>from <00:00:55.349>from <00:00:55.525>our <00:00:55.699>side.

17
00:00:57.400 --> 00:01:00.400
<00:00:57.400>So, <00:00:57.574>my <00:00:57.750>name <00:00:57.925>is <00:00:58.100>Daniel. <00:00:58.275>I <00:00:58.449>am <00:00:58.625>leading <00:00:58.800>the

18
00:01:00.400 --> 00:01:03.600
<00:01:00.400>one <00:01:00.680>of <00:01:00.960>our <00:01:01.239>developer <00:01:01.519>departments <00:01:01.800>in

19
00:01:03.600 --> 00:01:07.000
<00:01:03.600>IBM <00:01:03.833>IX. <00:01:04.066>I'm <00:01:04.300>located <00:01:04.533>in <00:01:04.766>Watterson <00:01:05.000>Croatia.

20
00:01:06.600 --> 00:01:09.100
<00:01:06.600>So <00:01:06.880>coming <00:01:07.160>from <00:01:07.440>from <00:01:07.720>a <00:01:08.000>really

21
00:01:09.100 --> 00:01:11.300
<00:01:09.100>small <00:01:09.274>town <00:01:09.449>here <00:01:09.625>to <00:01:09.800>Berlin <00:01:09.975>same <00:01:10.149>as <00:01:10.324>my <00:01:10.500>colleague.

22
00:01:11.800 --> 00:01:15.100
<00:01:11.800>Martin <00:01:12.149>Martin <00:01:12.500>is <00:01:12.850>also <00:01:13.200>equality

23
00:01:14.100 --> 00:01:17.300
<00:01:14.100>Enthusiast <00:01:14.300>and <00:01:14.500>in <00:01:14.699>the <00:01:14.899>second <00:01:15.100>part <00:01:15.300>of <00:01:15.500>the

24
00:01:17.300 --> 00:01:21.000
<00:01:17.300>lecture. <00:01:17.500>Martin <00:01:17.700>will <00:01:17.899>show <00:01:18.100>you <00:01:18.300>alive <00:01:18.500>demo <00:01:18.700>how

25
00:01:20.200 --> 00:01:23.300
<00:01:20.200>you <00:01:20.375>can <00:01:20.550>also <00:01:20.725>apply <00:01:20.900>some <00:01:21.075>of <00:01:21.250>the <00:01:21.425>things <00:01:21.600>that

26
00:01:23.300 --> 00:01:26.500
<00:01:23.300>we're <00:01:23.475>going <00:01:23.649>to <00:01:23.825>show <00:01:24.000>you <00:01:24.175>here <00:01:24.350>mostly <00:01:24.524>focused <00:01:24.700>on

27
00:01:26.500 --> 00:01:30.000
<00:01:26.500>creating <00:01:26.733>custom <00:01:26.966>Sonic <00:01:27.200>Cube <00:01:27.433>roles <00:01:27.666>in <00:01:27.900>Java.

28
00:01:31.300 --> 00:01:33.200
<00:01:31.300>our <00:01:31.649>agenda <00:01:32.000>for <00:01:32.350>today <00:01:32.700>is

29
00:01:35.100 --> 00:01:38.200
<00:01:35.100>going <00:01:35.274>through <00:01:35.449>first <00:01:35.625>of <00:01:35.800>all <00:01:35.975>our <00:01:36.149>quality <00:01:36.324>approach. <00:01:36.500>So

30
00:01:38.200 --> 00:01:41.500
<00:01:38.200>we <00:01:38.400>will <00:01:38.600>start <00:01:38.800>high <00:01:39.000>level <00:01:39.200>and <00:01:39.400>I'm <00:01:39.600>gonna

31
00:01:41.500 --> 00:01:44.700
<00:01:41.500>tell <00:01:41.700>you <00:01:41.900>a <00:01:42.100>story <00:01:42.300>how <00:01:42.500>we <00:01:42.700>improved <00:01:42.900>our

32
00:01:44.700 --> 00:01:47.500
<00:01:44.700>code <00:01:44.980>quality <00:01:45.260>internally. <00:01:45.540>It <00:01:45.820>took <00:01:46.100>some

33
00:01:47.500 --> 00:01:51.000
<00:01:47.500>months <00:01:47.700>and <00:01:47.900>years. <00:01:48.100>It <00:01:48.300>didn't <00:01:48.500>happen <00:01:48.700>instantly. <00:01:48.900>So

34
00:01:50.900 --> 00:01:54.000
<00:01:50.900>I <00:01:51.100>will <00:01:51.300>try <00:01:51.500>to <00:01:51.700>show <00:01:51.900>you <00:01:52.100>a <00:01:52.300>step

35
00:01:53.200 --> 00:01:56.200
<00:01:53.200>by <00:01:53.355>step <00:01:53.511>approach <00:01:53.666>of <00:01:53.822>some <00:01:53.977>steps <00:01:54.133>that <00:01:54.288>we <00:01:54.444>took <00:01:54.600>to

36
00:01:56.200 --> 00:01:59.100
<00:01:56.200>improve <00:01:56.400>our <00:01:56.600>code <00:01:56.800>quality. <00:01:57.000>We <00:01:57.200>are <00:01:57.400>a <00:01:57.600>big

37
00:01:59.100 --> 00:02:02.100
<00:01:59.100>company. <00:01:59.255>We <00:01:59.411>do <00:01:59.566>a <00:01:59.722>lot <00:01:59.877>of <00:02:00.033>projects <00:02:00.188>and <00:02:00.344>it's <00:02:00.500>not

38
00:02:02.100 --> 00:02:05.500
<00:02:02.100>so <00:02:02.300>simple <00:02:02.500>to <00:02:02.699>to <00:02:02.899>maintain <00:02:03.100>high <00:02:03.300>quality <00:02:03.500>and

39
00:02:05.500 --> 00:02:09.300
<00:02:05.500>align <00:02:05.733>developers <00:02:05.966>and <00:02:06.200>teams <00:02:06.433>across <00:02:06.666>projects <00:02:06.900>to

40
00:02:08.300 --> 00:02:11.800
<00:02:08.300>adhere <00:02:08.500>to <00:02:08.700>the <00:02:08.900>same <00:02:09.100>for <00:02:09.300>example <00:02:09.500>coding <00:02:09.700>guidelines,

41
00:02:11.800 --> 00:02:12.600
<00:02:11.800>which <00:02:11.980>is <00:02:12.160>going <00:02:12.340>to <00:02:12.519>be

42
00:02:13.300 --> 00:02:16.400
<00:02:13.300>The <00:02:13.500>next <00:02:13.700>topic <00:02:13.900>and <00:02:14.100>then <00:02:14.300>actually <00:02:14.500>the <00:02:14.700>key

43
00:02:16.400 --> 00:02:19.300
<00:02:16.400>point <00:02:16.633>of <00:02:16.866>this <00:02:17.100>lecture <00:02:17.333>is <00:02:17.566>digging <00:02:17.800>into

44
00:02:19.300 --> 00:02:22.300
<00:02:19.300>how <00:02:19.533>to <00:02:19.766>ensure <00:02:20.000>code <00:02:20.233>quality <00:02:20.466>because <00:02:20.700>it's

45
00:02:22.300 --> 00:02:25.300
<00:02:22.300>one <00:02:22.427>thing <00:02:22.554>to <00:02:22.681>have <00:02:22.809>a <00:02:22.936>set <00:02:23.063>of <00:02:23.190>rules. <00:02:23.318>It's <00:02:23.445>quite <00:02:23.572>another <00:02:23.700>thing

46
00:02:25.300 --> 00:02:28.400
<00:02:25.300>to <00:02:25.455>have <00:02:25.611>actually <00:02:25.766>everyone <00:02:25.922>in <00:02:26.077>the <00:02:26.233>company <00:02:26.388>applying <00:02:26.544>those <00:02:26.700>rules.

47
00:02:29.100 --> 00:02:32.200
<00:02:29.100>So <00:02:29.239>we're <00:02:29.380>going <00:02:29.519>to <00:02:29.660>dig <00:02:29.799>into <00:02:29.940>static <00:02:30.079>code <00:02:30.220>analysis <00:02:30.359>on <00:02:30.500>our

48
00:02:32.200 --> 00:02:35.800
<00:02:32.200>Cube. <00:02:32.316>We're <00:02:32.433>going <00:02:32.549>to <00:02:32.666>talk <00:02:32.783>about <00:02:32.899>how <00:02:33.016>to <00:02:33.133>go <00:02:33.250>beyond <00:02:33.366>just <00:02:33.483>code <00:02:33.600>analysis

49
00:02:35.800 --> 00:02:38.900
<00:02:35.800>but <00:02:36.033>also <00:02:36.266>code <00:02:36.500>architecture <00:02:36.733>checking <00:02:36.966>code <00:02:37.200>architecture

50
00:02:38.900 --> 00:02:41.700
<00:02:38.900>and <00:02:39.075>how <00:02:39.250>to <00:02:39.425>how <00:02:39.600>to <00:02:39.775>customize <00:02:39.950>that <00:02:40.125>because <00:02:40.300>for

51
00:02:41.700 --> 00:02:44.400
<00:02:41.700>us <00:02:41.839>this <00:02:41.980>wasn't <00:02:42.119>enough <00:02:42.260>to <00:02:42.399>just <00:02:42.540>go <00:02:42.679>with <00:02:42.820>a <00:02:42.959>out <00:02:43.100>of

52
00:02:44.400 --> 00:02:47.600
<00:02:44.400>the <00:02:44.633>box <00:02:44.866>stuff. <00:02:45.100>And <00:02:45.333>yeah <00:02:45.566>at <00:02:45.800>the

53
00:02:47.600 --> 00:02:50.900
<00:02:47.600>end <00:02:47.716>we're <00:02:47.833>gonna <00:02:47.950>have <00:02:48.066>a <00:02:48.183>live <00:02:48.299>demo <00:02:48.416>where <00:02:48.533>you <00:02:48.650>will <00:02:48.766>see <00:02:48.883>that <00:02:49.000>it's

54
00:02:50.900 --> 00:02:53.100
<00:02:50.900>not <00:02:51.075>that <00:02:51.250>hard <00:02:51.425>at <00:02:51.600>all <00:02:51.775>to <00:02:51.950>develop <00:02:52.125>your <00:02:52.300>own

55
00:02:53.100 --> 00:02:56.000
<00:02:53.100>custom <00:02:53.333>scenarials. <00:02:53.566>We'll <00:02:53.799>of <00:02:54.033>course <00:02:54.266>try <00:02:54.500>to

56
00:02:56.300 --> 00:02:59.400
<00:02:56.300>leave <00:02:56.440>some <00:02:56.580>time <00:02:56.720>for <00:02:56.860>questions <00:02:57.000>at <00:02:57.140>the <00:02:57.280>end. <00:02:57.420>So <00:02:57.560>let's <00:02:57.700>dig

57
00:02:59.400 --> 00:02:59.600
in

58
00:03:00.100 --> 00:03:03.500
<00:03:00.100>I <00:03:00.299>always <00:03:00.500>like <00:03:00.700>to <00:03:00.900>start <00:03:01.100>a <00:03:01.299>lecture <00:03:01.500>explaining

59
00:03:03.500 --> 00:03:07.100
<00:03:03.500>why <00:03:03.733>why <00:03:03.966>do <00:03:04.200>we <00:03:04.433>even <00:03:04.666>need <00:03:04.900>standardization

60
00:03:06.100 --> 00:03:08.100
<00:03:06.100>and <00:03:06.799>code <00:03:07.500>checks?

61
00:03:08.700 --> 00:03:11.500
<00:03:08.700>And <00:03:08.980>I <00:03:09.260>think <00:03:09.540>we <00:03:09.820>that <00:03:10.100>there

62
00:03:11.500 --> 00:03:13.300
<00:03:11.500>are <00:03:11.780>really <00:03:12.060>a <00:03:12.340>lot <00:03:12.620>of <00:03:12.900>reasons.

63
00:03:14.100 --> 00:03:18.400
<00:03:14.100>Why <00:03:14.227>we <00:03:14.354>need <00:03:14.481>it <00:03:14.609>so <00:03:14.736>I <00:03:14.863>named <00:03:14.990>five <00:03:15.118>they're <00:03:15.245>probably <00:03:15.372>more. <00:03:15.500>So

64
00:03:17.400 --> 00:03:20.900
<00:03:17.400>what <00:03:17.633>we <00:03:17.866>wanted <00:03:18.100>to <00:03:18.333>achieve <00:03:18.566>internally <00:03:18.800>as

65
00:03:20.900 --> 00:03:23.400
<00:03:20.900>a <00:03:21.133>company <00:03:21.366>is <00:03:21.600>of <00:03:21.833>course, <00:03:22.066>we <00:03:22.300>wanted

66
00:03:23.400 --> 00:03:26.400
<00:03:23.400>our <00:03:23.555>customers <00:03:23.711>to <00:03:23.866>perceive <00:03:24.022>us <00:03:24.177>as <00:03:24.333>a <00:03:24.488>company <00:03:24.644>who <00:03:24.800>is

67
00:03:26.400 --> 00:03:29.800
<00:03:26.400>developing <00:03:26.633>high <00:03:26.866>quality <00:03:27.100>software <00:03:27.333>and <00:03:27.566>the <00:03:27.800>company

68
00:03:29.800 --> 00:03:32.400
<00:03:29.800>and <00:03:29.955>the <00:03:30.111>customers. <00:03:30.266>Will <00:03:30.422>of <00:03:30.577>course <00:03:30.733>see <00:03:30.888>this <00:03:31.044>if <00:03:31.200>we

69
00:03:32.400 --> 00:03:35.200
<00:03:32.400>create <00:03:32.633>a <00:03:32.866>solution <00:03:33.100>that <00:03:33.333>they <00:03:33.566>don't <00:03:33.800>like

70
00:03:35.200 --> 00:03:38.200
<00:03:35.200>and <00:03:35.327>if <00:03:35.454>they <00:03:35.581>don't <00:03:35.709>see <00:03:35.836>a <00:03:35.963>lot <00:03:36.090>of <00:03:36.218>bugs <00:03:36.345>that's <00:03:36.472>gonna <00:03:36.600>be

71
00:03:38.200 --> 00:03:41.400
<00:03:38.200>there <00:03:38.339>perceived <00:03:38.480>quality. <00:03:38.619>Of <00:03:38.760>course, <00:03:38.899>we <00:03:39.040>can <00:03:39.179>show <00:03:39.320>them, <00:03:39.459>you <00:03:39.600>know

72
00:03:41.400 --> 00:03:44.500
<00:03:41.400>sonar <00:03:41.555>Cube <00:03:41.711>dashboard, <00:03:41.866>but <00:03:42.022>that's <00:03:42.177>probably <00:03:42.333>doesn't <00:03:42.488>doesn't <00:03:42.644>mean <00:03:42.800>that

73
00:03:44.500 --> 00:03:47.300
<00:03:44.500>much <00:03:44.627>to <00:03:44.754>them <00:03:44.881>on <00:03:45.009>the <00:03:45.136>other <00:03:45.263>hand. <00:03:45.390>We <00:03:45.518>also <00:03:45.645>have <00:03:45.772>developers. <00:03:45.900>So

74
00:03:47.300 --> 00:03:50.100
<00:03:47.300>we <00:03:47.500>of <00:03:47.700>course <00:03:47.900>as <00:03:48.100>a <00:03:48.300>company <00:03:48.500>want <00:03:48.700>to

75
00:03:50.100 --> 00:03:53.200
<00:03:50.100>attract <00:03:50.299>great <00:03:50.500>developers <00:03:50.700>and <00:03:50.900>I <00:03:51.100>think <00:03:51.299>in <00:03:51.500>order

76
00:03:53.200 --> 00:03:56.400
<00:03:53.200>to <00:03:53.339>attract <00:03:53.480>great <00:03:53.619>developers, <00:03:53.760>we <00:03:53.899>need <00:03:54.040>to <00:03:54.179>have <00:03:54.320>certain <00:03:54.459>processes <00:03:54.600>in

77
00:03:56.400 --> 00:04:00.100
<00:03:56.400>the <00:03:56.575>company <00:03:56.750>to <00:03:56.925>ensure <00:03:57.100>height <00:03:57.275>code <00:03:57.450>quality <00:03:57.625>and <00:03:57.800>also

78
00:03:59.100 --> 00:04:02.100
<00:03:59.100>something <00:03:59.299>that <00:03:59.500>that <00:03:59.700>I'm <00:03:59.900>going <00:04:00.100>to <00:04:00.299>show <00:04:00.500>you

79
00:04:02.100 --> 00:04:05.200
<00:04:02.100>today. <00:04:02.333>The <00:04:02.566>third <00:04:02.799>thing <00:04:03.033>we <00:04:03.266>wanted <00:04:03.500>to

80
00:04:05.200 --> 00:04:08.400
<00:04:05.200>do <00:04:05.480>is <00:04:05.760>learn <00:04:06.040>from <00:04:06.320>our <00:04:06.600>previous

81
00:04:08.400 --> 00:04:11.700
<00:04:08.400>mistakes <00:04:08.750>and <00:04:09.100>more <00:04:09.450>importantly <00:04:09.800>even

82
00:04:11.700 --> 00:04:14.000
<00:04:11.700>stop <00:04:12.049>repeating <00:04:12.399>the <00:04:12.750>same <00:04:13.100>mist.

83
00:04:14.200 --> 00:04:17.300
<00:04:14.200>On <00:04:14.339>multiple <00:04:14.480>projects <00:04:14.619>right? <00:04:14.760>We <00:04:14.899>wanted <00:04:15.040>to <00:04:15.179>learn <00:04:15.320>better <00:04:15.459>from <00:04:15.600>each

84
00:04:17.300 --> 00:04:20.600
<00:04:17.300>other <00:04:17.455>because <00:04:17.611>we <00:04:17.766>saw <00:04:17.922>that <00:04:18.077>we <00:04:18.233>have <00:04:18.388>the <00:04:18.544>same <00:04:18.700>problems

85
00:04:20.600 --> 00:04:23.700
<00:04:20.600>on <00:04:20.950>multiple <00:04:21.300>projects. <00:04:21.650>So <00:04:22.000>we

86
00:04:23.700 --> 00:04:24.100
<00:04:23.700>wanted <00:04:24.060>to

87
00:04:24.900 --> 00:04:27.400
<00:04:24.900>Improve <00:04:25.250>on <00:04:25.599>that <00:04:25.950>we <00:04:26.299>wanted

88
00:04:27.400 --> 00:04:30.600
<00:04:27.400>to <00:04:27.633>set <00:04:27.866>some <00:04:28.099>best <00:04:28.333>practices <00:04:28.566>for <00:04:28.799>the

89
00:04:30.600 --> 00:04:34.100
<00:04:30.600>whole <00:04:30.800>company <00:04:31.000>and <00:04:31.200>align <00:04:31.400>on <00:04:31.600>them <00:04:31.800>because <00:04:32.000>it's

90
00:04:33.100 --> 00:04:36.400
<00:04:33.100>one <00:04:33.275>thing <00:04:33.450>for <00:04:33.625>me <00:04:33.800>to <00:04:33.975>set <00:04:34.150>some <00:04:34.325>guidelines <00:04:34.500>and

91
00:04:36.400 --> 00:04:39.100
<00:04:36.400>say <00:04:36.539>hey <00:04:36.679>you <00:04:36.820>got <00:04:36.960>now <00:04:37.099>you <00:04:37.239>guys <00:04:37.380>need <00:04:37.520>to <00:04:37.659>follow <00:04:37.799>it

92
00:04:39.100 --> 00:04:42.300
<00:04:39.100>quite <00:04:39.227>another <00:04:39.354>is <00:04:39.481>is <00:04:39.609>you <00:04:39.736>know <00:04:39.863>to <00:04:39.990>align <00:04:40.118>all <00:04:40.245>together <00:04:40.372>on <00:04:40.500>what

93
00:04:42.300 --> 00:04:45.700
<00:04:42.300>is <00:04:42.500>what <00:04:42.700>is <00:04:42.900>the <00:04:43.100>best <00:04:43.300>practice <00:04:43.500>in <00:04:43.700>what

94
00:04:45.700 --> 00:04:48.700
<00:04:45.700>are <00:04:45.840>some <00:04:45.979>things <00:04:46.120>we <00:04:46.260>really <00:04:46.400>want <00:04:46.539>to <00:04:46.680>make <00:04:46.820>sure <00:04:46.960>work <00:04:47.099>the

95
00:04:48.700 --> 00:04:49.600
<00:04:48.700>same <00:04:48.902>way <00:04:49.105>on <00:04:49.307>all <00:04:49.510>projects.

96
00:04:50.700 --> 00:04:54.200
<00:04:50.700>And <00:04:50.840>the <00:04:50.979>last <00:04:51.120>thing <00:04:51.260>I <00:04:51.400>want <00:04:51.539>to <00:04:51.680>mention <00:04:51.820>is <00:04:51.960>the <00:04:52.099>new

97
00:04:53.200 --> 00:04:56.600
<00:04:53.200>Joiner <00:04:53.479>and <00:04:53.760>there <00:04:54.039>or <00:04:54.320>onboarding <00:04:54.599>experience,

98
00:04:56.600 --> 00:05:00.100
<00:04:56.600>right? <00:04:56.800>I <00:04:57.000>think <00:04:57.200>every <00:04:57.400>developer <00:04:57.600>has <00:04:57.800>saved <00:04:58.000>his

99
00:04:59.100 --> 00:05:02.200
<00:04:59.100>previous <00:04:59.450>projects <00:04:59.800>and <00:05:00.150>you <00:05:00.500>are

100
00:05:02.200 --> 00:05:05.800
<00:05:02.200>at <00:05:02.327>some <00:05:02.454>point <00:05:02.581>referring <00:05:02.709>to <00:05:02.836>a <00:05:02.963>previous <00:05:03.090>projects <00:05:03.218>and <00:05:03.345>maybe <00:05:03.472>copying <00:05:03.599>some

101
00:05:05.800 --> 00:05:08.100
<00:05:05.800>things <00:05:05.927>that <00:05:06.054>were <00:05:06.181>good <00:05:06.309>and <00:05:06.436>maybe <00:05:06.563>reworking <00:05:06.690>some <00:05:06.818>things <00:05:06.945>that <00:05:07.072>were <00:05:07.200>not

102
00:05:08.100 --> 00:05:11.200
<00:05:08.100>so <00:05:08.255>good. <00:05:08.411>So <00:05:08.566>we <00:05:08.722>also <00:05:08.877>want <00:05:09.033>our <00:05:09.188>new <00:05:09.344>joiners <00:05:09.500>to

103
00:05:11.200 --> 00:05:15.700
<00:05:11.200>learn <00:05:11.340>from <00:05:11.479>our <00:05:11.620>previous <00:05:11.760>experience. <00:05:11.900>We <00:05:12.039>don't <00:05:12.180>want <00:05:12.320>them <00:05:12.460>to <00:05:12.599>experience

104
00:05:14.700 --> 00:05:17.400
<00:05:14.700>all <00:05:15.050>the <00:05:15.400>stuff. <00:05:15.750>We <00:05:16.099>did

105
00:05:17.400 --> 00:05:20.300
<00:05:17.400>bad. <00:05:17.575>We <00:05:17.750>want <00:05:17.924>to <00:05:18.099>show <00:05:18.275>them. <00:05:18.450>What <00:05:18.625>was <00:05:18.799>good.

106
00:05:20.300 --> 00:05:23.800
<00:05:20.300>What <00:05:20.500>was <00:05:20.700>bad <00:05:20.900>and <00:05:21.100>we <00:05:21.300>want <00:05:21.500>we <00:05:21.700>we

107
00:05:23.800 --> 00:05:25.700
<00:05:23.800>don't <00:05:23.975>want <00:05:24.150>them <00:05:24.325>to <00:05:24.500>repeat <00:05:24.675>all <00:05:24.850>of <00:05:25.025>our <00:05:25.200>mistakes.

108
00:05:26.700 --> 00:05:30.300
<00:05:26.700>So <00:05:26.875>these <00:05:27.050>are <00:05:27.224>these <00:05:27.400>are <00:05:27.575>my <00:05:27.750>five <00:05:27.925>reasons <00:05:28.099>why

109
00:05:29.300 --> 00:05:33.500
<00:05:29.300>we <00:05:29.650>did <00:05:30.000>this <00:05:30.350>and <00:05:30.700>also

110
00:05:32.500 --> 00:05:35.400
<00:05:32.500>before <00:05:32.733>I <00:05:32.966>dig <00:05:33.200>into <00:05:33.433>content. <00:05:33.666>I <00:05:33.900>really

111
00:05:35.400 --> 00:05:38.600
<00:05:35.400>like <00:05:35.679>this <00:05:35.960>statement <00:05:36.239>from <00:05:36.520>Martin <00:05:36.799>Fowler.

112
00:05:38.600 --> 00:05:41.400
<00:05:38.600>One <00:05:38.833>of <00:05:39.066>my <00:05:39.300>favorite <00:05:39.533>ones <00:05:39.766>where <00:05:40.000>he

113
00:05:41.400 --> 00:05:45.000
<00:05:41.400>said <00:05:41.555>at <00:05:41.711>any <00:05:41.866>fool <00:05:42.022>can <00:05:42.177>write <00:05:42.333>code <00:05:42.488>that <00:05:42.644>computer <00:05:42.799>can

114
00:05:44.200 --> 00:05:47.600
<00:05:44.200>understand <00:05:44.355>and <00:05:44.511>this <00:05:44.666>is <00:05:44.822>really <00:05:44.977>the <00:05:45.133>case <00:05:45.288>today <00:05:45.444>you <00:05:45.599>have

115
00:05:47.600 --> 00:05:50.600
<00:05:47.600>so <00:05:47.950>Advanced <00:05:48.300>development <00:05:48.650>tools <00:05:49.000>we

116
00:05:50.600 --> 00:05:53.300
<00:05:50.600>saw <00:05:50.755>today <00:05:50.911>in <00:05:51.066>the <00:05:51.222>in <00:05:51.377>the <00:05:51.533>opening <00:05:51.688>on <00:05:51.844>we <00:05:52.000>are

117
00:05:53.300 --> 00:05:56.600
<00:05:53.300>developers <00:05:53.455>that <00:05:53.611>are <00:05:53.766>even <00:05:53.922>tools <00:05:54.077>now <00:05:54.233>that <00:05:54.388>can <00:05:54.544>code <00:05:54.700>some

118
00:05:56.600 --> 00:05:59.400
<00:05:56.600>parts <00:05:56.800>for <00:05:57.000>you. <00:05:57.200>So <00:05:57.400>really <00:05:57.600>any <00:05:57.800>idiots <00:05:58.000>today

119
00:05:59.400 --> 00:06:02.500
<00:05:59.400>can <00:05:59.539>write <00:05:59.679>the <00:05:59.820>codes <00:05:59.960>that <00:06:00.099>compiles <00:06:00.239>and <00:06:00.380>that <00:06:00.520>works, <00:06:00.659>right? <00:06:00.799>That's

120
00:06:02.500 --> 00:06:05.300
<00:06:02.500>not <00:06:02.733>a <00:06:02.966>problem. <00:06:03.200>What <00:06:03.433>is <00:06:03.666>the <00:06:03.900>challenge

121
00:06:05.300 --> 00:06:08.400
<00:06:05.300>of <00:06:05.533>modern <00:06:05.766>programming <00:06:06.000>is <00:06:06.233>that <00:06:06.466>you <00:06:06.700>write

122
00:06:08.400 --> 00:06:11.400
<00:06:08.400>codes <00:06:08.575>that <00:06:08.750>other <00:06:08.924>people <00:06:09.099>can <00:06:09.275>understand <00:06:09.450>so <00:06:09.625>the <00:06:09.799>code

123
00:06:11.400 --> 00:06:14.200
<00:06:11.400>that <00:06:11.555>you <00:06:11.711>write <00:06:11.866>today <00:06:12.022>when <00:06:12.177>someone <00:06:12.333>else <00:06:12.488>opens <00:06:12.644>into <00:06:12.799>five

124
00:06:14.200 --> 00:06:17.600
<00:06:14.200>years <00:06:14.307>and <00:06:14.415>need <00:06:14.523>to <00:06:14.630>fix <00:06:14.738>the <00:06:14.846>bug <00:06:14.953>is <00:06:15.061>that <00:06:15.169>they <00:06:15.276>can <00:06:15.384>find <00:06:15.492>they <00:06:15.599>way

125
00:06:17.600 --> 00:06:19.400
<00:06:17.600>around <00:06:17.880>it. <00:06:18.160>That <00:06:18.440>is <00:06:18.720>the <00:06:19.000>challenge.

126
00:06:21.900 --> 00:06:24.600
<00:06:21.900>So <00:06:22.133>topic <00:06:22.366>number <00:06:22.599>one <00:06:22.833>quality <00:06:23.066>approach. <00:06:23.299>We

127
00:06:24.600 --> 00:06:27.200
<00:06:24.600>are <00:06:24.800>starting <00:06:25.000>really <00:06:25.200>high <00:06:25.400>level <00:06:25.600>and <00:06:25.800>I <00:06:26.000>would

128
00:06:27.200 --> 00:06:30.800
<00:06:27.200>really <00:06:27.375>like <00:06:27.550>to <00:06:27.724>show <00:06:27.900>you <00:06:28.075>how <00:06:28.250>we <00:06:28.425>approached <00:06:28.599>quality

129
00:06:30.800 --> 00:06:33.800
<00:06:30.800>and <00:06:31.033>how <00:06:31.266>we <00:06:31.500>establish <00:06:31.733>the <00:06:31.966>company-wide <00:06:32.200>quality

130
00:06:33.800 --> 00:06:35.000
<00:06:33.800>assurance <00:06:34.880>approach.

131
00:06:37.200 --> 00:06:37.300
So

132
00:06:39.200 --> 00:06:42.700
<00:06:39.200>our <00:06:39.340>quality <00:06:39.479>approach <00:06:39.620>is <00:06:39.760>of <00:06:39.900>course <00:06:40.039>here <00:06:40.180>to <00:06:40.320>ensure <00:06:40.460>high <00:06:40.599>quality

133
00:06:42.700 --> 00:06:45.300
<00:06:42.700>level <00:06:42.979>on <00:06:43.260>projects <00:06:43.539>and <00:06:43.820>we <00:06:44.099>see

134
00:06:45.300 --> 00:06:47.800
<00:06:45.300>three <00:06:45.580>things <00:06:45.860>as <00:06:46.140>as <00:06:46.420>very <00:06:46.700>important.

135
00:06:48.900 --> 00:06:52.100
<00:06:48.900>First <00:06:49.133>one <00:06:49.366>is <00:06:49.599>that <00:06:49.833>quality <00:06:50.066>is <00:06:50.299>everyone's

136
00:06:51.100 --> 00:06:54.100
<00:06:51.100>responsibility <00:06:51.800>most <00:06:52.500>of

137
00:06:54.100 --> 00:06:57.200
<00:06:54.100>us <00:06:54.240>work <00:06:54.380>in <00:06:54.520>some <00:06:54.660>kind <00:06:54.800>of <00:06:54.940>agile <00:06:55.080>teams. <00:06:55.220>Most <00:06:55.360>of <00:06:55.500>us

138
00:06:57.200 --> 00:07:00.200
<00:06:57.200>have <00:06:57.375>quality <00:06:57.550>engineers <00:06:57.724>in <00:06:57.900>those <00:06:58.075>teams <00:06:58.250>and <00:06:58.425>it's <00:06:58.599>not

139
00:07:00.200 --> 00:07:03.800
<00:07:00.200>quality <00:07:00.355>is <00:07:00.511>not <00:07:00.666>just <00:07:00.822>responsibility <00:07:00.977>of <00:07:01.133>the <00:07:01.288>quality <00:07:01.444>engineer <00:07:01.599>quality

140
00:07:03.800 --> 00:07:06.600
<00:07:03.800>is <00:07:04.080>the <00:07:04.360>responsibility <00:07:04.640>of <00:07:04.920>everyone <00:07:05.200>in

141
00:07:06.600 --> 00:07:09.300
<00:07:06.600>the <00:07:06.775>team. <00:07:06.950>And <00:07:07.125>of <00:07:07.300>course <00:07:07.475>in <00:07:07.650>the <00:07:07.825>team, <00:07:08.000>we

142
00:07:09.300 --> 00:07:12.300
<00:07:09.300>will <00:07:09.416>have <00:07:09.533>people <00:07:09.650>who <00:07:09.766>really <00:07:09.883>specialize <00:07:10.000>in <00:07:10.116>quality <00:07:10.233>because <00:07:10.350>we <00:07:10.466>need <00:07:10.583>people <00:07:10.700>who

143
00:07:12.300 --> 00:07:15.500
<00:07:12.300>specialize <00:07:12.416>in <00:07:12.533>I <00:07:12.650>don't <00:07:12.766>know <00:07:12.883>UI <00:07:13.000>testing <00:07:13.116>we <00:07:13.233>need <00:07:13.350>people <00:07:13.466>who <00:07:13.583>specialize <00:07:13.700>in

144
00:07:15.500 --> 00:07:18.900
<00:07:15.500>security <00:07:15.850>testing <00:07:16.200>with <00:07:16.550>everything <00:07:16.900>going

145
00:07:18.900 --> 00:07:21.700
<00:07:18.900>on. <00:07:19.055>It's <00:07:19.211>it's <00:07:19.366>really <00:07:19.522>hard <00:07:19.677>to <00:07:19.833>be <00:07:19.988>a <00:07:20.144>specialist <00:07:20.299>like

146
00:07:21.700 --> 00:07:24.500
<00:07:21.700>everywhere. <00:07:21.900>So <00:07:22.099>so <00:07:22.300>that's <00:07:22.500>only <00:07:22.700>normal <00:07:22.900>but <00:07:23.099>the

147
00:07:24.500 --> 00:07:25.700
<00:07:24.500>responsibilities <00:07:24.770>on <00:07:25.040>the <00:07:25.310>whole <00:07:25.580>team

148
00:07:26.500 --> 00:07:29.600
<00:07:26.500>Second <00:07:26.700>thing <00:07:26.900>we <00:07:27.100>did <00:07:27.300>we <00:07:27.500>made <00:07:27.700>testing <00:07:27.900>part

149
00:07:29.600 --> 00:07:32.500
<00:07:29.600>of <00:07:29.833>the <00:07:30.066>development <00:07:30.300>testing <00:07:30.533>is <00:07:30.766>not <00:07:31.000>just

150
00:07:32.500 --> 00:07:35.800
<00:07:32.500>the <00:07:32.700>phase <00:07:32.900>that <00:07:33.100>you <00:07:33.300>do <00:07:33.500>from <00:07:33.700>Once <00:07:33.900>once

151
00:07:35.800 --> 00:07:38.400
<00:07:35.800>in <00:07:35.916>a <00:07:36.033>while <00:07:36.150>testing <00:07:36.266>needs <00:07:36.383>to <00:07:36.500>be <00:07:36.616>done <00:07:36.733>all <00:07:36.850>the <00:07:36.966>time. <00:07:37.083>So <00:07:37.200>we

152
00:07:38.400 --> 00:07:41.400
<00:07:38.400>Define <00:07:38.633>actually <00:07:38.866>development <00:07:39.099>as <00:07:39.333>testing <00:07:39.566>and <00:07:39.799>coding.

153
00:07:42.100 --> 00:07:45.700
<00:07:42.100>And <00:07:42.240>of <00:07:42.380>course, <00:07:42.520>we <00:07:42.660>have <00:07:42.800>a <00:07:42.940>test <00:07:43.080>and <00:07:43.220>test <00:07:43.360>automation <00:07:43.500>strategy

154
00:07:45.700 --> 00:07:48.200
<00:07:45.700>like <00:07:46.400>centrally <00:07:47.099>created

155
00:07:48.200 --> 00:07:51.100
<00:07:48.200>as <00:07:48.316>a <00:07:48.433>template <00:07:48.550>and <00:07:48.666>we <00:07:48.783>can <00:07:48.900>of <00:07:49.016>course <00:07:49.133>tweak <00:07:49.250>it <00:07:49.366>based <00:07:49.483>based <00:07:49.599>on

156
00:07:51.100 --> 00:07:51.700
<00:07:51.100>the <00:07:51.370>project <00:07:51.640>needs.

157
00:07:53.700 --> 00:07:56.200
<00:07:53.700>To <00:07:53.900>be <00:07:54.099>good <00:07:54.300>at <00:07:54.500>testing. <00:07:54.700>We <00:07:54.900>also <00:07:55.099>need

158
00:07:56.200 --> 00:07:59.500
<00:07:56.200>a <00:07:56.340>high <00:07:56.479>level <00:07:56.620>of <00:07:56.760>automation. <00:07:56.900>Otherwise, <00:07:57.039>it <00:07:57.180>would <00:07:57.320>just <00:07:57.460>take <00:07:57.599>us

159
00:07:59.500 --> 00:07:59.900
<00:07:59.500>too <00:07:59.680>much <00:07:59.859>time.

160
00:08:00.500 --> 00:08:04.600
<00:08:00.500>So <00:08:00.675>we <00:08:00.850>have <00:08:01.025>CI <00:08:01.200>tools <00:08:01.375>we <00:08:01.550>have <00:08:01.725>we <00:08:01.900>have

161
00:08:04.600 --> 00:08:07.900
<00:08:04.600>ways <00:08:04.833>to <00:08:05.066>to <00:08:05.300>get <00:08:05.533>quick <00:08:05.766>feedback <00:08:06.000>to

162
00:08:07.900 --> 00:08:11.100
<00:08:07.900>get <00:08:08.075>alerts <00:08:08.250>if <00:08:08.424>anything <00:08:08.599>is <00:08:08.775>not <00:08:08.950>working <00:08:09.125>correctly <00:08:09.299>and

163
00:08:10.100 --> 00:08:13.500
<00:08:10.100>you <00:08:10.300>need <00:08:10.500>to <00:08:10.700>have <00:08:10.900>that <00:08:11.100>in <00:08:11.300>order <00:08:11.500>to

164
00:08:13.500 --> 00:08:16.300
<00:08:13.500>to <00:08:13.675>be <00:08:13.850>able <00:08:14.025>to <00:08:14.200>do <00:08:14.375>high <00:08:14.550>quality <00:08:14.725>in <00:08:14.900>a

165
00:08:16.300 --> 00:08:19.400
<00:08:16.300>fast <00:08:16.440>way. <00:08:16.580>Otherwise, <00:08:16.720>it <00:08:16.860>slows <00:08:17.000>you <00:08:17.140>down. <00:08:17.280>But <00:08:17.420>this <00:08:17.560>way <00:08:17.700>it

166
00:08:19.400 --> 00:08:21.800
<00:08:19.400>actually <00:08:19.679>speeds <00:08:19.960>speeds <00:08:20.239>up <00:08:20.520>your <00:08:20.799>development.

167
00:08:24.700 --> 00:08:27.400
<00:08:24.700>So <00:08:24.816>that <00:08:24.933>was <00:08:25.050>that <00:08:25.166>was <00:08:25.283>the <00:08:25.400>quality <00:08:25.516>approach <00:08:25.633>and <00:08:25.750>this <00:08:25.866>is <00:08:25.983>our <00:08:26.099>test

168
00:08:27.400 --> 00:08:30.200
<00:08:27.400>automation <00:08:27.633>strategy <00:08:27.866>most <00:08:28.099>of <00:08:28.333>the <00:08:28.566>time <00:08:28.799>we

169
00:08:30.200 --> 00:08:33.400
<00:08:30.200>do <00:08:30.433>this <00:08:30.666>five <00:08:30.900>types <00:08:31.133>of <00:08:31.366>tests <00:08:31.599>that

170
00:08:33.400 --> 00:08:34.800
<00:08:33.400>we <00:08:33.714>integrate <00:08:34.030>into <00:08:34.344>our <00:08:34.659>CI.

171
00:08:35.400 --> 00:08:38.700
<00:08:35.400>First <00:08:35.555>of <00:08:35.711>all, <00:08:35.866>we <00:08:36.022>do <00:08:36.177>static <00:08:36.333>code <00:08:36.488>analysis <00:08:36.644>we <00:08:36.799>used

172
00:08:38.700 --> 00:08:41.200
<00:08:38.700>to <00:08:38.933>do <00:08:39.166>this <00:08:39.400>nightly <00:08:39.633>these <00:08:39.866>days <00:08:40.100>we

173
00:08:41.200 --> 00:08:44.200
<00:08:41.200>do <00:08:41.300>this <00:08:41.400>on <00:08:41.500>every <00:08:41.600>pull <00:08:41.700>request <00:08:41.800>and <00:08:41.900>this <00:08:42.000>is <00:08:42.100>something <00:08:42.200>I'm <00:08:42.300>going <00:08:42.400>to <00:08:42.500>talk <00:08:42.600>about

174
00:08:44.200 --> 00:08:44.500
later.

175
00:08:45.300 --> 00:08:48.400
<00:08:45.300>Of <00:08:45.455>course, <00:08:45.611>we <00:08:45.766>do <00:08:45.922>unit <00:08:46.077>testing <00:08:46.233>for <00:08:46.388>our <00:08:46.544>breaking <00:08:46.699>codes

176
00:08:48.400 --> 00:08:51.400
<00:08:48.400>and <00:08:48.574>we <00:08:48.750>run <00:08:48.925>unit <00:08:49.100>tests <00:08:49.275>during <00:08:49.449>build <00:08:49.625>time, <00:08:49.800>which

177
00:08:51.400 --> 00:08:54.500
<00:08:51.400>is <00:08:51.680>the <00:08:51.959>standard <00:08:52.240>thing <00:08:52.520>integration <00:08:52.800>tests.

178
00:08:54.500 --> 00:08:57.800
<00:08:54.500>We <00:08:54.675>run <00:08:54.850>most <00:08:55.025>of <00:08:55.200>the <00:08:55.375>time <00:08:55.550>nicely <00:08:55.725>same <00:08:55.900>as

179
00:08:57.800 --> 00:09:00.800
<00:08:57.800>UI <00:08:58.150>and <00:08:58.500>end-to-end <00:08:58.849>tests <00:08:59.199>used

180
00:09:00.800 --> 00:09:03.500
<00:09:00.800>for <00:09:01.000>regression. <00:09:01.199>And <00:09:01.400>then <00:09:01.599>we <00:09:01.800>do <00:09:02.000>performance <00:09:02.199>and

181
00:09:03.500 --> 00:09:06.200
<00:09:03.500>security <00:09:03.700>tests. <00:09:03.900>Sometimes <00:09:04.100>nightly. <00:09:04.300>Sometimes <00:09:04.500>weekly <00:09:04.700>depends <00:09:04.900>really

182
00:09:06.200 --> 00:09:09.300
<00:09:06.200>on <00:09:06.433>the <00:09:06.666>project <00:09:06.900>complexity <00:09:07.133>and <00:09:07.366>security <00:09:07.600>requirements.

183
00:09:12.100 --> 00:09:16.200
<00:09:12.100>The <00:09:12.380>test <00:09:12.660>distribution <00:09:12.940>is <00:09:13.220>this <00:09:13.500>I

184
00:09:15.200 --> 00:09:18.500
<00:09:15.200>believe <00:09:15.480>a <00:09:15.760>pyramids. <00:09:16.040>That's <00:09:16.320>also <00:09:16.600>I

185
00:09:18.500 --> 00:09:21.500
<00:09:18.500>believe <00:09:18.616>set <00:09:18.733>by <00:09:18.850>Martin <00:09:18.966>Fowler <00:09:19.083>some <00:09:19.200>time <00:09:19.316>ago <00:09:19.433>and <00:09:19.550>should <00:09:19.666>be <00:09:19.783>familiar <00:09:19.900>to

186
00:09:21.500 --> 00:09:24.600
<00:09:21.500>most <00:09:21.655>of <00:09:21.811>you <00:09:21.966>is <00:09:22.122>that <00:09:22.277>actually <00:09:22.433>most <00:09:22.588>of <00:09:22.744>the <00:09:22.900>tests

187
00:09:24.600 --> 00:09:27.600
<00:09:24.600>get <00:09:24.755>done <00:09:24.911>on <00:09:25.066>the <00:09:25.222>on <00:09:25.377>the <00:09:25.533>unit <00:09:25.688>level <00:09:25.844>so <00:09:26.000>around

188
00:09:27.600 --> 00:09:31.800
<00:09:27.600>70% <00:09:27.880>of <00:09:28.160>things <00:09:28.440>we <00:09:28.720>cover <00:09:29.000>with

189
00:09:30.800 --> 00:09:33.400
<00:09:30.800>unit <00:09:31.079>tests. <00:09:31.359>And <00:09:31.640>then <00:09:31.920>we <00:09:32.199>do

190
00:09:33.400 --> 00:09:36.700
<00:09:33.400>integration <00:09:33.555>tests <00:09:33.711>for <00:09:33.866>the <00:09:34.022>for <00:09:34.177>the <00:09:34.333>most <00:09:34.488>common <00:09:34.644>features <00:09:34.800>or

191
00:09:36.700 --> 00:09:39.400
<00:09:36.700>the <00:09:36.840>core <00:09:36.980>features <00:09:37.120>of <00:09:37.260>the <00:09:37.400>systems. <00:09:37.540>We <00:09:37.680>also <00:09:37.820>do <00:09:37.960>integration <00:09:38.100>testing

192
00:09:39.400 --> 00:09:42.900
<00:09:39.400>and <00:09:39.574>then <00:09:39.750>we <00:09:39.925>also <00:09:40.100>do <00:09:40.275>of <00:09:40.449>course <00:09:40.625>UI <00:09:40.800>testing

193
00:09:42.900 --> 00:09:45.600
<00:09:42.900>what <00:09:43.055>you <00:09:43.211>write <00:09:43.366>UI <00:09:43.522>test, <00:09:43.677>of <00:09:43.833>course <00:09:43.988>again, <00:09:44.144>won't <00:09:44.300>test

194
00:09:45.600 --> 00:09:48.400
<00:09:45.600>everything <00:09:45.755>they <00:09:45.911>will <00:09:46.066>test <00:09:46.222>the <00:09:46.377>application <00:09:46.533>from <00:09:46.688>and <00:09:46.844>use <00:09:47.000>a

195
00:09:48.400 --> 00:09:51.300
<00:09:48.400>perspective <00:09:48.540>again <00:09:48.680>focusing <00:09:48.819>on <00:09:48.959>the <00:09:49.100>on <00:09:49.240>the <00:09:49.380>critical <00:09:49.520>areas <00:09:49.660>and <00:09:49.800>the

196
00:09:51.300 --> 00:09:52.100
<00:09:51.300>most <00:09:51.660>common <00:09:52.020>scenarios.

197
00:09:52.900 --> 00:09:56.700
<00:09:52.900>The <00:09:53.074>question <00:09:53.250>that <00:09:53.425>you <00:09:53.600>can <00:09:53.775>ask <00:09:53.949>here <00:09:54.125>is <00:09:54.300>with

198
00:09:55.700 --> 00:09:58.300
<00:09:55.700>this <00:09:56.050>level <00:09:56.400>of <00:09:56.750>automation. <00:09:57.100>Do

199
00:09:58.300 --> 00:10:01.500
<00:09:58.300>we <00:09:58.455>need <00:09:58.611>manual <00:09:58.766>testing <00:09:58.922>and <00:09:59.077>we <00:09:59.233>still <00:09:59.388>need <00:09:59.544>manual <00:09:59.699>tester

200
00:10:01.500 --> 00:10:04.200
<00:10:01.500>tester. <00:10:01.655>So <00:10:01.811>we <00:10:01.966>just <00:10:02.122>need <00:10:02.277>create <00:10:02.433>Engineers <00:10:02.588>that <00:10:02.744>do <00:10:02.900>automation.

201
00:10:05.100 --> 00:10:08.400
<00:10:05.100>And <00:10:05.333>our <00:10:05.566>approach <00:10:05.800>is <00:10:06.033>that <00:10:06.266>we <00:10:06.500>focus

202
00:10:08.400 --> 00:10:11.500
<00:10:08.400>more <00:10:08.540>of <00:10:08.680>course <00:10:08.819>on <00:10:08.959>automation, <00:10:09.100>but <00:10:09.240>we <00:10:09.380>still <00:10:09.520>do <00:10:09.660>manual <00:10:09.800>testing

203
00:10:11.500 --> 00:10:14.600
<00:10:11.500>and <00:10:11.675>we <00:10:11.850>still <00:10:12.025>believe <00:10:12.200>we <00:10:12.375>should <00:10:12.550>do <00:10:12.725>manual <00:10:12.900>testing.

204
00:10:14.600 --> 00:10:18.300
<00:10:14.600>The <00:10:14.833>basic <00:10:15.066>difference <00:10:15.300>is <00:10:15.533>is <00:10:15.766>that <00:10:16.000>manual

205
00:10:17.300 --> 00:10:20.100
<00:10:17.300>testing <00:10:17.533>shouldn't <00:10:17.766>be <00:10:18.000>focused <00:10:18.233>on <00:10:18.466>testing <00:10:18.699>the

206
00:10:20.100 --> 00:10:23.600
<00:10:20.100>repetitive <00:10:20.380>UI <00:10:20.660>testing <00:10:20.940>that <00:10:21.220>can <00:10:21.500>easily

207
00:10:23.600 --> 00:10:26.200
<00:10:23.600>be <00:10:23.755>automated <00:10:23.911>these <00:10:24.066>days, <00:10:24.222>but <00:10:24.377>it <00:10:24.533>should <00:10:24.688>be <00:10:24.844>focused <00:10:25.000>more

208
00:10:26.200 --> 00:10:29.700
<00:10:26.200>on <00:10:26.480>exploratory <00:10:26.760>testing <00:10:27.040>at <00:10:27.320>Edge <00:10:27.600>case

209
00:10:29.700 --> 00:10:32.200
<00:10:29.700>testing. <00:10:29.900>So <00:10:30.100>basically <00:10:30.300>we <00:10:30.500>still <00:10:30.700>see <00:10:30.900>a <00:10:31.100>lot

210
00:10:32.200 --> 00:10:36.000
<00:10:32.200>of <00:10:32.316>value <00:10:32.433>in <00:10:32.550>manual <00:10:32.666>testing <00:10:32.783>and <00:10:32.900>we <00:10:33.016>don't <00:10:33.133>think <00:10:33.250>automation <00:10:33.366>can <00:10:33.483>completely <00:10:33.600>completely

211
00:10:35.300 --> 00:10:37.000
<00:10:35.300>replace <00:10:35.766>a <00:10:36.233>human <00:10:36.699>here.

212
00:10:39.400 --> 00:10:42.300
<00:10:39.400>Um, <00:10:39.680>we <00:10:39.959>see <00:10:40.240>two <00:10:40.520>types <00:10:40.800>of

213
00:10:42.300 --> 00:10:45.500
<00:10:42.300>quality <00:10:42.533>Gates <00:10:42.766>or <00:10:43.000>two <00:10:43.233>dimensions <00:10:43.466>of <00:10:43.699>quality

214
00:10:45.500 --> 00:10:48.300
<00:10:45.500>Gates <00:10:45.733>one <00:10:45.966>more <00:10:46.200>focused <00:10:46.433>on <00:10:46.666>developers <00:10:46.900>and

215
00:10:48.300 --> 00:10:51.400
<00:10:48.300>second <00:10:48.533>one <00:10:48.766>more <00:10:49.000>focused <00:10:49.233>on <00:10:49.466>the <00:10:49.699>client.

216
00:10:51.400 --> 00:10:55.300
<00:10:51.400>So <00:10:51.555>what <00:10:51.711>the <00:10:51.866>client <00:10:52.022>see <00:10:52.177>sees <00:10:52.333>is <00:10:52.488>this <00:10:52.644>perceived <00:10:52.800>quality,

217
00:10:55.300 --> 00:10:58.300
<00:10:55.300>they <00:10:55.455>want <00:10:55.611>us <00:10:55.766>to <00:10:55.922>deliver, <00:10:56.077>of <00:10:56.233>course <00:10:56.388>fast, <00:10:56.544>they <00:10:56.699>want

218
00:10:58.300 --> 00:11:01.900
<00:10:58.300>the <00:10:58.455>bug-free <00:10:58.611>solution <00:10:58.766>and <00:10:58.922>this <00:10:59.077>is <00:10:59.233>this <00:10:59.388>is <00:10:59.544>pretty <00:10:59.699>familiar

219
00:11:01.900 --> 00:11:04.300
<00:11:01.900>for <00:11:02.100>all <00:11:02.300>of <00:11:02.500>you <00:11:02.699>here. <00:11:02.900>What <00:11:03.100>we <00:11:03.300>will

220
00:11:04.300 --> 00:11:07.100
<00:11:04.300>focus <00:11:04.474>in <00:11:04.650>in <00:11:04.824>the <00:11:05.000>rest <00:11:05.175>of <00:11:05.349>this <00:11:05.525>lecture <00:11:05.699>is

221
00:11:07.100 --> 00:11:10.000
<00:11:07.100>actually <00:11:07.240>source <00:11:07.380>code <00:11:07.520>quality. <00:11:07.660>So <00:11:07.800>we're <00:11:07.940>going <00:11:08.080>to <00:11:08.220>deep <00:11:08.360>dye <00:11:08.500>now

222
00:11:10.300 --> 00:11:14.600
<00:11:10.300>into <00:11:10.455>source <00:11:10.611>code <00:11:10.766>quality <00:11:10.922>and <00:11:11.077>and <00:11:11.233>see <00:11:11.388>how <00:11:11.544>how <00:11:11.699>we

223
00:11:14.600 --> 00:11:17.400
<00:11:14.600>can <00:11:14.800>or <00:11:15.000>how <00:11:15.200>what <00:11:15.400>was <00:11:15.600>our <00:11:15.800>journey <00:11:16.000>and

224
00:11:17.400 --> 00:11:19.900
<00:11:17.400>how <00:11:17.680>we <00:11:17.959>improved <00:11:18.240>our <00:11:18.520>code <00:11:18.800>quality.

225
00:11:20.800 --> 00:11:23.800
<00:11:20.800>Step <00:11:21.033>by <00:11:21.266>step <00:11:21.500>and <00:11:21.733>set <00:11:21.966>now <00:11:22.199>really

226
00:11:23.800 --> 00:11:26.400
<00:11:23.800>really <00:11:23.939>strict <00:11:24.079>Gates <00:11:24.219>and <00:11:24.359>have <00:11:24.500>some <00:11:24.640>cool <00:11:24.780>tooling <00:11:24.920>that <00:11:25.060>that <00:11:25.199>we

227
00:11:26.400 --> 00:11:27.800
<00:11:26.400>used <00:11:26.714>to <00:11:27.030>to <00:11:27.344>ensure <00:11:27.660>that.

228
00:11:29.700 --> 00:11:29.800
so

229
00:11:31.500 --> 00:11:34.000
<00:11:31.500>I'll <00:11:31.655>start <00:11:31.811>with <00:11:31.966>coding <00:11:32.122>guidelines <00:11:32.277>because <00:11:32.433>this <00:11:32.588>was <00:11:32.744>kind <00:11:32.900>of

230
00:11:34.600 --> 00:11:37.300
<00:11:34.600>our <00:11:34.755>first <00:11:34.911>step <00:11:35.066>or <00:11:35.222>first <00:11:35.377>thing <00:11:35.533>that <00:11:35.688>we <00:11:35.844>try <00:11:36.000>to

231
00:11:37.300 --> 00:11:40.300
<00:11:37.300>do <00:11:37.650>company-wide <00:11:38.000>to <00:11:38.349>standardize <00:11:38.699>how

232
00:11:40.300 --> 00:11:41.600
<00:11:40.300>we <00:11:40.689>write <00:11:41.080>our <00:11:41.470>code.

233
00:11:42.200 --> 00:11:45.400
<00:11:42.200>And <00:11:42.550>the <00:11:42.900>key <00:11:43.250>idea <00:11:43.600>here

234
00:11:45.400 --> 00:11:48.600
<00:11:45.400>is <00:11:45.574>that <00:11:45.750>we <00:11:45.925>wanted <00:11:46.100>to <00:11:46.275>ensure <00:11:46.449>that <00:11:46.625>our <00:11:46.800>code

235
00:11:48.600 --> 00:11:51.200
<00:11:48.600>looks <00:11:48.800>like <00:11:49.000>it <00:11:49.200>was <00:11:49.400>written <00:11:49.600>by <00:11:49.800>ibmx, <00:11:50.000>right?

236
00:11:51.200 --> 00:11:54.300
<00:11:51.200>I <00:11:51.355>don't <00:11:51.511>want <00:11:51.666>to <00:11:51.822>open <00:11:51.977>my <00:11:52.133>project <00:11:52.288>most <00:11:52.444>most <00:11:52.600>of

237
00:11:54.300 --> 00:11:57.100
<00:11:54.300>them. <00:11:54.439>We're <00:11:54.579>doing <00:11:54.719>Java. <00:11:54.859>I <00:11:55.000>don't <00:11:55.140>want <00:11:55.280>to <00:11:55.420>open <00:11:55.560>a <00:11:55.699>class

238
00:11:57.100 --> 00:12:00.600
<00:11:57.100>and <00:11:57.227>see <00:11:57.354>immediate. <00:11:57.481>Okay, <00:11:57.609>this <00:11:57.736>class <00:11:57.863>was <00:11:57.990>written <00:11:58.118>by <00:11:58.245>Martin <00:11:58.372>or <00:11:58.500>it

239
00:12:00.600 --> 00:12:03.700
<00:12:00.600>was <00:12:00.727>written <00:12:00.854>by <00:12:00.981>I <00:12:01.109>don't <00:12:01.236>know <00:12:01.363>Marco <00:12:01.490>or <00:12:01.618>whoever <00:12:01.745>I <00:12:01.872>want <00:12:02.000>our

240
00:12:03.700 --> 00:12:06.200
<00:12:03.700>code <00:12:03.855>to <00:12:04.011>really <00:12:04.166>look <00:12:04.322>like <00:12:04.477>it <00:12:04.633>was <00:12:04.788>it <00:12:04.944>was <00:12:05.100>written

241
00:12:06.200 --> 00:12:09.900
<00:12:06.200>by <00:12:06.355>us <00:12:06.511>as <00:12:06.666>a <00:12:06.822>company <00:12:06.977>with <00:12:07.133>following <00:12:07.288>our <00:12:07.444>our <00:12:07.600>standard

242
00:12:09.900 --> 00:12:11.200
<00:12:09.900>guidelines <00:12:10.290>and <00:12:10.680>best <00:12:11.070>practices.

243
00:12:13.300 --> 00:12:16.500
<00:12:13.300>So <00:12:13.474>we <00:12:13.650>of <00:12:13.824>course <00:12:14.000>also <00:12:14.175>started <00:12:14.349>using <00:12:14.525>Sonar <00:12:14.699>Cube

244
00:12:16.500 --> 00:12:17.600
<00:12:16.500>for <00:12:16.830>static <00:12:17.160>code <00:12:17.490>analysis.

245
00:12:18.400 --> 00:12:21.800
<00:12:18.400>We <00:12:18.574>used <00:12:18.750>first <00:12:18.925>free <00:12:19.100>version <00:12:19.275>of <00:12:19.449>Sonic <00:12:19.625>Cube <00:12:19.800>and

246
00:12:21.800 --> 00:12:24.200
<00:12:21.800>this <00:12:22.079>helped <00:12:22.359>us <00:12:22.640>solve <00:12:22.920>some <00:12:23.199>problems.

247
00:12:24.200 --> 00:12:27.600
<00:12:24.200>So <00:12:24.340>you <00:12:24.480>see <00:12:24.620>on <00:12:24.760>on <00:12:24.900>the <00:12:25.040>left <00:12:25.180>side. <00:12:25.320>You <00:12:25.460>see <00:12:25.600>the

248
00:12:27.600 --> 00:12:30.300
<00:12:27.600>screenshot <00:12:27.740>from <00:12:27.880>from <00:12:28.020>one <00:12:28.160>of <00:12:28.300>the <00:12:28.440>projects <00:12:28.580>where <00:12:28.720>actually <00:12:28.860>report <00:12:29.000>this

249
00:12:30.300 --> 00:12:33.500
<00:12:30.300>is <00:12:30.455>is <00:12:30.611>really <00:12:30.766>nice. <00:12:30.922>Right <00:12:31.077>you <00:12:31.233>we <00:12:31.388>have <00:12:31.544>zero <00:12:31.699>box

250
00:12:33.500 --> 00:12:36.500
<00:12:33.500>critical <00:12:33.700>issues. <00:12:33.900>We <00:12:34.100>have <00:12:34.300>80% <00:12:34.500>code <00:12:34.700>coverage. <00:12:34.900>We

251
00:12:36.500 --> 00:12:40.200
<00:12:36.500>have <00:12:36.675>less <00:12:36.850>than <00:12:37.025>3% <00:12:37.200>application. <00:12:37.375>It's <00:12:37.550>it's <00:12:37.725>good. <00:12:37.900>However,

252
00:12:41.200 --> 00:12:44.400
<00:12:41.200>we <00:12:41.400>were <00:12:41.600>still <00:12:41.800>very <00:12:42.000>dependent <00:12:42.200>on <00:12:42.400>the <00:12:42.600>lead

253
00:12:44.400 --> 00:12:47.400
<00:12:44.400>developer <00:12:44.574>on <00:12:44.750>the <00:12:44.925>project <00:12:45.100>or <00:12:45.275>the <00:12:45.449>full <00:12:45.625>team <00:12:45.800>and

254
00:12:47.400 --> 00:12:50.200
<00:12:47.400>and <00:12:47.633>on <00:12:47.866>their <00:12:48.100>willingness <00:12:48.333>to <00:12:48.566>actually <00:12:48.800>go

255
00:12:50.200 --> 00:12:53.200
<00:12:50.200>into <00:12:50.340>sonar <00:12:50.480>Cube <00:12:50.620>and <00:12:50.760>fix <00:12:50.900>those <00:12:51.040>issues. <00:12:51.180>So <00:12:51.320>we <00:12:51.460>didn't <00:12:51.600>really

256
00:12:53.200 --> 00:12:57.000
<00:12:53.200>have <00:12:53.375>a <00:12:53.550>way <00:12:53.725>to <00:12:53.900>enforce <00:12:54.075>that <00:12:54.250>everyone <00:12:54.425>follows <00:12:54.600>the

257
00:12:56.200 --> 00:12:59.400
<00:12:56.200>rules. <00:12:56.400>We <00:12:56.600>just <00:12:56.800>had <00:12:57.000>rules <00:12:57.200>and <00:12:57.400>then <00:12:57.600>we

258
00:12:59.400 --> 00:13:02.100
<00:12:59.400>were <00:12:59.507>still <00:12:59.615>dependent <00:12:59.723>on <00:12:59.830>developers <00:12:59.938>if <00:13:00.046>they're <00:13:00.153>actually <00:13:00.261>going <00:13:00.369>to <00:13:00.476>follow <00:13:00.584>them <00:13:00.692>or <00:13:00.800>not.

259
00:13:02.100 --> 00:13:03.500
<00:13:02.100>And <00:13:02.310>of <00:13:02.520>course <00:13:02.730>there <00:13:02.940>was <00:13:03.150>something <00:13:03.360>that

260
00:13:04.400 --> 00:13:08.600
<00:13:04.400>So <00:13:04.555>Sonic, <00:13:04.711>you're <00:13:04.866>free <00:13:05.022>version <00:13:05.177>can <00:13:05.333>help <00:13:05.488>you <00:13:05.644>report <00:13:05.800>code

261
00:13:07.600 --> 00:13:09.000
coverage.

262
00:13:09.700 --> 00:13:12.800
<00:13:09.700>It <00:13:09.855>can <00:13:10.011>inform <00:13:10.166>you <00:13:10.322>about <00:13:10.477>some <00:13:10.633>clean <00:13:10.788>coding <00:13:10.944>practices. <00:13:11.100>It's

263
00:13:12.800 --> 00:13:15.300
<00:13:12.800>all <00:13:13.033>good. <00:13:13.266>It <00:13:13.500>can <00:13:13.733>detect <00:13:13.966>Java <00:13:14.199>specific

264
00:13:15.300 --> 00:13:18.300
<00:13:15.300>issues. <00:13:15.455>But <00:13:15.611>there <00:13:15.766>are <00:13:15.922>also <00:13:16.077>some <00:13:16.233>things <00:13:16.388>that <00:13:16.544>it <00:13:16.699>didn't

265
00:13:18.300 --> 00:13:21.800
<00:13:18.300>solve <00:13:18.474>for <00:13:18.650>us. <00:13:18.824>So <00:13:19.000>it <00:13:19.175>didn't <00:13:19.349>really <00:13:19.525>Ensure <00:13:19.699>High

266
00:13:21.800 --> 00:13:24.200
<00:13:21.800>coverage <00:13:22.150>because <00:13:22.500>you <00:13:22.849>needed <00:13:23.199>to

267
00:13:24.200 --> 00:13:27.200
<00:13:24.200>go <00:13:24.307>into <00:13:24.415>Sonic <00:13:24.523>Cube <00:13:24.630>and <00:13:24.738>check <00:13:24.846>what <00:13:24.953>the <00:13:25.061>coverages <00:13:25.169>and <00:13:25.276>then <00:13:25.384>increase <00:13:25.492>it <00:13:25.600>which

268
00:13:27.200 --> 00:13:30.600
<00:13:27.200>is <00:13:27.340>not <00:13:27.480>how <00:13:27.620>we <00:13:27.760>wanted <00:13:27.900>it. <00:13:28.040>It <00:13:28.180>didn't <00:13:28.320>also <00:13:28.460>enforce <00:13:28.600>clean

269
00:13:30.600 --> 00:13:33.200
<00:13:30.600>architecture <00:13:30.800>because <00:13:31.000>it <00:13:31.200>doesn't <00:13:31.400>even <00:13:31.600>check <00:13:31.800>the <00:13:32.000>code

270
00:13:33.200 --> 00:13:36.300
<00:13:33.200>architecture. <00:13:33.340>It <00:13:33.480>just <00:13:33.620>mostly <00:13:33.760>checks <00:13:33.900>the <00:13:34.040>errors <00:13:34.180>in <00:13:34.320>the <00:13:34.460>in <00:13:34.600>the

271
00:13:36.300 --> 00:13:37.700
<00:13:36.300>in <00:13:36.552>the <00:13:36.804>cold <00:13:37.056>in <00:13:37.308>the <00:13:37.560>syntax.

272
00:13:39.600 --> 00:13:42.400
<00:13:39.600>Um, <00:13:39.740>and <00:13:39.880>it <00:13:40.020>didn't <00:13:40.160>detect <00:13:40.300>frame <00:13:40.440>or <00:13:40.580>specific <00:13:40.720>issues. <00:13:40.860>So <00:13:41.000>we

273
00:13:42.400 --> 00:13:46.600
<00:13:42.400>work <00:13:42.633>with <00:13:42.866>some <00:13:43.100>some <00:13:43.333>Enterprise <00:13:43.566>Frameworks <00:13:43.800>that

274
00:13:45.600 --> 00:13:49.400
<00:13:45.600>are <00:13:46.066>not <00:13:46.533>that <00:13:47.000>popular

275
00:13:48.400 --> 00:13:51.300
<00:13:48.400>as <00:13:48.600>maybe <00:13:48.800>spring <00:13:49.000>and <00:13:49.199>they're <00:13:49.400>not <00:13:49.600>supported <00:13:49.800>out

276
00:13:51.300 --> 00:13:54.800
<00:13:51.300>the <00:13:51.439>box <00:13:51.579>in <00:13:51.719>sonar <00:13:51.859>cubes. <00:13:52.000>So <00:13:52.140>we <00:13:52.280>also <00:13:52.420>needed <00:13:52.560>something <00:13:52.699>custom.

277
00:13:55.600 --> 00:13:57.000
<00:13:55.600>Which <00:13:55.852>we <00:13:56.104>will <00:13:56.356>show <00:13:56.608>you <00:13:56.860>later.

278
00:13:59.500 --> 00:14:03.100
<00:13:59.500>One <00:13:59.627>more <00:13:59.754>thing <00:13:59.881>I <00:14:00.009>wanted <00:14:00.136>to <00:14:00.263>touch <00:14:00.390>upon <00:14:00.518>is <00:14:00.645>the <00:14:00.772>value <00:14:00.900>of

279
00:14:03.100 --> 00:14:04.600
<00:14:03.100>the <00:14:03.370>documentation. <00:14:03.640>So <00:14:03.910>there <00:14:04.180>is <00:14:04.450>this.

280
00:14:05.900 --> 00:14:09.100
<00:14:05.900>Um <00:14:06.055>age <00:14:06.211>of <00:14:06.366>principle <00:14:06.522>that <00:14:06.677>I <00:14:06.833>think <00:14:06.988>is <00:14:07.144>is <00:14:07.300>misused.

281
00:14:08.100 --> 00:14:11.500
<00:14:08.100>A <00:14:08.255>lot <00:14:08.411>of <00:14:08.566>times <00:14:08.722>that <00:14:08.877>says <00:14:09.033>working <00:14:09.188>software <00:14:09.344>over <00:14:09.500>comprehensive

282
00:14:11.500 --> 00:14:14.300
<00:14:11.500>documentation. <00:14:11.640>And <00:14:11.780>then <00:14:11.920>you <00:14:12.060>have <00:14:12.200>people <00:14:12.340>telling <00:14:12.480>you <00:14:12.620>shouldn't <00:14:12.760>write <00:14:12.900>any

283
00:14:14.300 --> 00:14:17.600
<00:14:14.300>documentation <00:14:14.474>on <00:14:14.650>edge <00:14:14.824>or <00:14:15.000>projects <00:14:15.175>b******* <00:14:15.349>you <00:14:15.525>need <00:14:15.699>documentation,

284
00:14:17.600 --> 00:14:20.800
<00:14:17.600>especially <00:14:17.880>high <00:14:18.160>level <00:14:18.440>architecture <00:14:18.720>best <00:14:19.000>practices.

285
00:14:20.800 --> 00:14:24.500
<00:14:20.800>That's <00:14:21.033>always <00:14:21.266>good <00:14:21.500>to <00:14:21.733>document. <00:14:21.966>Right? <00:14:22.199>So

286
00:14:23.500 --> 00:14:26.300
<00:14:23.500>what <00:14:23.733>I <00:14:23.966>did <00:14:24.200>some <00:14:24.433>years <00:14:24.666>ago <00:14:24.900>is

287
00:14:26.300 --> 00:14:29.500
<00:14:26.300>I <00:14:26.474>started <00:14:26.650>documenting <00:14:26.824>best <00:14:27.000>practices <00:14:27.175>that <00:14:27.349>I <00:14:27.525>saw <00:14:27.699>on

288
00:14:29.500 --> 00:14:32.300
<00:14:29.500>different <00:14:29.627>projects <00:14:29.754>and <00:14:29.881>these <00:14:30.009>were <00:14:30.136>just <00:14:30.263>my <00:14:30.390>notes <00:14:30.518>and <00:14:30.645>that's <00:14:30.772>how <00:14:30.900>it

289
00:14:32.300 --> 00:14:35.200
<00:14:32.300>started <00:14:32.533>making <00:14:32.766>notes <00:14:33.000>on <00:14:33.233>on <00:14:33.466>good <00:14:33.699>practices

290
00:14:35.200 --> 00:14:39.100
<00:14:35.200>that <00:14:35.400>I <00:14:35.600>saw <00:14:35.800>other <00:14:36.000>developers <00:14:36.200>doing <00:14:36.400>and <00:14:36.600>of

291
00:14:38.100 --> 00:14:41.500
<00:14:38.100>course <00:14:38.275>I <00:14:38.450>refer <00:14:38.625>to <00:14:38.800>that <00:14:38.975>as <00:14:39.150>we <00:14:39.325>also <00:14:39.500>always

292
00:14:41.500 --> 00:14:44.300
<00:14:41.500>refer <00:14:41.616>to <00:14:41.733>our <00:14:41.850>to <00:14:41.966>our <00:14:42.083>previous <00:14:42.200>projects <00:14:42.316>and <00:14:42.433>these <00:14:42.550>are <00:14:42.666>simple <00:14:42.783>things <00:14:42.900>like

293
00:14:44.300 --> 00:14:48.600
<00:14:44.300>you <00:14:44.427>can <00:14:44.554>see <00:14:44.681>here. <00:14:44.809>For <00:14:44.936>example, <00:14:45.063>we <00:14:45.190>have <00:14:45.318>this <00:14:45.445>in <00:14:45.572>in <00:14:45.699>this

294
00:14:47.600 --> 00:14:50.500
<00:14:47.600>framework <00:14:47.775>that <00:14:47.950>we <00:14:48.125>use <00:14:48.300>we <00:14:48.475>have <00:14:48.650>this <00:14:48.825>resources <00:14:49.000>over

295
00:14:50.500 --> 00:14:53.600
<00:14:50.500>that <00:14:50.627>we <00:14:50.754>need <00:14:50.881>to <00:14:51.009>always <00:14:51.136>close <00:14:51.263>so <00:14:51.390>we <00:14:51.518>should <00:14:51.645>use <00:14:51.772>try <00:14:51.900>with

296
00:14:53.600 --> 00:14:55.200
<00:14:53.600>resources <00:14:53.880>really <00:14:54.160>simple <00:14:54.440>things <00:14:54.720>like <00:14:55.000>that.

297
00:14:56.200 --> 00:14:59.600
<00:14:56.200>So <00:14:56.400>I <00:14:56.600>started <00:14:56.800>documenting <00:14:57.000>it <00:14:57.200>and <00:14:57.400>out <00:14:57.600>of

298
00:14:59.600 --> 00:15:02.900
<00:14:59.600>that <00:14:59.800>set <00:15:00.000>of <00:15:00.200>notes <00:15:00.400>with <00:15:00.600>time. <00:15:00.800>I <00:15:01.000>actually

299
00:15:02.900 --> 00:15:05.700
<00:15:02.900>ended <00:15:03.055>up <00:15:03.211>with <00:15:03.366>a <00:15:03.522>set <00:15:03.677>of <00:15:03.833>coding <00:15:03.988>guidelines. <00:15:04.144>I <00:15:04.300>put

300
00:15:05.700 --> 00:15:08.600
<00:15:05.700>it <00:15:05.980>on <00:15:06.260>Confluence <00:15:06.540>and <00:15:06.820>simply <00:15:07.100>shared

301
00:15:08.600 --> 00:15:11.600
<00:15:08.600>it <00:15:08.880>with <00:15:09.160>anyone <00:15:09.440>and <00:15:09.720>anyone <00:15:10.000>can

302
00:15:11.600 --> 00:15:14.300
<00:15:11.600>and <00:15:11.755>of <00:15:11.911>course <00:15:12.066>should <00:15:12.222>contribute <00:15:12.377>to <00:15:12.533>coding <00:15:12.688>Islands <00:15:12.844>anyone <00:15:13.000>can

303
00:15:14.300 --> 00:15:17.000
<00:15:14.300>challenge <00:15:14.455>anything. <00:15:14.611>If <00:15:14.766>they <00:15:14.922>don't <00:15:15.077>agree <00:15:15.233>with <00:15:15.388>me, <00:15:15.544>we <00:15:15.699>can

304
00:15:17.200 --> 00:15:20.200
<00:15:17.200>change <00:15:17.400>things <00:15:17.600>we <00:15:17.800>can <00:15:18.000>remove <00:15:18.200>things <00:15:18.400>but <00:15:18.600>what's

305
00:15:20.200 --> 00:15:23.600
<00:15:20.200>really <00:15:20.355>important <00:15:20.511>is <00:15:20.666>that <00:15:20.822>we <00:15:20.977>align <00:15:21.133>and <00:15:21.288>just <00:15:21.444>because <00:15:21.600>I

306
00:15:23.600 --> 00:15:26.300
<00:15:23.600>think <00:15:23.775>something <00:15:23.950>is <00:15:24.125>the <00:15:24.300>best <00:15:24.475>practice <00:15:24.650>doesn't <00:15:24.825>doesn't <00:15:25.000>mean

307
00:15:26.300 --> 00:15:29.300
<00:15:26.300>that <00:15:26.474>it's <00:15:26.650>actually <00:15:26.824>best <00:15:27.000>practice <00:15:27.175>there <00:15:27.349>is <00:15:27.525>of <00:15:27.699>course

308
00:15:29.300 --> 00:15:34.100
<00:15:29.300>other <00:15:29.427>opinions <00:15:29.554>and <00:15:29.681>we <00:15:29.809>always <00:15:29.936>need <00:15:30.063>to <00:15:30.190>align <00:15:30.318>on <00:15:30.445>this <00:15:30.572>but <00:15:30.699>also

309
00:15:33.100 --> 00:15:36.300
<00:15:33.100>really <00:15:33.300>great <00:15:33.500>value <00:15:33.700>from <00:15:33.900>from <00:15:34.100>set <00:15:34.300>of <00:15:34.500>guidelines

310
00:15:36.300 --> 00:15:39.800
<00:15:36.300>like <00:15:36.439>this <00:15:36.579>is <00:15:36.719>that <00:15:36.859>we <00:15:37.000>give <00:15:37.140>them <00:15:37.280>to <00:15:37.420>Juniors <00:15:37.560>to <00:15:37.699>read

311
00:15:39.800 --> 00:15:43.900
<00:15:39.800>before <00:15:40.079>they <00:15:40.359>start <00:15:40.640>working <00:15:40.920>with <00:15:41.199>with

312
00:15:42.900 --> 00:15:45.600
<00:15:42.900>our <00:15:43.180>software <00:15:43.459>and <00:15:43.740>with <00:15:44.020>this <00:15:44.300>Enterprise

313
00:15:45.600 --> 00:15:48.600
<00:15:45.600>Solutions <00:15:45.800>so <00:15:46.000>that <00:15:46.200>they <00:15:46.400>can <00:15:46.600>learn <00:15:46.800>on <00:15:47.000>on

314
00:15:48.600 --> 00:15:51.400
<00:15:48.600>our <00:15:48.740>mistakes <00:15:48.880>and <00:15:49.020>they <00:15:49.160>see <00:15:49.300>what <00:15:49.440>we <00:15:49.580>see <00:15:49.720>as <00:15:49.860>best <00:15:50.000>practice.

315
00:15:52.100 --> 00:15:55.200
<00:15:52.100>So <00:15:52.275>this <00:15:52.450>did <00:15:52.625>bring <00:15:52.800>us <00:15:52.975>some <00:15:53.150>benefits <00:15:53.325>with <00:15:53.500>it

316
00:15:55.200 --> 00:15:58.100
<00:15:55.200>align <00:15:55.375>a <00:15:55.550>bit <00:15:55.725>better <00:15:55.900>across <00:15:56.075>projects <00:15:56.250>with <00:15:56.425>it <00:15:56.600>learn

317
00:15:58.100 --> 00:16:01.700
<00:15:58.100>on <00:15:58.227>mistakes <00:15:58.354>that <00:15:58.481>were <00:15:58.609>done <00:15:58.736>on <00:15:58.863>other <00:15:58.990>projects <00:15:59.118>because <00:15:59.245>it <00:15:59.372>was <00:15:59.500>documented

318
00:16:01.700 --> 00:16:04.200
<00:16:01.700>and <00:16:01.933>central <00:16:02.166>place <00:16:02.400>and <00:16:02.633>it <00:16:02.866>gives <00:16:03.100>us

319
00:16:04.200 --> 00:16:07.100
<00:16:04.200>kind <00:16:04.316>of <00:16:04.433>also <00:16:04.550>competitive <00:16:04.666>Advantage <00:16:04.783>because <00:16:04.900>we <00:16:05.016>can <00:16:05.133>show <00:16:05.250>off <00:16:05.366>these <00:16:05.483>things <00:16:05.600>to

320
00:16:07.100 --> 00:16:10.400
<00:16:07.100>the <00:16:07.200>client. <00:16:07.300>We <00:16:07.400>can <00:16:07.500>show <00:16:07.600>them <00:16:07.700>some <00:16:07.800>quality <00:16:07.900>kpis. <00:16:08.000>We <00:16:08.100>can <00:16:08.200>show <00:16:08.300>them <00:16:08.400>guidelines <00:16:08.500>and

321
00:16:10.400 --> 00:16:13.700
<00:16:10.400>the <00:16:10.555>big <00:16:10.711>clients, <00:16:10.866>you <00:16:11.022>know, <00:16:11.177>that <00:16:11.333>felt <00:16:11.488>bad <00:16:11.644>code <00:16:11.800>at

322
00:16:13.700 --> 00:16:16.800
<00:16:13.700>some <00:16:13.980>point. <00:16:14.260>They <00:16:14.540>really <00:16:14.820>appreciate <00:16:15.100>this

323
00:16:16.800 --> 00:16:18.200
<00:16:16.800>so <00:16:16.980>you <00:16:17.160>can <00:16:17.340>also <00:16:17.520>pitch <00:16:17.700>it <00:16:17.880>to <00:16:18.060>clients.

324
00:16:20.100 --> 00:16:23.100
<00:16:20.100>Okay, <00:16:20.333>so <00:16:20.566>we <00:16:20.800>had <00:16:21.033>Sonic <00:16:21.266>Cube <00:16:21.500>free

325
00:16:23.100 --> 00:16:26.700
<00:16:23.100>version <00:16:23.255>reporting <00:16:23.411>issues. <00:16:23.566>We <00:16:23.722>had <00:16:23.877>coding <00:16:24.033>guidelines <00:16:24.188>and <00:16:24.344>still <00:16:24.500>we

326
00:16:26.700 --> 00:16:29.200
<00:16:26.700>had <00:16:26.816>a <00:16:26.933>lot <00:16:27.050>of <00:16:27.166>people <00:16:27.283>who <00:16:27.400>didn't <00:16:27.516>follow <00:16:27.633>coding <00:16:27.750>guidelines <00:16:27.866>that <00:16:27.983>didn't <00:16:28.100>fix

327
00:16:29.200 --> 00:16:30.200
<00:16:29.200>on <00:16:29.500>our <00:16:29.800>issues. <00:16:30.100>So

328
00:16:31.700 --> 00:16:34.700
<00:16:31.700>How <00:16:31.900>do <00:16:32.100>we <00:16:32.300>actually <00:16:32.500>ensure <00:16:32.700>that <00:16:32.900>developers <00:16:33.100>go

329
00:16:34.700 --> 00:16:37.400
<00:16:34.700>into <00:16:34.840>sonar <00:16:34.980>Cube? <00:16:35.120>They <00:16:35.260>fix <00:16:35.400>issues. <00:16:35.540>How <00:16:35.680>do <00:16:35.820>we <00:16:35.960>ensure <00:16:36.100>that

330
00:16:37.400 --> 00:16:41.100
<00:16:37.400>developers <00:16:37.540>actually <00:16:37.680>stick <00:16:37.819>to <00:16:37.959>the <00:16:38.100>guidelines <00:16:38.240>that <00:16:38.380>we <00:16:38.520>all <00:16:38.660>Allied <00:16:38.800>on

331
00:16:41.100 --> 00:16:43.100
<00:16:41.100>that's <00:16:41.240>going <00:16:41.380>to <00:16:41.520>be <00:16:41.660>that's <00:16:41.800>going <00:16:41.940>to <00:16:42.080>be <00:16:42.220>the <00:16:42.360>next <00:16:42.500>topic.

332
00:16:43.900 --> 00:16:46.600
<00:16:43.900>First <00:16:44.180>thing <00:16:44.459>we <00:16:44.740>did <00:16:45.020>is <00:16:45.300>we

333
00:16:46.600 --> 00:16:49.300
<00:16:46.600>started <00:16:46.833>using <00:16:47.066>pull <00:16:47.300>request <00:16:47.533>decoration. <00:16:47.766>So <00:16:48.000>this

334
00:16:49.300 --> 00:16:52.500
<00:16:49.300>means <00:16:49.500>not <00:16:49.699>just <00:16:49.900>performing <00:16:50.099>sonar <00:16:50.300>Cuban <00:16:50.500>analysis <00:16:50.699>daily,

335
00:16:52.500 --> 00:16:55.800
<00:16:52.500>but <00:16:52.627>doing <00:16:52.754>it <00:16:52.881>on <00:16:53.009>every <00:16:53.136>pull <00:16:53.263>request <00:16:53.390>on <00:16:53.518>all <00:16:53.645>the <00:16:53.772>changes <00:16:53.900>introduced

336
00:16:55.800 --> 00:16:58.500
<00:16:55.800>and <00:16:56.000>then <00:16:56.199>you <00:16:56.400>get <00:16:56.599>your <00:16:56.800>results <00:16:57.000>reported <00:16:57.199>in

337
00:16:58.500 --> 00:17:01.300
<00:16:58.500>your <00:16:58.780>collaboration <00:16:59.060>to <00:16:59.340>GitHub <00:16:59.620>bitbucket. <00:16:59.900>Whatever.

338
00:17:01.300 --> 00:17:04.500
<00:17:01.300>It <00:17:01.474>looks <00:17:01.650>like <00:17:01.824>on <00:17:02.000>this <00:17:02.175>screenshot <00:17:02.349>here. <00:17:02.525>You <00:17:02.699>have

339
00:17:04.500 --> 00:17:07.200
<00:17:04.500>one <00:17:04.640>quality <00:17:04.780>gate <00:17:04.920>that <00:17:05.060>passed <00:17:05.200>and <00:17:05.339>you <00:17:05.480>have <00:17:05.619>one <00:17:05.760>that <00:17:05.900>failed

340
00:17:07.200 --> 00:17:10.400
<00:17:07.200>it <00:17:07.355>failed <00:17:07.511>because <00:17:07.666>of <00:17:07.822>the <00:17:07.977>load <00:17:08.133>code <00:17:08.288>coverage <00:17:08.444>on <00:17:08.600>the

341
00:17:10.400 --> 00:17:13.100
<00:17:10.400>new <00:17:10.600>code. <00:17:10.800>What's <00:17:11.000>really <00:17:11.200>really <00:17:11.400>important <00:17:11.600>is <00:17:11.800>that

342
00:17:13.100 --> 00:17:16.900
<00:17:13.099>you <00:17:13.227>set <00:17:13.354>your <00:17:13.481>collaboration <00:17:13.609>tool <00:17:13.736>in <00:17:13.863>a <00:17:13.990>way <00:17:14.118>that <00:17:14.245>if <00:17:14.372>this <00:17:14.500>second

343
00:17:16.900 --> 00:17:19.600
<00:17:16.900>thing <00:17:17.180>happens <00:17:17.460>that <00:17:17.740>you <00:17:18.020>disable <00:17:18.300>March

344
00:17:19.600 --> 00:17:22.900
<00:17:19.599>and <00:17:19.800>you <00:17:20.000>simply <00:17:20.199>force <00:17:20.399>all <00:17:20.599>developers <00:17:20.800>to <00:17:21.000>follow

345
00:17:22.900 --> 00:17:26.300
<00:17:22.900>the <00:17:23.180>set <00:17:23.460>and <00:17:23.740>aligned <00:17:24.020>company <00:17:24.300>quality

346
00:17:25.300 --> 00:17:26.700
guidance.

347
00:17:27.400 --> 00:17:30.200
<00:17:27.400>However, <00:17:27.600>this <00:17:27.800>season <00:17:28.000>3 <00:17:28.200>we <00:17:28.400>needed <00:17:28.600>to <00:17:28.800>buy

348
00:17:30.200 --> 00:17:33.100
<00:17:30.200>sonar <00:17:30.327>Cube <00:17:30.454>developer <00:17:30.581>plan. <00:17:30.709>So <00:17:30.836>with <00:17:30.963>three <00:17:31.090>version <00:17:31.218>you <00:17:31.345>cannot <00:17:31.472>do <00:17:31.600>this

349
00:17:33.100 --> 00:17:36.500
<00:17:33.100>because <00:17:33.255>you <00:17:33.411>will <00:17:33.566>need <00:17:33.722>Branch <00:17:33.877>analysis <00:17:34.033>for <00:17:34.188>this <00:17:34.344>and <00:17:34.500>and

350
00:17:36.500 --> 00:17:40.100
<00:17:36.500>Branch <00:17:36.627>analysis <00:17:36.754>come <00:17:36.881>with <00:17:37.009>a <00:17:37.136>comes <00:17:37.263>with <00:17:37.390>a <00:17:37.518>paid <00:17:37.645>license <00:17:37.772>for <00:17:37.900>sonar

351
00:17:39.100 --> 00:17:40.300
Cube.

352
00:17:41.500 --> 00:17:44.500
<00:17:41.500>One <00:17:41.675>more <00:17:41.850>thing <00:17:42.025>we <00:17:42.200>wanted <00:17:42.375>to <00:17:42.550>do <00:17:42.725>is <00:17:42.900>actually

353
00:17:44.500 --> 00:17:47.200
<00:17:44.500>check <00:17:44.850>how <00:17:45.200>the <00:17:45.550>architecture <00:17:45.900>of

354
00:17:47.200 --> 00:17:50.500
<00:17:47.200>our <00:17:47.375>code <00:17:47.550>is <00:17:47.725>besides. <00:17:47.900>Just <00:17:48.075>checking <00:17:48.250>the <00:17:48.425>standard <00:17:48.600>mistakes

355
00:17:50.500 --> 00:17:53.800
<00:17:50.500>that <00:17:50.616>you <00:17:50.733>make <00:17:50.850>in <00:17:50.966>Java. <00:17:51.083>We <00:17:51.200>wanted <00:17:51.316>to <00:17:51.433>check <00:17:51.550>that <00:17:51.666>actually <00:17:51.783>developers <00:17:51.900>are

356
00:17:53.800 --> 00:17:56.400
<00:17:53.800>designing <00:17:53.955>the <00:17:54.111>code <00:17:54.266>how <00:17:54.422>it <00:17:54.577>was <00:17:54.733>meant <00:17:54.888>to <00:17:55.044>be <00:17:55.200>designed

357
00:17:56.400 --> 00:17:59.400
<00:17:56.400>that <00:17:56.487>you <00:17:56.575>put <00:17:56.662>the <00:17:56.750>classes <00:17:56.837>in <00:17:56.925>the <00:17:57.012>right <00:17:57.100>place <00:17:57.187>that <00:17:57.275>you <00:17:57.362>put <00:17:57.450>packages <00:17:57.537>in <00:17:57.625>the <00:17:57.712>right <00:17:57.800>place

358
00:17:59.400 --> 00:18:02.600
<00:17:59.400>that <00:17:59.633>you <00:17:59.866>don't <00:18:00.100>create <00:18:00.333>cycle <00:18:00.566>dependencies <00:18:00.800>Etc.

359
00:18:02.600 --> 00:18:05.700
<00:18:02.600>So <00:18:02.755>in <00:18:02.911>Java, <00:18:03.066>there <00:18:03.222>is <00:18:03.377>a <00:18:03.533>really <00:18:03.688>cool <00:18:03.844>library <00:18:04.000>that

360
00:18:05.700 --> 00:18:08.600
<00:18:05.700>can <00:18:05.840>help <00:18:05.980>you <00:18:06.120>do <00:18:06.260>this. <00:18:06.400>It's <00:18:06.540>called <00:18:06.680>Arch <00:18:06.820>unit <00:18:06.960>and <00:18:07.100>it

361
00:18:08.600 --> 00:18:11.400
<00:18:08.600>can <00:18:08.755>actually <00:18:08.911>test <00:18:09.066>the <00:18:09.222>architecture <00:18:09.377>of <00:18:09.533>your <00:18:09.688>Java <00:18:09.844>app <00:18:10.000>using

362
00:18:11.400 --> 00:18:11.700
standard.

363
00:18:12.800 --> 00:18:15.300
<00:18:12.800>J <00:18:12.975>unit <00:18:13.149>tests <00:18:13.325>and <00:18:13.500>under <00:18:13.675>the <00:18:13.850>hood <00:18:14.024>it <00:18:14.200>uses

364
00:18:15.300 --> 00:18:15.600
reflection.

365
00:18:16.300 --> 00:18:19.600
<00:18:16.300>It <00:18:16.455>can <00:18:16.611>check <00:18:16.766>several <00:18:16.922>things. <00:18:17.077>It <00:18:17.233>can <00:18:17.388>check <00:18:17.544>naming <00:18:17.700>conventions.

366
00:18:19.600 --> 00:18:22.800
<00:18:19.600>It <00:18:19.755>can <00:18:19.911>check <00:18:20.066>which <00:18:20.222>types <00:18:20.377>you <00:18:20.533>use <00:18:20.688>where <00:18:20.844>which <00:18:21.000>annotations

367
00:18:22.800 --> 00:18:25.500
<00:18:22.800>what <00:18:23.033>are <00:18:23.266>dependencies <00:18:23.500>between <00:18:23.733>certain <00:18:23.966>layers <00:18:24.200>certain

368
00:18:25.500 --> 00:18:28.500
<00:18:25.500>packages <00:18:25.733>it <00:18:25.966>all <00:18:26.200>to <00:18:26.433>the <00:18:26.666>Box <00:18:26.900>supports

369
00:18:28.500 --> 00:18:32.300
<00:18:28.500>checking <00:18:28.655>for <00:18:28.811>cycle <00:18:28.966>dependencies <00:18:29.122>and <00:18:29.277>and <00:18:29.433>much <00:18:29.588>more. <00:18:29.744>I've <00:18:29.900>added

370
00:18:32.300 --> 00:18:35.400
<00:18:32.300>some <00:18:32.440>examples <00:18:32.580>here <00:18:32.720>so <00:18:32.860>you <00:18:33.000>can <00:18:33.139>see <00:18:33.280>here <00:18:33.419>how <00:18:33.560>to <00:18:33.700>check

371
00:18:35.400 --> 00:18:38.700
<00:18:35.400>if <00:18:35.633>for <00:18:35.866>example, <00:18:36.100>you <00:18:36.333>only <00:18:36.566>allow <00:18:36.800>interfaces

372
00:18:38.700 --> 00:18:41.400
<00:18:38.700>to <00:18:38.855>be <00:18:39.011>in <00:18:39.166>in <00:18:39.322>one <00:18:39.477>package <00:18:39.633>or <00:18:39.788>second <00:18:39.944>example, <00:18:40.100>is

373
00:18:41.400 --> 00:18:44.300
<00:18:41.400>that <00:18:41.633>every <00:18:41.866>class <00:18:42.100>in <00:18:42.333>a <00:18:42.566>service <00:18:42.800>package

374
00:18:44.300 --> 00:18:47.500
<00:18:44.300>needs <00:18:44.475>to <00:18:44.649>have <00:18:44.825>a <00:18:45.000>suffix <00:18:45.175>service. <00:18:45.350>So <00:18:45.524>to <00:18:45.700>enforce

375
00:18:47.500 --> 00:18:50.900
<00:18:47.500>a <00:18:47.640>name <00:18:47.780>in <00:18:47.920>convention <00:18:48.060>or <00:18:48.200>to <00:18:48.340>enforce <00:18:48.480>that <00:18:48.620>all <00:18:48.760>classes <00:18:48.900>should

376
00:18:50.900 --> 00:18:53.300
<00:18:50.900>be <00:18:51.040>annotated <00:18:51.180>in <00:18:51.320>a <00:18:51.460>certain <00:18:51.600>way <00:18:51.740>based <00:18:51.880>on <00:18:52.020>the <00:18:52.160>framework <00:18:52.300>and

377
00:18:53.300 --> 00:18:56.400
<00:18:53.300>blah <00:18:53.399>blah <00:18:53.500>so <00:18:53.600>you <00:18:53.700>can <00:18:53.800>do <00:18:53.899>a <00:18:54.000>lot <00:18:54.100>of <00:18:54.200>cool <00:18:54.300>things <00:18:54.399>with <00:18:54.500>with <00:18:54.600>art <00:18:54.700>unit,

378
00:18:56.400 --> 00:18:59.500
<00:18:56.400>which <00:18:56.680>adds <00:18:56.960>something <00:18:57.240>that's <00:18:57.520>on <00:18:57.800>our

379
00:18:59.500 --> 00:19:01.400
<00:18:59.500>Cube <00:18:59.733>doesn't <00:18:59.966>support <00:19:00.200>out <00:19:00.433>of <00:19:00.666>the <00:19:00.900>box.

380
00:19:03.600 --> 00:19:06.600
<00:19:03.600>and <00:19:03.755>then <00:19:03.911>we <00:19:04.066>had <00:19:04.222>to <00:19:04.377>solve <00:19:04.533>this <00:19:04.688>last <00:19:04.844>problem, <00:19:05.000>which

381
00:19:06.600 --> 00:19:09.800
<00:19:06.600>was <00:19:06.879>how <00:19:07.159>do <00:19:07.439>we <00:19:07.719>detect <00:19:08.000>framework

382
00:19:09.800 --> 00:19:12.500
<00:19:09.800>specific <00:19:09.975>issues <00:19:10.149>something <00:19:10.325>that's <00:19:10.500>not <00:19:10.675>supported <00:19:10.850>by <00:19:11.024>any <00:19:11.200>of

383
00:19:12.500 --> 00:19:15.300
<00:19:12.500>these <00:19:12.700>tools <00:19:12.900>out <00:19:13.100>of <00:19:13.300>the <00:19:13.500>box <00:19:13.700>because <00:19:13.900>as

384
00:19:15.300 --> 00:19:18.300
<00:19:15.300>I <00:19:15.440>mentioned <00:19:15.580>we <00:19:15.720>use <00:19:15.860>the <00:19:16.000>center, <00:19:16.139>press <00:19:16.280>Java <00:19:16.419>Frameworks <00:19:16.560>Adobe <00:19:16.700>experience

385
00:19:18.300 --> 00:19:22.400
<00:19:18.300>manager <00:19:18.475>sap <00:19:18.649>6 <00:19:18.825>and <00:19:19.000>there <00:19:19.175>are <00:19:19.350>no <00:19:19.524>rules <00:19:19.700>in

386
00:19:21.400 --> 00:19:24.400
<00:19:21.400>Sonic <00:19:21.633>you <00:19:21.866>for <00:19:22.100>that <00:19:22.333>so <00:19:22.566>we <00:19:22.800>had

387
00:19:24.400 --> 00:19:26.600
<00:19:24.400>to <00:19:24.680>write <00:19:24.960>our <00:19:25.240>own <00:19:25.520>rules <00:19:25.800>and

388
00:19:27.800 --> 00:19:30.100
<00:19:27.800>Basically, <00:19:28.033>what <00:19:28.266>we <00:19:28.500>did <00:19:28.733>is <00:19:28.966>we <00:19:29.200>used

389
00:19:30.100 --> 00:19:33.800
<00:19:30.100>those <00:19:30.207>coding <00:19:30.315>guidelines <00:19:30.423>we <00:19:30.530>had <00:19:30.638>before <00:19:30.746>it <00:19:30.853>was <00:19:30.961>kind <00:19:31.069>of <00:19:31.176>on <00:19:31.284>paper <00:19:31.392>in <00:19:31.500>Confluence

390
00:19:33.800 --> 00:19:36.500
<00:19:33.800>and <00:19:34.266>we <00:19:34.733>automated <00:19:35.200>them

391
00:19:36.500 --> 00:19:38.800
<00:19:36.500>and <00:19:36.733>turned <00:19:36.966>them <00:19:37.200>into <00:19:37.433>custom <00:19:37.666>solarcube <00:19:37.900>rules.

392
00:19:39.400 --> 00:19:42.300
<00:19:39.400>So <00:19:39.600>basically <00:19:39.800>our <00:19:40.000>approach <00:19:40.200>was <00:19:40.400>that <00:19:40.600>we <00:19:40.800>need

393
00:19:42.300 --> 00:19:45.300
<00:19:42.300>to <00:19:42.427>have <00:19:42.554>high <00:19:42.681>level <00:19:42.809>of <00:19:42.936>automation <00:19:43.063>also <00:19:43.190>here <00:19:43.318>to <00:19:43.445>actually <00:19:43.572>ensure <00:19:43.700>that

394
00:19:45.300 --> 00:19:48.700
<00:19:45.300>everyone <00:19:45.475>is <00:19:45.649>is <00:19:45.825>adhering <00:19:46.000>to <00:19:46.175>to <00:19:46.350>the <00:19:46.524>guidelines <00:19:46.700>because

395
00:19:48.700 --> 00:19:51.400
<00:19:48.700>if <00:19:48.980>it's <00:19:49.260>not <00:19:49.540>automated, <00:19:49.820>it's <00:19:50.100>probably

396
00:19:51.400 --> 00:19:54.700
<00:19:51.400>won't <00:19:51.527>be <00:19:51.654>used <00:19:51.781>or <00:19:51.909>it's <00:19:52.036>probably <00:19:52.163>won't <00:19:52.290>be <00:19:52.418>used <00:19:52.545>by <00:19:52.672>by <00:19:52.800>all

397
00:19:54.700 --> 00:19:57.700
<00:19:54.700>developers. <00:19:54.875>This <00:19:55.050>is <00:19:55.225>just <00:19:55.400>one <00:19:55.575>example <00:19:55.750>of <00:19:55.925>one <00:19:56.100>one

398
00:19:57.700 --> 00:20:01.000
<00:19:57.700>rule <00:19:57.933>how <00:19:58.166>it <00:19:58.400>looks <00:19:58.633>like <00:19:58.866>and <00:19:59.100>of

399
00:20:00.300 --> 00:20:04.900
<00:20:00.300>course, <00:20:00.475>it's <00:20:00.649>important <00:20:00.825>that <00:20:01.000>we <00:20:01.175>also <00:20:01.350>use <00:20:01.524>sonarland <00:20:01.700>so

400
00:20:04.900 --> 00:20:08.100
<00:20:04.900>that <00:20:05.075>we <00:20:05.250>also <00:20:05.425>get <00:20:05.600>all <00:20:05.775>this <00:20:05.950>errors <00:20:06.125>custom <00:20:06.300>errors

401
00:20:07.100 --> 00:20:10.900
<00:20:07.100>reported <00:20:07.379>in <00:20:07.659>our <00:20:07.939>development <00:20:08.219>ID. <00:20:08.500>So

402
00:20:10.900 --> 00:20:13.200
<00:20:10.900>we <00:20:11.100>don't <00:20:11.300>want <00:20:11.500>errors <00:20:11.700>reported <00:20:11.900>late <00:20:12.100>when <00:20:12.300>we

403
00:20:13.200 --> 00:20:16.500
<00:20:13.200>open <00:20:13.293>the <00:20:13.386>pool <00:20:13.480>request. <00:20:13.573>We <00:20:13.666>want <00:20:13.760>them <00:20:13.853>to <00:20:13.946>report <00:20:14.040>it <00:20:14.133>as <00:20:14.226>soon <00:20:14.320>as <00:20:14.413>possible <00:20:14.506>for <00:20:14.600>so

404
00:20:16.500 --> 00:20:17.200
<00:20:16.500>for <00:20:16.710>that <00:20:16.920>we <00:20:17.130>use

405
00:20:18.100 --> 00:20:19.500
<00:20:18.100>We <00:20:18.730>use <00:20:19.360>finally.

406
00:20:20.700 --> 00:20:23.700
<00:20:20.700>And <00:20:20.980>yeah, <00:20:21.260>that's <00:20:21.540>basically <00:20:21.820>it <00:20:22.100>and

407
00:20:23.700 --> 00:20:26.800
<00:20:23.700>with <00:20:23.980>this <00:20:24.260>automatic <00:20:24.540>checks <00:20:24.820>combined <00:20:25.100>with

408
00:20:26.800 --> 00:20:29.600
<00:20:26.800>pull <00:20:27.149>request <00:20:27.500>decoration. <00:20:27.850>This <00:20:28.200>really

409
00:20:29.600 --> 00:20:32.700
<00:20:29.600>helped <00:20:29.774>us <00:20:29.949>ensure <00:20:30.125>that <00:20:30.300>guidelines <00:20:30.475>and <00:20:30.649>and <00:20:30.824>best <00:20:31.000>practices

410
00:20:32.700 --> 00:20:35.600
<00:20:32.700>that <00:20:32.900>we <00:20:33.100>aligned <00:20:33.300>on <00:20:33.500>actually <00:20:33.700>really <00:20:33.900>do <00:20:34.100>get

411
00:20:35.600 --> 00:20:38.200
<00:20:35.600>applied <00:20:35.949>by <00:20:36.300>developers <00:20:36.649>across <00:20:37.000>projects.

412
00:20:39.500 --> 00:20:42.400
<00:20:39.500>And <00:20:39.655>that's <00:20:39.811>all <00:20:39.966>for <00:20:40.122>my <00:20:40.277>part <00:20:40.433>in <00:20:40.588>the <00:20:40.744>second <00:20:40.900>part.

413
00:20:42.400 --> 00:20:45.700
<00:20:42.400>We're <00:20:42.540>going <00:20:42.680>to <00:20:42.820>do <00:20:42.960>some <00:20:43.100>some <00:20:43.240>live <00:20:43.380>coding <00:20:43.520>and <00:20:43.660>my <00:20:43.800>colleague

414
00:20:45.700 --> 00:20:49.200
<00:20:45.700>Martin <00:20:45.827>will <00:20:45.954>show <00:20:46.081>you <00:20:46.209>how <00:20:46.336>you <00:20:46.463>can <00:20:46.590>create <00:20:46.718>your <00:20:46.845>own <00:20:46.972>custom <00:20:47.100>solar

415
00:20:48.200 --> 00:20:50.600
<00:20:48.200>rules <00:20:48.666>in <00:20:49.133>job, <00:20:49.600>but

416
00:20:57.400 --> 00:21:00.600
<00:20:57.400>Hi, <00:20:57.527>everybody, <00:20:57.654>really <00:20:57.781>glad <00:20:57.909>to <00:20:58.036>be <00:20:58.163>here. <00:20:58.290>My <00:20:58.418>name <00:20:58.545>is <00:20:58.672>Martin <00:20:58.800>and

417
00:21:00.600 --> 00:21:03.900
<00:21:00.600>I'll <00:21:00.716>show <00:21:00.833>you <00:21:00.949>a <00:21:01.066>second <00:21:01.183>part <00:21:01.300>of <00:21:01.416>this <00:21:01.533>presentation, <00:21:01.649>which <00:21:01.766>is <00:21:01.883>a <00:21:02.000>practical

418
00:21:03.900 --> 00:21:06.400
<00:21:03.900>demonstration <00:21:04.100>how <00:21:04.300>to <00:21:04.500>make <00:21:04.700>your <00:21:04.900>own <00:21:05.100>custom <00:21:05.300>rules.

419
00:21:07.200 --> 00:21:10.300
<00:21:07.200>So <00:21:07.355>first <00:21:07.511>of <00:21:07.666>all <00:21:07.822>to <00:21:07.977>continue <00:21:08.133>on <00:21:08.288>what <00:21:08.444>Daniel <00:21:08.600>said

420
00:21:10.300 --> 00:21:13.700
<00:21:10.300>basically <00:21:10.427>we <00:21:10.554>have <00:21:10.681>our <00:21:10.809>internal <00:21:10.936>guidelines <00:21:11.063>and <00:21:11.190>we <00:21:11.318>wanted <00:21:11.445>to <00:21:11.572>somehow <00:21:11.700>enforce

421
00:21:13.700 --> 00:21:16.200
<00:21:13.700>them <00:21:13.875>and <00:21:14.050>I <00:21:14.225>can <00:21:14.400>quickly <00:21:14.575>show <00:21:14.750>you <00:21:14.925>the <00:21:15.100>open

422
00:21:16.200 --> 00:21:19.400
<00:21:16.200>source <00:21:16.375>our <00:21:16.550>own <00:21:16.725>project <00:21:16.900>which <00:21:17.075>contains <00:21:17.250>this <00:21:17.425>Customs <00:21:17.600>owner

423
00:21:19.400 --> 00:21:22.600
<00:21:19.400>Cube <00:21:19.555>rules <00:21:19.711>and <00:21:19.866>for <00:21:20.022>each <00:21:20.177>guideline, <00:21:20.333>we <00:21:20.488>have <00:21:20.644>our <00:21:20.800>separate

424
00:21:22.600 --> 00:21:25.900
<00:21:22.600>Customs <00:21:22.755>on <00:21:22.911>a <00:21:23.066>rule <00:21:23.222>which <00:21:23.377>then <00:21:23.533>can <00:21:23.688>be <00:21:23.844>integrated <00:21:24.000>with

425
00:21:25.900 --> 00:21:28.500
<00:21:25.900>your <00:21:26.100>editor <00:21:26.300>and <00:21:26.500>you <00:21:26.700>can <00:21:26.900>automatically <00:21:27.100>see <00:21:27.300>warnings

426
00:21:28.500 --> 00:21:31.400
<00:21:28.500>for <00:21:28.655>those <00:21:28.811>specific <00:21:28.966>violations. <00:21:29.122>And <00:21:29.277>I <00:21:29.433>think <00:21:29.588>that's <00:21:29.744>quite <00:21:29.900>great.

427
00:21:31.400 --> 00:21:34.100
<00:21:31.400>But <00:21:31.600>since <00:21:31.800>this <00:21:32.000>is <00:21:32.200>very <00:21:32.400>very <00:21:32.600>specific <00:21:32.800>to

428
00:21:34.100 --> 00:21:37.400
<00:21:34.100>the <00:21:34.216>technology. <00:21:34.333>We <00:21:34.449>are <00:21:34.566>using <00:21:34.683>our <00:21:34.800>project. <00:21:34.916>I <00:21:35.033>will <00:21:35.149>show <00:21:35.266>you <00:21:35.383>in <00:21:35.500>these

429
00:21:37.400 --> 00:21:40.200
<00:21:37.400>demonstration <00:21:37.555>a <00:21:37.711>more <00:21:37.866>generic <00:21:38.022>Java <00:21:38.177>rule. <00:21:38.333>So <00:21:38.488>we <00:21:38.644>will <00:21:38.800>create

430
00:21:40.200 --> 00:21:43.400
<00:21:40.200>a <00:21:40.316>new <00:21:40.433>sonar <00:21:40.550>Cube <00:21:40.666>role <00:21:40.783>which <00:21:40.900>will <00:21:41.016>check <00:21:41.133>if <00:21:41.250>a <00:21:41.366>method <00:21:41.483>in <00:21:41.600>Java.

431
00:21:43.400 --> 00:21:46.700
<00:21:43.400>It <00:21:43.575>turns <00:21:43.750>the <00:21:43.925>old <00:21:44.100>util <00:21:44.275>date <00:21:44.450>class <00:21:44.625>basically <00:21:44.800>the

432
00:21:46.700 --> 00:21:49.400
<00:21:46.700>type <00:21:46.840>and <00:21:46.980>if <00:21:47.120>it <00:21:47.260>does <00:21:47.400>we <00:21:47.540>will <00:21:47.680>say <00:21:47.820>something <00:21:47.960>in <00:21:48.100>lines

433
00:21:49.400 --> 00:21:52.300
<00:21:49.400>of <00:21:49.555>please <00:21:49.711>return <00:21:49.866>something <00:21:50.022>new <00:21:50.177>for <00:21:50.333>example <00:21:50.488>local <00:21:50.644>date <00:21:50.800>and

434
00:21:52.300 --> 00:21:55.400
<00:21:52.300>use <00:21:52.407>that <00:21:52.515>type <00:21:52.623>and <00:21:52.730>just <00:21:52.838>to <00:21:52.946>quickly <00:21:53.053>show <00:21:53.161>you <00:21:53.269>this <00:21:53.376>as <00:21:53.484>well. <00:21:53.592>So <00:21:53.700>this

435
00:21:55.400 --> 00:21:58.600
<00:21:55.400>is <00:21:55.540>open <00:21:55.680>source <00:21:55.820>now <00:21:55.960>and <00:21:56.100>it's <00:21:56.240>very <00:21:56.380>easy <00:21:56.520>to <00:21:56.660>install. <00:21:56.800>So

436
00:21:58.600 --> 00:22:01.000
<00:21:58.600>if <00:21:58.755>you <00:21:58.911>whenever <00:21:59.066>you <00:21:59.222>really <00:21:59.377>want <00:21:59.533>to <00:21:59.688>decide <00:21:59.844>you <00:22:00.000>can

437
00:22:01.200 --> 00:22:04.200
<00:22:01.200>create <00:22:01.355>your <00:22:01.511>own <00:22:01.666>rules <00:22:01.822>and <00:22:01.977>and <00:22:02.133>open <00:22:02.288>source <00:22:02.444>them <00:22:02.600>or

438
00:22:04.200 --> 00:22:07.000
<00:22:04.200>just <00:22:04.375>use <00:22:04.550>them <00:22:04.725>internally <00:22:04.900>if <00:22:05.075>you <00:22:05.250>want <00:22:05.425>so <00:22:05.600>to

439
00:22:07.100 --> 00:22:10.300
<00:22:07.100>Quickly <00:22:07.240>start <00:22:07.379>off. <00:22:07.520>How <00:22:07.659>do <00:22:07.800>you <00:22:07.939>even <00:22:08.080>go <00:22:08.219>about <00:22:08.360>creating <00:22:08.500>your

440
00:22:10.300 --> 00:22:14.100
<00:22:10.300>own <00:22:10.533>sonarcube <00:22:10.766>rules? <00:22:11.000>So <00:22:11.233>luckily <00:22:11.466>the <00:22:11.700>we

441
00:22:13.100 --> 00:22:16.500
<00:22:13.100>have <00:22:13.227>a <00:22:13.354>project <00:22:13.481>that <00:22:13.609>can <00:22:13.736>be <00:22:13.863>used <00:22:13.990>as <00:22:14.118>a <00:22:14.245>starting <00:22:14.372>point <00:22:14.500>and

442
00:22:16.500 --> 00:22:19.200
<00:22:16.500>it's <00:22:16.700>it's <00:22:16.900>developed <00:22:17.100>by <00:22:17.300>the <00:22:17.500>the <00:22:17.700>sonar <00:22:17.900>Source

443
00:22:19.200 --> 00:22:22.600
<00:22:19.200>company, <00:22:19.355>which <00:22:19.511>is <00:22:19.666>the <00:22:19.822>creator <00:22:19.977>of <00:22:20.133>sonar <00:22:20.288>Cube <00:22:20.444>also <00:22:20.600>a

444
00:22:22.600 --> 00:22:25.300
<00:22:22.600>quick <00:22:22.707>shoutout <00:22:22.815>to <00:22:22.923>them <00:22:23.030>because <00:22:23.138>they <00:22:23.246>also <00:22:23.353>have <00:22:23.461>a <00:22:23.569>booth <00:22:23.676>over <00:22:23.784>there <00:22:23.892>so <00:22:24.000>you

445
00:22:25.300 --> 00:22:28.400
<00:22:25.300>can <00:22:25.407>go <00:22:25.515>over <00:22:25.623>and <00:22:25.730>see <00:22:25.838>them. <00:22:25.946>So <00:22:26.053>I'd <00:22:26.161>like <00:22:26.269>to <00:22:26.376>say <00:22:26.484>hello <00:22:26.592>to <00:22:26.700>them

446
00:22:28.400 --> 00:22:31.000
<00:22:28.400>and <00:22:28.555>I <00:22:28.711>can <00:22:28.866>quickly <00:22:29.022>show <00:22:29.177>you <00:22:29.333>here. <00:22:29.488>They <00:22:29.644>have <00:22:29.800>a

447
00:22:31.600 --> 00:22:34.700
<00:22:31.600>GitHub <00:22:31.800>repository <00:22:32.000>called <00:22:32.199>sonar <00:22:32.399>Java <00:22:32.600>which <00:22:32.800>actually <00:22:33.000>contains

448
00:22:34.700 --> 00:22:37.600
<00:22:34.700>all <00:22:34.827>the <00:22:34.954>default <00:22:35.081>rules <00:22:35.209>that <00:22:35.336>you <00:22:35.463>get <00:22:35.590>if <00:22:35.718>you <00:22:35.845>just <00:22:35.972>install <00:22:36.100>solar

449
00:22:37.600 --> 00:22:40.300
<00:22:37.600>Cube <00:22:37.833>and <00:22:38.066>inside <00:22:38.300>this <00:22:38.533>docs <00:22:38.766>directory. <00:22:39.000>There

450
00:22:40.300 --> 00:22:42.100
<00:22:40.300>is <00:22:40.580>a <00:22:40.860>Java <00:22:41.139>custom <00:22:41.419>rules <00:22:41.700>example

451
00:22:43.100 --> 00:22:46.700
<00:22:43.100>Subdirectory <00:22:43.300>that <00:22:43.500>connects <00:22:43.699>that <00:22:43.899>that <00:22:44.100>has <00:22:44.300>a <00:22:44.500>maven

452
00:22:46.700 --> 00:22:50.000
<00:22:46.700>project <00:22:46.816>that <00:22:46.933>you <00:22:47.050>can <00:22:47.166>just <00:22:47.283>download <00:22:47.400>and <00:22:47.516>use <00:22:47.633>it <00:22:47.750>as <00:22:47.866>a <00:22:47.983>baseline <00:22:48.100>for

453
00:22:49.200 --> 00:22:52.600
<00:22:49.200>your <00:22:49.480>for <00:22:49.760>your <00:22:50.040>rules. <00:22:50.320>Also <00:22:50.600>a

454
00:22:52.600 --> 00:22:55.500
<00:22:52.600>quick <00:22:52.755>note. <00:22:52.911>It <00:22:53.066>uses <00:22:53.222>a <00:22:53.377>MIT <00:22:53.533>no <00:22:53.688>attribution <00:22:53.844>license <00:22:54.000>so

455
00:22:55.500 --> 00:22:58.500
<00:22:55.500>you <00:22:55.607>can <00:22:55.715>easily <00:22:55.823>use <00:22:55.930>it <00:22:56.038>and <00:22:56.146>don't <00:22:56.253>have <00:22:56.361>to <00:22:56.469>worry <00:22:56.576>about <00:22:56.684>any <00:22:56.792>legal <00:22:56.900>issues.

456
00:22:58.500 --> 00:23:01.300
<00:22:58.500>So <00:22:58.733>that's <00:22:58.966>great <00:22:59.200>as <00:22:59.433>well. <00:22:59.666>So <00:22:59.900>that's

457
00:23:01.300 --> 00:23:04.100
<00:23:01.300>exactly <00:23:01.427>what <00:23:01.554>I <00:23:01.681>did. <00:23:01.809>I <00:23:01.936>downloaded <00:23:02.063>this <00:23:02.190>project <00:23:02.318>and <00:23:02.445>we <00:23:02.572>will <00:23:02.700>use

458
00:23:04.100 --> 00:23:07.100
<00:23:04.100>it <00:23:04.300>to <00:23:04.500>create <00:23:04.699>our <00:23:04.899>own <00:23:05.100>Smalls <00:23:05.300>Rule <00:23:05.500>now,

459
00:23:07.100 --> 00:23:10.200
<00:23:07.100>so <00:23:07.274>just <00:23:07.449>quickly <00:23:07.625>show <00:23:07.800>you <00:23:07.975>how <00:23:08.149>this <00:23:08.324>looks <00:23:08.500>like.

460
00:23:10.200 --> 00:23:13.200
<00:23:10.200>This <00:23:10.340>is <00:23:10.480>the <00:23:10.620>this <00:23:10.760>is <00:23:10.900>the <00:23:11.040>project <00:23:11.180>and <00:23:11.320>I <00:23:11.460>open <00:23:11.600>it

461
00:23:13.200 --> 00:23:16.700
<00:23:13.200>in <00:23:13.307>IntelliJ. <00:23:13.415>As <00:23:13.523>you <00:23:13.630>can <00:23:13.738>see <00:23:13.846>on <00:23:13.953>the <00:23:14.061>left <00:23:14.169>side. <00:23:14.276>There <00:23:14.384>are <00:23:14.492>already <00:23:14.600>a

462
00:23:16.700 --> 00:23:20.000
<00:23:16.700>couple <00:23:16.827>of <00:23:16.954>files <00:23:17.081>here <00:23:17.209>quite <00:23:17.336>a <00:23:17.463>lot <00:23:17.590>of <00:23:17.718>them. <00:23:17.845>Actually. <00:23:17.972>It's <00:23:18.100>because

463
00:23:19.300 --> 00:23:23.100
<00:23:19.300>this <00:23:19.533>project <00:23:19.766>comes <00:23:20.000>with <00:23:20.233>already <00:23:20.466>pre-populated <00:23:20.700>with

464
00:23:22.100 --> 00:23:25.200
<00:23:22.100>a <00:23:22.274>couple <00:23:22.449>of <00:23:22.625>dummy <00:23:22.800>rolls <00:23:22.975>that <00:23:23.149>that <00:23:23.324>are <00:23:23.500>here

465
00:23:25.200 --> 00:23:28.400
<00:23:25.200>just <00:23:25.307>so <00:23:25.415>you <00:23:25.523>can <00:23:25.630>more <00:23:25.738>easily <00:23:25.846>understand <00:23:25.953>how <00:23:26.061>to <00:23:26.169>go <00:23:26.276>about <00:23:26.384>creating <00:23:26.492>your <00:23:26.600>rules

466
00:23:28.400 --> 00:23:31.400
<00:23:28.400>and <00:23:28.600>right <00:23:28.800>here. <00:23:29.000>I <00:23:29.200>have <00:23:29.400>a <00:23:29.600>the <00:23:29.800>regular

467
00:23:31.400 --> 00:23:34.000
<00:23:31.400>pom <00:23:31.540>file <00:23:31.680>for <00:23:31.820>this <00:23:31.960>project <00:23:32.100>open <00:23:32.240>just <00:23:32.380>to <00:23:32.520>quickly <00:23:32.660>show <00:23:32.800>you

468
00:23:34.400 --> 00:23:37.900
<00:23:34.400>some <00:23:34.600>of <00:23:34.800>the <00:23:35.000>specifics <00:23:35.200>it's <00:23:35.400>generally <00:23:35.600>normal <00:23:35.800>file

469
00:23:37.900 --> 00:23:40.700
<00:23:37.900>for <00:23:38.040>me <00:23:38.180>and <00:23:38.320>projects, <00:23:38.460>but <00:23:38.600>you <00:23:38.740>can <00:23:38.880>see <00:23:39.020>here <00:23:39.160>the <00:23:39.300>properties

470
00:23:40.700 --> 00:23:43.000
<00:23:40.700>for <00:23:40.980>some <00:23:41.260>of <00:23:41.540>the <00:23:41.820>sooner <00:23:42.100>dependenc

471
00:23:43.100 --> 00:23:46.800
<00:23:43.100>So <00:23:43.216>how <00:23:43.333>this <00:23:43.449>works <00:23:43.566>is <00:23:43.683>that <00:23:43.800>we <00:23:43.916>use <00:23:44.033>sonar <00:23:44.149>Cube <00:23:44.266>and <00:23:44.383>their <00:23:44.500>dependency

472
00:23:46.800 --> 00:23:49.100
<00:23:46.800>that <00:23:47.033>analyze <00:23:47.266>statically <00:23:47.500>the <00:23:47.733>code <00:23:47.966>and <00:23:48.200>then

473
00:23:49.100 --> 00:23:52.300
<00:23:49.100>we <00:23:49.379>just <00:23:49.659>utilize <00:23:49.939>those <00:23:50.219>classes <00:23:50.500>and

474
00:23:52.300 --> 00:23:55.400
<00:23:52.300>their <00:23:52.475>dependencies <00:23:52.649>to <00:23:52.825>add <00:23:53.000>our <00:23:53.175>custom <00:23:53.350>rules <00:23:53.524>that <00:23:53.700>our

475
00:23:55.400 --> 00:23:59.400
<00:23:55.400>custom <00:23:55.527>checks <00:23:55.654>so <00:23:55.781>we <00:23:55.909>can <00:23:56.036>we <00:23:56.163>can <00:23:56.290>add <00:23:56.418>our <00:23:56.545>custom <00:23:56.672>guidelines <00:23:56.800>into

476
00:23:58.400 --> 00:24:01.400
<00:23:58.400>rules. <00:23:58.750>So <00:23:59.100>not <00:23:59.450>much <00:23:59.800>to

477
00:24:01.400 --> 00:24:05.000
<00:24:01.400>say <00:24:01.507>here <00:24:01.615>only <00:24:01.723>only <00:24:01.830>a <00:24:01.938>small <00:24:02.046>management <00:24:02.153>if <00:24:02.261>you <00:24:02.369>want <00:24:02.476>to <00:24:02.584>check <00:24:02.692>some <00:24:02.800>third-party

478
00:24:04.100 --> 00:24:07.300
<00:24:04.100>codes <00:24:04.255>and <00:24:04.411>libraries <00:24:04.566>you <00:24:04.722>of <00:24:04.877>course <00:24:05.033>have <00:24:05.188>to <00:24:05.344>add <00:24:05.500>them

479
00:24:07.300 --> 00:24:10.700
<00:24:07.300>into <00:24:07.399>poem <00:24:07.500>because <00:24:07.600>otherwise <00:24:07.700>you <00:24:07.800>are <00:24:07.899>going <00:24:08.000>to <00:24:08.100>be <00:24:08.200>able <00:24:08.300>just <00:24:08.399>to <00:24:08.500>test <00:24:08.600>basic <00:24:08.700>Java

480
00:24:10.700 --> 00:24:11.100
functionalities.

481
00:24:12.300 --> 00:24:15.300
<00:24:12.300>So <00:24:12.427>I <00:24:12.554>think <00:24:12.681>we <00:24:12.809>can <00:24:12.936>start <00:24:13.063>off <00:24:13.190>and <00:24:13.318>start <00:24:13.445>creating <00:24:13.572>our <00:24:13.700>own

482
00:24:15.300 --> 00:24:19.200
<00:24:15.300>custom <00:24:15.427>rule. <00:24:15.554>So <00:24:15.681>first, <00:24:15.809>let's <00:24:15.936>take <00:24:16.063>a <00:24:16.190>look <00:24:16.318>at <00:24:16.445>this <00:24:16.572>checks <00:24:16.700>package.

483
00:24:19.200 --> 00:24:23.200
<00:24:19.200>So <00:24:19.400>here <00:24:19.600>we <00:24:19.800>have <00:24:20.000>already <00:24:20.200>implemented <00:24:20.400>rules <00:24:20.600>that

484
00:24:22.200 --> 00:24:25.400
<00:24:22.200>do <00:24:22.480>the <00:24:22.760>actual <00:24:23.040>checking. <00:24:23.320>I'll <00:24:23.600>just

485
00:24:25.400 --> 00:24:28.500
<00:24:25.400>create <00:24:25.555>a <00:24:25.711>copy <00:24:25.866>here <00:24:26.022>of <00:24:26.177>the <00:24:26.333>existing <00:24:26.488>one <00:24:26.644>and <00:24:26.800>call

486
00:24:28.500 --> 00:24:30.800
<00:24:28.500>it <00:24:29.200>avoid <00:24:29.900>returning.

487
00:24:32.300 --> 00:24:35.400
<00:24:32.300>They <00:24:32.475>type <00:24:32.649>Rule <00:24:32.825>and <00:24:33.000>I <00:24:33.175>think <00:24:33.350>I <00:24:33.524>can <00:24:33.700>delete

488
00:24:35.400 --> 00:24:37.300
<00:24:35.400>some <00:24:35.575>of <00:24:35.750>this <00:24:35.925>code <00:24:36.100>from <00:24:36.275>the <00:24:36.450>from <00:24:36.625>the <00:24:36.800>old.

489
00:24:38.400 --> 00:24:42.000
<00:24:38.400>From <00:24:38.527>the <00:24:38.654>old <00:24:38.781>class <00:24:38.909>and <00:24:39.036>we <00:24:39.163>will <00:24:39.290>just <00:24:39.418>leave <00:24:39.545>this <00:24:39.672>boilerplate <00:24:39.800>stuff

490
00:24:41.200 --> 00:24:43.400
<00:24:41.200>here <00:24:41.480>that <00:24:41.760>we <00:24:42.040>need <00:24:42.320>to <00:24:42.600>reuse.

491
00:24:44.800 --> 00:24:47.200
<00:24:44.800>And <00:24:44.927>this <00:24:45.054>is <00:24:45.181>the <00:24:45.309>place <00:24:45.436>where <00:24:45.563>we <00:24:45.690>will <00:24:45.818>have <00:24:45.945>to <00:24:46.072>implement <00:24:46.200>the

492
00:24:47.200 --> 00:24:50.100
<00:24:47.200>actual <00:24:47.400>logic <00:24:47.600>that <00:24:47.800>checks <00:24:48.000>what <00:24:48.200>our <00:24:48.400>rule <00:24:48.600>does

493
00:24:50.100 --> 00:24:53.500
<00:24:50.100>but <00:24:50.255>first. <00:24:50.411>I'd <00:24:50.566>like <00:24:50.722>to <00:24:50.877>take <00:24:51.033>a <00:24:51.188>quick <00:24:51.344>step <00:24:51.500>back

494
00:24:53.500 --> 00:24:56.300
<00:24:53.500>because <00:24:53.655>we'd <00:24:53.811>like <00:24:53.966>to <00:24:54.122>do <00:24:54.277>this <00:24:54.433>with <00:24:54.588>test <00:24:54.744>driven <00:24:54.900>development.

495
00:24:56.300 --> 00:24:59.400
<00:24:56.300>So <00:24:56.455>let's <00:24:56.611>first <00:24:56.766>first <00:24:56.922>write <00:24:57.077>a <00:24:57.233>test <00:24:57.388>and <00:24:57.544>then <00:24:57.700>check

496
00:24:59.400 --> 00:25:01.800
<00:24:59.400>whether <00:24:59.575>our <00:24:59.750>rule <00:24:59.925>actually <00:25:00.100>works <00:25:00.275>as <00:25:00.450>it's <00:25:00.625>supposed <00:25:00.800>to

497
00:25:02.500 --> 00:25:05.300
<00:25:02.500>To <00:25:02.675>work <00:25:02.850>so <00:25:03.025>you <00:25:03.200>might <00:25:03.375>wonder <00:25:03.550>how <00:25:03.725>do <00:25:03.900>we

498
00:25:05.300 --> 00:25:08.700
<00:25:05.300>actually <00:25:05.440>write <00:25:05.580>unit <00:25:05.720>tests <00:25:05.860>for <00:25:06.000>Customs <00:25:06.139>owner <00:25:06.280>rules? <00:25:06.419>And <00:25:06.560>if <00:25:06.700>you

499
00:25:08.700 --> 00:25:11.900
<00:25:08.700>just <00:25:08.816>crawl <00:25:08.933>a <00:25:09.050>little <00:25:09.166>bit <00:25:09.283>down <00:25:09.400>we <00:25:09.516>can <00:25:09.633>see <00:25:09.750>the <00:25:09.866>answer <00:25:09.983>here. <00:25:10.100>So

500
00:25:11.900 --> 00:25:15.100
<00:25:11.900>the <00:25:12.040>way <00:25:12.180>this <00:25:12.320>works <00:25:12.460>is <00:25:12.600>that <00:25:12.740>we <00:25:12.880>create <00:25:13.020>some <00:25:13.160>custom <00:25:13.300>code

501
00:25:14.100 --> 00:25:17.200
<00:25:14.100>Snippets, <00:25:14.449>which <00:25:14.800>doesn't <00:25:15.149>which <00:25:15.500>don't

502
00:25:17.200 --> 00:25:20.000
<00:25:17.200>necessarily <00:25:17.355>need <00:25:17.511>to <00:25:17.666>be <00:25:17.822>compilable <00:25:17.977>code. <00:25:18.133>It's <00:25:18.288>it <00:25:18.444>needs <00:25:18.600>to

503
00:25:20.500 --> 00:25:23.900
<00:25:20.500>be <00:25:20.655>at <00:25:20.811>least <00:25:20.966>parsible <00:25:21.122>and <00:25:21.277>we <00:25:21.433>will <00:25:21.588>add <00:25:21.744>violations <00:25:21.900>and

504
00:25:23.900 --> 00:25:26.300
<00:25:23.900>compliant <00:25:24.100>parts <00:25:24.300>of <00:25:24.500>the <00:25:24.700>code <00:25:24.900>there <00:25:25.100>which <00:25:25.300>will

505
00:25:26.300 --> 00:25:29.100
<00:25:26.300>then <00:25:26.455>be <00:25:26.611>used <00:25:26.766>to <00:25:26.922>test <00:25:27.077>our <00:25:27.233>custom <00:25:27.388>checks. <00:25:27.544>So <00:25:27.700>for

506
00:25:29.100 --> 00:25:32.400
<00:25:29.100>example <00:25:29.216>for <00:25:29.333>this <00:25:29.449>rule <00:25:29.566>that <00:25:29.683>already <00:25:29.800>came <00:25:29.916>bundled <00:25:30.033>we <00:25:30.149>can <00:25:30.266>see <00:25:30.383>this <00:25:30.500>comment

507
00:25:32.400 --> 00:25:36.100
<00:25:32.400>non-compliant <00:25:32.680>and <00:25:32.960>some <00:25:33.240>comment. <00:25:33.520>This <00:25:33.800>comment

508
00:25:35.100 --> 00:25:38.200
<00:25:35.100>is <00:25:35.300>not <00:25:35.500>just <00:25:35.699>a <00:25:35.899>comment. <00:25:36.100>It's <00:25:36.300>actually <00:25:36.500>going

509
00:25:38.200 --> 00:25:41.200
<00:25:38.200>to <00:25:38.355>be <00:25:38.511>pars <00:25:38.666>during <00:25:38.822>the <00:25:38.977>test <00:25:39.133>and <00:25:39.288>depending <00:25:39.444>on <00:25:39.600>our

510
00:25:41.200 --> 00:25:44.500
<00:25:41.200>check. <00:25:41.327>This <00:25:41.454>is <00:25:41.581>the <00:25:41.709>place <00:25:41.836>where <00:25:41.963>the <00:25:42.090>test <00:25:42.218>is <00:25:42.345>going <00:25:42.472>to <00:25:42.600>expect

511
00:25:44.500 --> 00:25:47.400
<00:25:44.500>our <00:25:44.675>custom <00:25:44.850>check <00:25:45.025>to <00:25:45.200>return <00:25:45.375>a <00:25:45.550>warning <00:25:45.725>with <00:25:45.900>this

512
00:25:47.400 --> 00:25:50.400
<00:25:47.400>specific <00:25:47.527>message. <00:25:47.654>So <00:25:47.781>this <00:25:47.909>is <00:25:48.036>the <00:25:48.163>way <00:25:48.290>we <00:25:48.418>will <00:25:48.545>actually <00:25:48.672>enforce <00:25:48.800>that

513
00:25:50.400 --> 00:25:54.000
<00:25:50.400>are <00:25:50.540>do <00:25:50.680>the <00:25:50.820>testing <00:25:50.960>for <00:25:51.100>our <00:25:51.240>own <00:25:51.380>Works <00:25:51.520>our <00:25:51.660>own <00:25:51.800>rules

514
00:25:53.400 --> 00:25:56.200
<00:25:53.400>before <00:25:53.600>we <00:25:53.800>deploy <00:25:54.000>them <00:25:54.200>and <00:25:54.400>use <00:25:54.600>them <00:25:54.800>for

515
00:25:56.200 --> 00:25:59.500
<00:25:56.200>for <00:25:56.550>company <00:25:56.900>lights <00:25:57.250>checks. <00:25:57.600>So

516
00:25:59.500 --> 00:26:02.000
<00:25:59.500>let's <00:25:59.675>go <00:25:59.850>ahead <00:26:00.025>and <00:26:00.200>create <00:26:00.375>our <00:26:00.550>own <00:26:00.725>code <00:26:00.900>snippet.

517
00:26:02.500 --> 00:26:05.400
<00:26:02.500>Let's <00:26:02.675>call <00:26:02.850>it <00:26:03.025>the <00:26:03.200>same <00:26:03.375>same <00:26:03.550>way <00:26:03.725>avoid <00:26:03.900>returning.

518
00:26:07.100 --> 00:26:09.700
<00:26:07.100>date <00:26:07.800>type <00:26:08.500>ruled.java

519
00:26:10.600 --> 00:26:13.100
<00:26:10.600>Where <00:26:10.833>is <00:26:11.066>it? <00:26:11.300>Okay, <00:26:11.533>and <00:26:11.766>we <00:26:12.000>can

520
00:26:13.100 --> 00:26:15.100
<00:26:13.100>just <00:26:13.379>write <00:26:13.659>something <00:26:13.939>simple <00:26:14.219>here <00:26:14.500>like

521
00:26:17.400 --> 00:26:19.500
<00:26:17.400>public <00:26:17.866>date <00:26:18.333>return <00:26:18.800>date

522
00:26:20.600 --> 00:26:23.700
<00:26:20.600>and <00:26:20.740>it <00:26:20.879>doesn't <00:26:21.020>really <00:26:21.159>matter <00:26:21.300>what <00:26:21.439>we <00:26:21.580>return. <00:26:21.719>It's <00:26:21.860>just <00:26:22.000>just

523
00:26:23.700 --> 00:26:26.300
<00:26:23.700>important <00:26:23.855>part <00:26:24.011>is <00:26:24.166>here <00:26:24.322>that <00:26:24.477>we <00:26:24.633>actually <00:26:24.788>have <00:26:24.944>the <00:26:25.100>date

524
00:26:26.300 --> 00:26:29.200
<00:26:26.300>the <00:26:26.475>date <00:26:26.649>class <00:26:26.825>and <00:26:27.000>I'll <00:26:27.175>also <00:26:27.350>add <00:26:27.524>an <00:26:27.700>import

525
00:26:29.200 --> 00:26:32.400
<00:26:29.200>here. <00:26:29.480>Let's <00:26:29.760>say <00:26:30.040>import <00:26:30.320>Java <00:26:30.600>you

526
00:26:32.400 --> 00:26:35.100
<00:26:32.400>tell <00:26:32.575>date. <00:26:32.750>So <00:26:32.925>the <00:26:33.100>way <00:26:33.275>they <00:26:33.450>analyzer <00:26:33.625>will <00:26:33.800>actually

527
00:26:35.100 --> 00:26:38.200
<00:26:35.100>work <00:26:35.216>is <00:26:35.333>that <00:26:35.449>it <00:26:35.566>will <00:26:35.683>be <00:26:35.800>smart <00:26:35.916>enough <00:26:36.033>from <00:26:36.149>the <00:26:36.266>solar <00:26:36.383>Cube <00:26:36.500>side.

528
00:26:38.200 --> 00:26:41.800
<00:26:38.200>Well <00:26:38.307>from <00:26:38.415>the <00:26:38.523>song <00:26:38.630>that <00:26:38.738>side <00:26:38.846>that <00:26:38.953>it <00:26:39.061>will <00:26:39.169>connect <00:26:39.276>this <00:26:39.384>date <00:26:39.492>object. <00:26:39.600>We

529
00:26:41.800 --> 00:26:44.100
<00:26:41.800>is <00:26:41.940>the <00:26:42.080>same <00:26:42.220>one <00:26:42.360>of <00:26:42.500>the <00:26:42.639>Java <00:26:42.780>util <00:26:42.919>date. <00:26:43.060>So <00:26:43.200>this

530
00:26:44.100 --> 00:26:47.400
<00:26:44.100>is <00:26:44.240>not <00:26:44.379>just <00:26:44.520>basic <00:26:44.659>static <00:26:44.800>analysis <00:26:44.939>that <00:26:45.080>the <00:26:45.219>compiler <00:26:45.360>would <00:26:45.500>do

531
00:26:47.400 --> 00:26:50.700
<00:26:47.400>at <00:26:47.516>the <00:26:47.633>first <00:26:47.750>step. <00:26:47.866>It <00:26:47.983>actually <00:26:48.100>will <00:26:48.216>try <00:26:48.333>to <00:26:48.450>get <00:26:48.566>some <00:26:48.683>additional <00:26:48.800>semantic

532
00:26:50.700 --> 00:26:53.900
<00:26:50.700>of <00:26:50.900>information <00:26:51.100>about <00:26:51.300>the <00:26:51.500>lines. <00:26:51.700>It's <00:26:51.900>analyzing <00:26:52.100>and

533
00:26:53.900 --> 00:26:56.300
<00:26:53.900>also <00:26:54.040>we <00:26:54.180>make <00:26:54.320>to <00:26:54.460>we <00:26:54.600>have <00:26:54.740>to <00:26:54.880>make <00:26:55.020>sure <00:26:55.160>that <00:26:55.300>this

534
00:26:56.300 --> 00:26:59.500
<00:26:56.300>non-compliant <00:26:56.500>lines <00:26:56.700>are <00:26:56.899>actually <00:26:57.100>put <00:26:57.300>here <00:26:57.500>and <00:26:57.700>we

535
00:26:59.500 --> 00:27:01.300
<00:26:59.500>can <00:26:59.733>say <00:26:59.966>a <00:27:00.200>message <00:27:00.433>in <00:27:00.666>lines <00:27:00.900>of

536
00:27:02.100 --> 00:27:03.900
<00:27:02.100>avoid <00:27:03.500>returning

537
00:27:04.800 --> 00:27:05.900
<00:27:04.800>Java <00:27:05.790>util

538
00:27:06.900 --> 00:27:09.400
<00:27:06.900>date <00:27:07.180>something <00:27:07.460>like <00:27:07.740>this <00:27:08.020>and <00:27:08.300>we

539
00:27:09.400 --> 00:27:12.400
<00:27:09.400>can <00:27:09.527>also <00:27:09.654>delete <00:27:09.781>this <00:27:09.909>as <00:27:10.036>this <00:27:10.163>is <00:27:10.290>not <00:27:10.418>important <00:27:10.545>and <00:27:10.672>add <00:27:10.800>for

540
00:27:12.400 --> 00:27:16.400
<00:27:12.400>example <00:27:12.575>something <00:27:12.750>that <00:27:12.925>is <00:27:13.100>compliant. <00:27:13.275>Let's <00:27:13.450>say <00:27:13.625>in <00:27:13.800>the

541
00:27:15.400 --> 00:27:18.400
<00:27:15.400>end <00:27:15.866>and <00:27:16.333>say, <00:27:16.800>okay.

542
00:27:19.900 --> 00:27:21.900
<00:27:19.900>Something <00:27:20.100>like <00:27:20.300>this <00:27:20.500>this <00:27:20.700>would <00:27:20.900>then <00:27:21.100>be <00:27:21.300>compliant.

543
00:27:22.800 --> 00:27:25.400
<00:27:22.800>So <00:27:23.033>we <00:27:23.266>now <00:27:23.500>have <00:27:23.733>a <00:27:23.966>snippet <00:27:24.200>of

544
00:27:25.400 --> 00:27:28.700
<00:27:25.400>code, <00:27:25.555>but <00:27:25.711>we <00:27:25.866>still <00:27:26.022>have <00:27:26.177>to <00:27:26.333>have <00:27:26.488>an <00:27:26.644>actual <00:27:26.800>unit

545
00:27:28.700 --> 00:27:31.400
<00:27:28.700>test <00:27:28.855>that <00:27:29.011>will <00:27:29.166>check <00:27:29.322>this <00:27:29.477>for <00:27:29.633>this <00:27:29.788>if <00:27:29.944>you <00:27:30.100>scroll

546
00:27:31.400 --> 00:27:34.900
<00:27:31.400>a <00:27:31.540>little <00:27:31.680>bit <00:27:31.820>down. <00:27:31.960>We <00:27:32.100>already <00:27:32.240>see <00:27:32.380>implemented <00:27:32.520>those <00:27:32.660>boilerplate <00:27:32.800>parts.

547
00:27:34.900 --> 00:27:37.800
<00:27:34.900>So <00:27:35.027>the <00:27:35.154>way <00:27:35.281>this <00:27:35.409>works <00:27:35.536>is <00:27:35.663>that <00:27:35.790>we <00:27:35.918>use <00:27:36.045>already <00:27:36.172>provided <00:27:36.300>classes

548
00:27:37.800 --> 00:27:40.400
<00:27:37.800>from <00:27:38.033>from <00:27:38.266>solar <00:27:38.500>dependencies. <00:27:38.733>So <00:27:38.966>there <00:27:39.200>is

549
00:27:40.400 --> 00:27:43.200
<00:27:40.400>this <00:27:40.555>check <00:27:40.711>verifier <00:27:40.866>which <00:27:41.022>allows <00:27:41.177>us <00:27:41.333>to <00:27:41.488>specify <00:27:41.644>which <00:27:41.800>code

550
00:27:43.200 --> 00:27:46.400
<00:27:43.200>snippet <00:27:43.327>that <00:27:43.454>we <00:27:43.581>want <00:27:43.709>to <00:27:43.836>verify <00:27:43.963>our <00:27:44.090>rules <00:27:44.218>on <00:27:44.345>and <00:27:44.472>we <00:27:44.600>also

551
00:27:46.400 --> 00:27:49.400
<00:27:46.400>gave <00:27:46.575>it <00:27:46.750>an <00:27:46.925>example <00:27:47.100>our <00:27:47.275>own <00:27:47.450>class <00:27:47.625>that <00:27:47.800>does

552
00:27:49.400 --> 00:27:52.000
<00:27:49.400>the <00:27:49.516>actual <00:27:49.633>checking <00:27:49.750>so <00:27:49.866>we <00:27:49.983>will <00:27:50.100>create <00:27:50.216>a <00:27:50.333>copy <00:27:50.450>of <00:27:50.566>that <00:27:50.683>so <00:27:50.800>we

553
00:27:52.100 --> 00:27:53.600
<00:27:52.100>can <00:27:52.324>try <00:27:52.550>it <00:27:52.774>out <00:27:53.000>and <00:27:53.225>let's <00:27:53.449>say

554
00:27:54.500 --> 00:27:57.400
<00:27:54.500>Avoid <00:27:54.850>returning <00:27:55.200>the <00:27:55.550>date <00:27:55.900>type

555
00:27:57.400 --> 00:27:58.200
<00:27:57.400>rule <00:27:58.120>test.

556
00:27:59.600 --> 00:28:02.900
<00:27:59.600>So <00:27:59.716>what <00:27:59.833>we <00:27:59.949>need <00:28:00.066>to <00:28:00.183>do <00:28:00.300>here <00:28:00.416>we <00:28:00.533>can <00:28:00.649>delete <00:28:00.766>this <00:28:00.883>and <00:28:01.000>just

557
00:28:02.900 --> 00:28:05.200
<00:28:02.900>replace <00:28:03.250>the <00:28:03.600>snippet <00:28:03.950>here. <00:28:04.300>So

558
00:28:05.200 --> 00:28:07.200
<00:28:05.200>it's <00:28:05.355>the <00:28:05.511>actual <00:28:05.666>one <00:28:05.822>that <00:28:05.977>we <00:28:06.133>need <00:28:06.288>to <00:28:06.444>use. <00:28:06.600>So

559
00:28:08.500 --> 00:28:10.400
<00:28:08.500>avoid <00:28:09.200>returning <00:28:09.900>date

560
00:28:12.100 --> 00:28:15.200
<00:28:12.100>type <00:28:12.274>rule.java <00:28:12.449>and <00:28:12.625>we <00:28:12.800>also <00:28:12.975>have <00:28:13.149>to <00:28:13.324>provide <00:28:13.500>it

561
00:28:15.200 --> 00:28:17.100
<00:28:15.200>an <00:28:15.400>instance <00:28:15.600>of <00:28:15.800>our <00:28:16.000>Checkers. <00:28:16.200>So <00:28:16.400>let's <00:28:16.600>say

562
00:28:18.200 --> 00:28:21.500
<00:28:18.200>This <00:28:18.327>is <00:28:18.454>the <00:28:18.581>exact <00:28:18.709>one <00:28:18.836>and <00:28:18.963>if <00:28:19.090>you <00:28:19.218>did <00:28:19.345>everything <00:28:19.472>correctly <00:28:19.600>we

563
00:28:21.500 --> 00:28:24.600
<00:28:21.500>can <00:28:21.627>immediately <00:28:21.754>try <00:28:21.881>to <00:28:22.009>run <00:28:22.136>this <00:28:22.263>test <00:28:22.390>and <00:28:22.518>see <00:28:22.645>the <00:28:22.772>expected <00:28:22.900>result

564
00:28:24.600 --> 00:28:27.300
<00:28:24.600>will <00:28:24.740>be <00:28:24.879>of <00:28:25.020>course <00:28:25.159>that <00:28:25.300>it <00:28:25.439>fails <00:28:25.580>but <00:28:25.719>also <00:28:25.860>it <00:28:26.000>should

565
00:28:27.300 --> 00:28:30.500
<00:28:27.300>be <00:28:27.475>a <00:28:27.649>specific <00:28:27.825>error <00:28:28.000>message <00:28:28.175>because <00:28:28.350>if <00:28:28.524>we <00:28:28.700>wrote

566
00:28:30.500 --> 00:28:33.500
<00:28:30.500>the <00:28:30.655>code <00:28:30.811>snippet <00:28:30.966>in <00:28:31.122>a <00:28:31.277>way <00:28:31.433>that <00:28:31.588>it's <00:28:31.744>unparable <00:28:31.900>you're

567
00:28:33.500 --> 00:28:36.400
<00:28:33.500>going <00:28:33.627>to <00:28:33.754>get <00:28:33.881>a <00:28:34.009>different <00:28:34.136>error <00:28:34.263>message. <00:28:34.390>So <00:28:34.518>let's <00:28:34.645>see <00:28:34.772>so <00:28:34.900>it

568
00:28:36.400 --> 00:28:39.000
<00:28:36.400>says <00:28:36.600>should <00:28:36.800>not <00:28:37.000>fail <00:28:37.200>analysis. <00:28:37.400>That <00:28:37.600>means <00:28:37.800>that

569
00:28:39.200 --> 00:28:42.300
<00:28:39.200>we <00:28:39.375>have <00:28:39.550>an <00:28:39.725>parsing <00:28:39.900>issue <00:28:40.075>on <00:28:40.250>the <00:28:40.425>class <00:28:40.600>of

570
00:28:42.300 --> 00:28:45.400
<00:28:42.300>the <00:28:42.427>code <00:28:42.554>snippet <00:28:42.681>itself. <00:28:42.809>And <00:28:42.936>if <00:28:43.063>you <00:28:43.190>open <00:28:43.318>it <00:28:43.445>here <00:28:43.572>we <00:28:43.700>can

571
00:28:45.400 --> 00:28:48.200
<00:28:45.400>see <00:28:45.540>that <00:28:45.680>on <00:28:45.820>the <00:28:45.960>first <00:28:46.100>line <00:28:46.240>the <00:28:46.380>same <00:28:46.520>I <00:28:46.660>call <00:28:46.800>and

572
00:28:48.200 --> 00:28:51.300
<00:28:48.200>is <00:28:48.307>missing <00:28:48.415>so <00:28:48.523>that <00:28:48.630>means <00:28:48.738>that <00:28:48.846>even <00:28:48.953>though <00:28:49.061>this <00:28:49.169>is <00:28:49.276>a <00:28:49.384>code <00:28:49.492>snippet <00:28:49.600>that

573
00:28:51.300 --> 00:28:55.400
<00:28:51.300>doesn't <00:28:51.500>necessarily <00:28:51.700>need <00:28:51.899>to <00:28:52.100>be <00:28:52.300>completely <00:28:52.500>compilable. <00:28:52.700>We

574
00:28:55.400 --> 00:28:58.600
<00:28:55.400>still <00:28:55.555>need <00:28:55.711>to <00:28:55.866>make <00:28:56.022>sure <00:28:56.177>that <00:28:56.333>it's <00:28:56.488>parsible. <00:28:56.644>So <00:28:56.800>the

575
00:28:58.600 --> 00:29:01.100
<00:28:58.600>way <00:28:58.727>this <00:28:58.854>works <00:28:58.981>is <00:28:59.109>it <00:28:59.236>now <00:28:59.363>says <00:28:59.490>if <00:28:59.618>I <00:28:59.745>ran <00:28:59.872>the <00:29:00.000>test

576
00:29:01.100 --> 00:29:04.500
<00:29:01.100>no <00:29:01.255>issues <00:29:01.411>raised <00:29:01.566>at <00:29:01.722>least <00:29:01.877>one <00:29:02.033>issue <00:29:02.188>expected. <00:29:02.344>That <00:29:02.500>means

577
00:29:04.500 --> 00:29:07.400
<00:29:04.500>that <00:29:04.655>this <00:29:04.811>this <00:29:04.966>line <00:29:05.122>where <00:29:05.277>we <00:29:05.433>had <00:29:05.588>a <00:29:05.744>non-compliant <00:29:05.900>comment

578
00:29:07.400 --> 00:29:10.300
<00:29:07.400>was <00:29:07.680>not <00:29:07.960>actually <00:29:08.240>three <00:29:08.520>years <00:29:08.800>so

579
00:29:10.300 --> 00:29:13.500
<00:29:10.300>that <00:29:10.500>place <00:29:10.700>our <00:29:10.899>custom <00:29:11.100>code <00:29:11.300>check <00:29:11.500>hasn't <00:29:11.700>thrown

580
00:29:13.500 --> 00:29:16.500
<00:29:13.500>any <00:29:13.640>warnings <00:29:13.780>and <00:29:13.920>that's <00:29:14.060>because <00:29:14.200>of <00:29:14.340>course <00:29:14.480>because <00:29:14.620>our <00:29:14.760>place <00:29:14.900>is

581
00:29:16.500 --> 00:29:18.200
<00:29:16.500>empty. <00:29:16.850>Our <00:29:17.200>implementation <00:29:17.550>is <00:29:17.900>em

582
00:29:18.500 --> 00:29:21.400
<00:29:18.500>So <00:29:18.640>let's <00:29:18.780>go <00:29:18.920>back <00:29:19.060>here <00:29:19.200>and <00:29:19.340>write <00:29:19.480>the <00:29:19.620>actual <00:29:19.760>implementation <00:29:19.900>for

583
00:29:21.400 --> 00:29:24.300
<00:29:21.400>the <00:29:21.600>check <00:29:21.800>first. <00:29:22.000>Let's <00:29:22.200>write <00:29:22.400>here <00:29:22.600>the <00:29:22.800>correct

584
00:29:24.300 --> 00:29:27.700
<00:29:24.300>name <00:29:24.500>of <00:29:24.700>the <00:29:24.899>rule. <00:29:25.100>So <00:29:25.300>avoid <00:29:25.500>returning <00:29:25.700>dates

585
00:29:27.700 --> 00:29:27.900
type.

586
00:29:28.600 --> 00:29:31.300
<00:29:28.600>And <00:29:28.774>now <00:29:28.949>to <00:29:29.125>explain <00:29:29.300>how <00:29:29.475>the <00:29:29.649>actual <00:29:29.824>rules <00:29:30.000>are

587
00:29:31.300 --> 00:29:34.500
<00:29:31.300>implemented. <00:29:31.416>So <00:29:31.533>as <00:29:31.649>you <00:29:31.766>can <00:29:31.883>see <00:29:32.000>here, <00:29:32.116>we <00:29:32.233>already <00:29:32.350>extend <00:29:32.466>an <00:29:32.583>Implement <00:29:32.700>some

588
00:29:34.500 --> 00:29:37.200
<00:29:34.500>of <00:29:34.675>the <00:29:34.850>classes <00:29:35.025>from <00:29:35.200>sonar. <00:29:35.375>And <00:29:35.550>the <00:29:35.725>first <00:29:35.900>one

589
00:29:37.200 --> 00:29:40.500
<00:29:37.200>is <00:29:37.340>the <00:29:37.480>Java <00:29:37.620>file <00:29:37.760>scanner, <00:29:37.900>which <00:29:38.040>does <00:29:38.180>the <00:29:38.320>actual <00:29:38.460>analysis <00:29:38.600>of

590
00:29:40.500 --> 00:29:43.100
<00:29:40.500>the <00:29:40.607>code <00:29:40.715>itself. <00:29:40.823>So <00:29:40.930>we <00:29:41.038>don't <00:29:41.146>have <00:29:41.253>to <00:29:41.361>worry <00:29:41.469>about <00:29:41.576>it. <00:29:41.684>And <00:29:41.792>the <00:29:41.900>way

591
00:29:43.100 --> 00:29:46.400
<00:29:43.100>this <00:29:43.240>works <00:29:43.379>is <00:29:43.520>similar <00:29:43.659>to <00:29:43.800>compiler. <00:29:43.939>It <00:29:44.080>takes <00:29:44.219>a <00:29:44.360>code <00:29:44.500>and

592
00:29:46.400 --> 00:29:49.300
<00:29:46.400>analyzes <00:29:46.600>it <00:29:46.800>into <00:29:47.000>specific <00:29:47.200>tokens <00:29:47.400>and <00:29:47.600>create <00:29:47.800>us

593
00:29:49.300 --> 00:29:52.200
<00:29:49.300>create <00:29:49.500>a <00:29:49.700>syntax <00:29:49.899>tree. <00:29:50.100>So <00:29:50.300>I <00:29:50.500>have <00:29:50.700>this

594
00:29:52.200 --> 00:29:55.300
<00:29:52.200>I <00:29:52.355>have <00:29:52.511>here <00:29:52.666>also <00:29:52.822>an <00:29:52.977>example <00:29:53.133>inside <00:29:53.288>this <00:29:53.444>code. <00:29:53.600>We

595
00:29:55.300 --> 00:29:58.700
<00:29:55.300>have <00:29:55.427>a <00:29:55.554>util <00:29:55.681>class <00:29:55.809>called <00:29:55.936>printer <00:29:56.063>visitor, <00:29:56.190>which <00:29:56.318>will <00:29:56.445>just <00:29:56.572>print <00:29:56.700>a

596
00:29:58.700 --> 00:30:01.100
<00:29:58.700>snippet <00:29:58.827>of <00:29:58.954>the <00:29:59.081>code <00:29:59.209>into <00:29:59.336>a <00:29:59.463>tree <00:29:59.590>and <00:29:59.718>I <00:29:59.845>can <00:29:59.972>show <00:30:00.100>you

597
00:30:01.100 --> 00:30:04.500
<00:30:01.100>here <00:30:01.207>how <00:30:01.315>this <00:30:01.423>looks <00:30:01.530>like <00:30:01.638>if <00:30:01.746>I <00:30:01.853>just <00:30:01.961>print <00:30:02.069>it <00:30:02.176>into <00:30:02.284>a <00:30:02.392>notepad. <00:30:02.500>So

598
00:30:04.500 --> 00:30:07.500
<00:30:04.500>basically <00:30:04.655>it <00:30:04.811>will <00:30:04.966>divide <00:30:05.122>the <00:30:05.277>code <00:30:05.433>into <00:30:05.588>specific <00:30:05.744>types <00:30:05.900>of

599
00:30:07.500 --> 00:30:10.100
<00:30:07.500>trees <00:30:07.700>and <00:30:07.900>maybe <00:30:08.100>I <00:30:08.300>zoom <00:30:08.500>in <00:30:08.700>a <00:30:08.900>little

600
00:30:10.100 --> 00:30:13.300
<00:30:10.100>bit. <00:30:10.240>So <00:30:10.379>for <00:30:10.520>example, <00:30:10.659>the <00:30:10.800>public <00:30:10.939>classes <00:30:11.080>of <00:30:11.219>type <00:30:11.360>3 <00:30:11.500>and

601
00:30:13.300 --> 00:30:16.700
<00:30:13.300>then <00:30:13.475>it <00:30:13.649>has <00:30:13.825>sub <00:30:14.000>trees <00:30:14.175>as <00:30:14.350>child's <00:30:14.524>and <00:30:14.700>for

602
00:30:16.700 --> 00:30:19.300
<00:30:16.700>example, <00:30:16.875>here <00:30:17.050>is <00:30:17.225>a <00:30:17.400>metal <00:30:17.575>three <00:30:17.750>and <00:30:17.925>so <00:30:18.100>forth.

603
00:30:19.300 --> 00:30:22.300
<00:30:19.300>So <00:30:19.427>basically <00:30:19.554>you <00:30:19.681>need <00:30:19.809>to <00:30:19.936>need <00:30:20.063>to <00:30:20.190>get <00:30:20.318>familiar <00:30:20.445>with <00:30:20.572>the <00:30:20.700>types

604
00:30:22.300 --> 00:30:25.300
<00:30:22.300>of <00:30:22.399>three <00:30:22.500>you <00:30:22.600>have <00:30:22.700>in <00:30:22.800>so <00:30:22.899>on <00:30:23.000>our <00:30:23.100>Cube <00:30:23.200>and <00:30:23.300>how <00:30:23.399>to <00:30:23.500>actually <00:30:23.600>handle <00:30:23.700>them.

605
00:30:25.300 --> 00:30:28.100
<00:30:25.300>So <00:30:25.440>the <00:30:25.580>way <00:30:25.720>the <00:30:25.860>rule <00:30:26.000>will <00:30:26.139>work <00:30:26.280>is <00:30:26.419>that <00:30:26.560>we <00:30:26.700>will

606
00:30:28.100 --> 00:30:28.400
<00:30:28.100>go <00:30:28.370>through

607
00:30:28.600 --> 00:30:31.300
<00:30:28.600>3 <00:30:28.740>and <00:30:28.879>then <00:30:29.020>based <00:30:29.159>on <00:30:29.300>the <00:30:29.439>places <00:30:29.580>in <00:30:29.719>the <00:30:29.860>code <00:30:30.000>try

608
00:30:31.300 --> 00:30:34.600
<00:30:31.300>to <00:30:31.475>find <00:30:31.649>out <00:30:31.825>any <00:30:32.000>violations. <00:30:32.175>So <00:30:32.350>since <00:30:32.524>our <00:30:32.700>rule

609
00:30:34.600 --> 00:30:37.500
<00:30:34.600>is <00:30:34.755>trying <00:30:34.911>to <00:30:35.066>figure <00:30:35.222>out <00:30:35.377>if <00:30:35.533>a <00:30:35.688>method <00:30:35.844>is <00:30:36.000>returning

610
00:30:37.500 --> 00:30:40.200
<00:30:37.500>a <00:30:37.675>date <00:30:37.850>type. <00:30:38.025>It's <00:30:38.200>logical <00:30:38.375>that <00:30:38.550>somehow <00:30:38.725>we <00:30:38.900>need

611
00:30:40.200 --> 00:30:43.600
<00:30:40.200>to <00:30:40.433>visit <00:30:40.666>the <00:30:40.900>method <00:30:41.133>tree <00:30:41.366>tokens. <00:30:41.600>So

612
00:30:43.600 --> 00:30:46.300
<00:30:43.600>how <00:30:43.707>do <00:30:43.815>we <00:30:43.923>do <00:30:44.030>that? <00:30:44.138>Well, <00:30:44.246>there <00:30:44.353>are <00:30:44.461>multiple <00:30:44.569>ways <00:30:44.676>but <00:30:44.784>in <00:30:44.892>this <00:30:45.000>one

613
00:30:46.300 --> 00:30:49.600
<00:30:46.300>we <00:30:46.427>will <00:30:46.554>use <00:30:46.681>the <00:30:46.809>base <00:30:46.936>3 <00:30:47.063>visitor <00:30:47.190>the <00:30:47.318>class <00:30:47.445>from <00:30:47.572>sonar <00:30:47.700>Cube

614
00:30:49.600 --> 00:30:52.200
<00:30:49.600>also <00:30:49.740>and <00:30:49.879>if <00:30:50.020>you <00:30:50.159>check <00:30:50.300>here <00:30:50.439>we <00:30:50.580>can <00:30:50.719>see <00:30:50.860>that <00:30:51.000>it

615
00:30:52.200 --> 00:30:55.300
<00:30:52.200>has <00:30:52.340>a <00:30:52.480>lot <00:30:52.620>of <00:30:52.760>methods <00:30:52.900>that <00:30:53.040>do <00:30:53.180>actual <00:30:53.320>visits <00:30:53.460>to <00:30:53.600>this

616
00:30:55.300 --> 00:30:58.200
<00:30:55.300>tokens. <00:30:55.440>And <00:30:55.580>this <00:30:55.720>is <00:30:55.860>the <00:30:56.000>simple <00:30:56.139>visitor <00:30:56.280>pattern <00:30:56.419>meaning <00:30:56.560>that <00:30:56.700>each

617
00:30:58.200 --> 00:31:01.600
<00:30:58.200>time <00:30:58.355>this <00:30:58.511>type <00:30:58.666>of <00:30:58.822>token <00:30:58.977>is <00:30:59.133>visited. <00:30:59.288>Our <00:30:59.444>method <00:30:59.600>is

618
00:31:01.600 --> 00:31:04.500
<00:31:01.600>going <00:31:01.740>to <00:31:01.879>be <00:31:02.020>called <00:31:02.159>if <00:31:02.300>you <00:31:02.439>override <00:31:02.580>this, <00:31:02.719>so <00:31:02.860>we <00:31:03.000>just

619
00:31:04.500 --> 00:31:07.300
<00:31:04.500>have <00:31:04.700>to <00:31:04.900>override <00:31:05.100>this <00:31:05.300>method <00:31:05.500>talk <00:31:05.700>and <00:31:05.900>visitor

620
00:31:07.300 --> 00:31:10.600
<00:31:07.300>and <00:31:07.440>we <00:31:07.580>can <00:31:07.720>add <00:31:07.860>our <00:31:08.000>custom <00:31:08.139>code <00:31:08.280>here. <00:31:08.419>So <00:31:08.560>let's <00:31:08.700>go

621
00:31:10.600 --> 00:31:12.700
<00:31:10.600>ahead <00:31:10.755>and <00:31:10.911>do <00:31:11.066>this <00:31:11.222>so <00:31:11.377>I <00:31:11.533>can <00:31:11.688>just <00:31:11.844>go <00:31:12.000>and

622
00:31:13.700 --> 00:31:16.500
<00:31:13.700>Generate <00:31:13.980>an <00:31:14.260>override <00:31:14.540>method <00:31:14.820>and <00:31:15.100>we

623
00:31:16.500 --> 00:31:19.500
<00:31:16.500>just <00:31:16.627>have <00:31:16.754>to <00:31:16.881>find <00:31:17.009>the <00:31:17.136>visit <00:31:17.263>method. <00:31:17.390>It's <00:31:17.518>exactly <00:31:17.645>here <00:31:17.772>as <00:31:17.900>you

624
00:31:19.500 --> 00:31:22.800
<00:31:19.500>can <00:31:19.607>see <00:31:19.715>there <00:31:19.823>are <00:31:19.930>many <00:31:20.038>options <00:31:20.146>because <00:31:20.253>there <00:31:20.361>are <00:31:20.469>a <00:31:20.576>lot <00:31:20.684>of <00:31:20.792>different <00:31:20.900>types

625
00:31:22.800 --> 00:31:25.600
<00:31:22.800>of <00:31:23.033>trees <00:31:23.266>because <00:31:23.500>Java <00:31:23.733>is <00:31:23.966>very <00:31:24.200>complex.

626
00:31:25.600 --> 00:31:26.400
So

627
00:31:27.300 --> 00:31:30.900
<00:31:27.300>Now <00:31:27.440>I've <00:31:27.580>created <00:31:27.720>this <00:31:27.860>method <00:31:28.000>and <00:31:28.139>each <00:31:28.280>time. <00:31:28.419>We <00:31:28.560>we <00:31:28.700>visit

628
00:31:30.900 --> 00:31:33.200
<00:31:30.900>a <00:31:31.055>method <00:31:31.211>type <00:31:31.366>of <00:31:31.522>tree <00:31:31.677>this <00:31:31.833>is <00:31:31.988>going <00:31:32.144>to <00:31:32.300>be

629
00:31:33.200 --> 00:31:36.200
<00:31:33.200>called. <00:31:33.400>We <00:31:33.600>also <00:31:33.800>have <00:31:34.000>this <00:31:34.200>supervisit <00:31:34.400>method <00:31:34.600>called

630
00:31:36.200 --> 00:31:39.300
<00:31:36.200>this <00:31:36.307>is <00:31:36.415>because <00:31:36.523>we <00:31:36.630>also <00:31:36.738>have <00:31:36.846>to <00:31:36.953>make <00:31:37.061>sure <00:31:37.169>that <00:31:37.276>the <00:31:37.384>child <00:31:37.492>trees <00:31:37.600>are

631
00:31:39.300 --> 00:31:40.800
<00:31:39.300>called. <00:31:39.524>So <00:31:39.750>we'll <00:31:39.975>just <00:31:40.200>leave <00:31:40.425>this <00:31:40.649>here.

632
00:31:41.900 --> 00:31:44.700
<00:31:41.900>So, <00:31:42.075>how <00:31:42.250>do <00:31:42.425>we <00:31:42.600>do <00:31:42.775>the <00:31:42.950>actual <00:31:43.125>checks <00:31:43.300>we

633
00:31:44.700 --> 00:31:47.900
<00:31:44.700>get <00:31:44.855>the <00:31:45.011>three <00:31:45.166>object <00:31:45.322>here, <00:31:45.477>which <00:31:45.633>is <00:31:45.788>that <00:31:45.944>token <00:31:46.100>actually

634
00:31:47.900 --> 00:31:50.400
<00:31:47.900>in <00:31:48.055>the <00:31:48.211>syntax <00:31:48.366>tree <00:31:48.522>and <00:31:48.677>now <00:31:48.833>from <00:31:48.988>here <00:31:49.144>we <00:31:49.300>can

635
00:31:50.400 --> 00:31:52.900
<00:31:50.400>try <00:31:50.575>to <00:31:50.750>get <00:31:50.925>some <00:31:51.100>of <00:31:51.275>its <00:31:51.450>child <00:31:51.625>notes. <00:31:51.800>So

636
00:31:53.600 --> 00:31:56.300
<00:31:53.600>First <00:31:53.740>the <00:31:53.879>first <00:31:54.020>option <00:31:54.159>is <00:31:54.300>the <00:31:54.439>one <00:31:54.580>we <00:31:54.719>actually <00:31:54.860>need <00:31:55.000>is

637
00:31:56.300 --> 00:31:59.400
<00:31:56.300>the <00:31:56.455>return <00:31:56.611>type. <00:31:56.766>So <00:31:56.922>if <00:31:57.077>I <00:31:57.233>select <00:31:57.388>this <00:31:57.544>method <00:31:57.700>it

638
00:31:59.400 --> 00:32:02.600
<00:31:59.400>will <00:31:59.575>return <00:31:59.750>the <00:31:59.925>child <00:32:00.100>return <00:32:00.275>type <00:32:00.450>3 <00:32:00.625>meaning <00:32:00.800>inside

639
00:32:02.600 --> 00:32:05.600
<00:32:02.600>the <00:32:02.740>method <00:32:02.879>we <00:32:03.020>will <00:32:03.159>get <00:32:03.300>exactly <00:32:03.439>what <00:32:03.580>we <00:32:03.719>want <00:32:03.860>and <00:32:04.000>now

640
00:32:06.400 --> 00:32:09.500
<00:32:06.400>Since <00:32:06.555>we <00:32:06.711>have <00:32:06.866>this <00:32:07.022>tree, <00:32:07.177>we <00:32:07.333>also <00:32:07.488>need <00:32:07.644>additional <00:32:07.800>information

641
00:32:09.500 --> 00:32:12.500
<00:32:09.500>about <00:32:09.675>it <00:32:09.850>because <00:32:10.025>just <00:32:10.200>for <00:32:10.375>the <00:32:10.550>string <00:32:10.725>date, <00:32:10.900>we

642
00:32:12.500 --> 00:32:16.000
<00:32:12.500>don't <00:32:12.616>actually <00:32:12.733>know <00:32:12.850>the <00:32:12.966>complete <00:32:13.083>type. <00:32:13.200>So <00:32:13.316>here <00:32:13.433>we <00:32:13.550>need <00:32:13.666>to <00:32:13.783>somehow <00:32:13.900>retrieve

643
00:32:15.100 --> 00:32:18.300
<00:32:15.100>the <00:32:15.379>semantic <00:32:15.659>information <00:32:15.939>that <00:32:16.219>the <00:32:16.500>sonar

644
00:32:18.300 --> 00:32:21.500
<00:32:18.300>analysis <00:32:18.427>has <00:32:18.554>done <00:32:18.681>and <00:32:18.809>we <00:32:18.936>get <00:32:19.063>this <00:32:19.190>by <00:32:19.318>getting <00:32:19.445>the <00:32:19.572>symbol <00:32:19.700>type

645
00:32:21.500 --> 00:32:24.200
<00:32:21.500>which <00:32:21.627>is <00:32:21.754>just <00:32:21.881>a <00:32:22.009>different <00:32:22.136>class <00:32:22.263>type <00:32:22.390>from <00:32:22.518>solner <00:32:22.645>which <00:32:22.772>has <00:32:22.900>this

646
00:32:24.200 --> 00:32:27.400
<00:32:24.200>additional <00:32:24.375>information <00:32:24.550>that <00:32:24.725>the <00:32:24.900>analysis <00:32:25.075>has <00:32:25.250>gathered <00:32:25.425>and <00:32:25.600>here

647
00:32:27.400 --> 00:32:30.600
<00:32:27.400>we <00:32:27.575>can <00:32:27.750>directly <00:32:27.925>access <00:32:28.100>the <00:32:28.275>fully <00:32:28.450>qualified <00:32:28.625>name <00:32:28.800>so

648
00:32:30.600 --> 00:32:33.500
<00:32:30.600>I <00:32:30.774>can <00:32:30.949>just <00:32:31.125>say, <00:32:31.300>okay <00:32:31.475>and <00:32:31.649>now <00:32:31.824>if <00:32:32.000>this

649
00:32:33.500 --> 00:32:36.400
<00:32:33.500>equals <00:32:33.850>Java <00:32:34.200>util <00:32:34.550>date, <00:32:34.900>which

650
00:32:36.400 --> 00:32:39.300
<00:32:36.400>is <00:32:36.540>exactly <00:32:36.680>what <00:32:36.820>you're <00:32:36.960>trying <00:32:37.100>to <00:32:37.240>check <00:32:37.380>then <00:32:37.520>we <00:32:37.660>we <00:32:37.800>do

651
00:32:39.300 --> 00:32:41.500
<00:32:39.300>something <00:32:39.475>so <00:32:39.649>let's <00:32:39.825>just <00:32:40.000>make <00:32:40.175>this <00:32:40.350>an <00:32:40.524>if <00:32:40.700>close.

652
00:32:42.200 --> 00:32:45.300
<00:32:42.200>If <00:32:42.400>this <00:32:42.600>return <00:32:42.800>type <00:32:43.000>is <00:32:43.200>Java <00:32:43.400>util <00:32:43.600>date

653
00:32:45.300 --> 00:32:48.400
<00:32:45.300>then <00:32:45.475>we <00:32:45.649>need <00:32:45.825>to <00:32:46.000>somehow <00:32:46.175>signify <00:32:46.350>to <00:32:46.524>solder <00:32:46.700>Cube

654
00:32:48.400 --> 00:32:50.200
<00:32:48.400>that <00:32:48.633>we <00:32:48.866>just <00:32:49.100>raise <00:32:49.333>a <00:32:49.566>warning <00:32:49.800>here.

655
00:32:50.900 --> 00:32:52.500
<00:32:50.900>So <00:32:51.133>how <00:32:51.366>do <00:32:51.600>we <00:32:51.833>actually <00:32:52.066>do <00:32:52.300>this?

656
00:32:53.400 --> 00:32:56.000
<00:32:53.400>We <00:32:53.555>have <00:32:53.711>here <00:32:53.866>already <00:32:54.022>for <00:32:54.177>the <00:32:54.333>boilerplate <00:32:54.488>code <00:32:54.644>some <00:32:54.800>of

657
00:32:56.100 --> 00:32:59.500
<00:32:56.100>the <00:32:56.207>classes <00:32:56.315>like <00:32:56.423>context <00:32:56.530>and <00:32:56.638>this <00:32:56.746>is <00:32:56.853>the <00:32:56.961>place <00:32:57.069>where <00:32:57.176>we <00:32:57.284>do <00:32:57.392>the <00:32:57.500>analysis.

658
00:32:59.500 --> 00:33:02.800
<00:32:59.500>So <00:32:59.655>on <00:32:59.811>this <00:32:59.966>direct <00:33:00.122>object, <00:33:00.277>we <00:33:00.433>can <00:33:00.588>say <00:33:00.744>context <00:33:00.900>and

659
00:33:02.800 --> 00:33:05.200
<00:33:02.800>Report <00:33:03.080>issue. <00:33:03.360>And <00:33:03.639>what <00:33:03.919>we <00:33:04.200>need

660
00:33:05.200 --> 00:33:08.400
<00:33:05.200>to <00:33:05.300>provide <00:33:05.400>is <00:33:05.500>a <00:33:05.600>checker <00:33:05.700>class, <00:33:05.800>which <00:33:05.900>is <00:33:06.000>the <00:33:06.100>class <00:33:06.200>that <00:33:06.300>we <00:33:06.400>are <00:33:06.500>currently <00:33:06.600>in.

661
00:33:08.400 --> 00:33:11.700
<00:33:08.400>We <00:33:08.555>also <00:33:08.711>need <00:33:08.866>to <00:33:09.022>provide <00:33:09.177>a <00:33:09.333>three <00:33:09.488>object <00:33:09.644>which <00:33:09.800>is

662
00:33:11.700 --> 00:33:14.300
<00:33:11.700>the <00:33:11.827>place <00:33:11.954>where <00:33:12.081>we <00:33:12.209>want <00:33:12.336>the <00:33:12.463>warning <00:33:12.590>to <00:33:12.718>be <00:33:12.845>shown. <00:33:12.972>So <00:33:13.100>if

663
00:33:14.300 --> 00:33:17.400
<00:33:14.300>you <00:33:14.440>just <00:33:14.580>move <00:33:14.720>for <00:33:14.860>example <00:33:15.000>back <00:33:15.139>to <00:33:15.280>our <00:33:15.419>snippet, <00:33:15.560>we <00:33:15.700>have

664
00:33:17.400 --> 00:33:20.200
<00:33:17.400>multiple <00:33:17.555>options <00:33:17.711>here. <00:33:17.866>If <00:33:18.022>you <00:33:18.177>ever <00:33:18.333>use <00:33:18.488>solar <00:33:18.644>link, <00:33:18.800>you

665
00:33:20.200 --> 00:33:23.100
<00:33:20.200>know <00:33:20.307>that <00:33:20.415>if <00:33:20.523>you <00:33:20.630>make <00:33:20.738>an <00:33:20.846>error, <00:33:20.953>it's <00:33:21.061>going <00:33:21.169>to <00:33:21.276>highlight <00:33:21.384>a <00:33:21.492>piece <00:33:21.600>of

666
00:33:23.100 --> 00:33:26.600
<00:33:23.100>code <00:33:23.207>and <00:33:23.315>we <00:33:23.423>can <00:33:23.530>decide <00:33:23.638>whether <00:33:23.746>we <00:33:23.853>want <00:33:23.961>to <00:33:24.069>highlight <00:33:24.176>the <00:33:24.284>whole <00:33:24.392>method <00:33:24.500>for

667
00:33:26.600 --> 00:33:29.500
<00:33:26.600>example, <00:33:26.774>just <00:33:26.949>the <00:33:27.125>first <00:33:27.300>line <00:33:27.475>or <00:33:27.649>maybe <00:33:27.824>just <00:33:28.000>the

668
00:33:29.500 --> 00:33:32.400
<00:33:29.500>date <00:33:29.733>the <00:33:29.966>date <00:33:30.200>word. <00:33:30.433>So <00:33:30.666>in <00:33:30.900>our

669
00:33:32.400 --> 00:33:35.700
<00:33:32.400>case <00:33:32.493>we <00:33:32.586>can <00:33:32.680>say <00:33:32.773>we <00:33:32.866>just <00:33:32.960>want <00:33:33.053>to <00:33:33.146>highlight <00:33:33.240>date <00:33:33.333>and <00:33:33.426>they <00:33:33.520>should <00:33:33.613>be <00:33:33.706>enough <00:33:33.800>in

670
00:33:35.700 --> 00:33:37.600
<00:33:35.700>that <00:33:35.900>case. <00:33:36.100>We <00:33:36.300>need <00:33:36.500>to <00:33:36.700>say <00:33:36.900>okay <00:33:37.100>here.

671
00:33:38.500 --> 00:33:41.600
<00:33:38.500>Let's <00:33:38.655>give <00:33:38.811>it <00:33:38.966>date <00:33:39.122>return <00:33:39.277>type <00:33:39.433>because <00:33:39.588>this <00:33:39.744>is <00:33:39.900>signifying

672
00:33:41.600 --> 00:33:44.200
<00:33:41.600>that <00:33:41.740>only <00:33:41.879>the <00:33:42.020>intern <00:33:42.159>type <00:33:42.300>of <00:33:42.439>the <00:33:42.580>tree <00:33:42.719>should <00:33:42.860>be <00:33:43.000>highlighted.

673
00:33:44.900 --> 00:33:47.200
<00:33:44.900>And <00:33:45.075>also <00:33:45.250>the <00:33:45.425>third <00:33:45.600>part <00:33:45.775>is <00:33:45.950>the <00:33:46.125>message <00:33:46.300>that

674
00:33:47.200 --> 00:33:50.500
<00:33:47.200>the <00:33:47.307>user <00:33:47.415>is <00:33:47.523>going <00:33:47.630>to <00:33:47.738>see <00:33:47.846>when <00:33:47.953>he <00:33:48.061>makes <00:33:48.169>this <00:33:48.276>this <00:33:48.384>issue <00:33:48.492>this <00:33:48.600>error

675
00:33:50.500 --> 00:33:53.300
<00:33:50.500>and <00:33:50.655>we <00:33:50.811>already <00:33:50.966>have <00:33:51.122>this <00:33:51.277>message <00:33:51.433>added <00:33:51.588>here. <00:33:51.744>So <00:33:51.900>you'll

676
00:33:53.300 --> 00:33:55.200
<00:33:53.300>just <00:33:53.500>copy <00:33:53.700>paste <00:33:53.899>it <00:33:54.100>over <00:33:54.300>and <00:33:54.500>say <00:33:54.700>okay.

677
00:33:56.500 --> 00:34:00.000
<00:33:56.500>Avoid <00:33:56.655>returning <00:33:56.811>Java <00:33:56.966>util <00:33:57.122>date <00:33:57.277>in <00:33:57.433>this <00:33:57.588>case. <00:33:57.744>So <00:33:57.900>this

678
00:33:59.200 --> 00:34:02.400
<00:33:59.200>is <00:33:59.480>basically <00:33:59.760>it <00:34:00.040>and <00:34:00.320>we've <00:34:00.600>used

679
00:34:02.400 --> 00:34:05.700
<00:34:02.400>most <00:34:02.527>of <00:34:02.654>the <00:34:02.781>analysis <00:34:02.909>done <00:34:03.036>by <00:34:03.163>sonar. <00:34:03.290>So <00:34:03.418>we <00:34:03.545>just <00:34:03.672>just <00:34:03.800>added

680
00:34:05.700 --> 00:34:08.400
<00:34:05.700>this <00:34:05.933>override <00:34:06.166>and <00:34:06.400>now <00:34:06.633>almost <00:34:06.866>everything <00:34:07.100>should

681
00:34:08.400 --> 00:34:11.500
<00:34:08.400>work <00:34:08.500>and <00:34:08.600>we <00:34:08.700>can <00:34:08.800>go <00:34:08.900>ahead <00:34:09.000>and <00:34:09.100>try <00:34:09.200>to <00:34:09.300>run <00:34:09.400>the <00:34:09.500>test <00:34:09.600>itself <00:34:09.700>and <00:34:09.800>see

682
00:34:11.500 --> 00:34:14.400
<00:34:11.500>if <00:34:11.675>it <00:34:11.850>works. <00:34:12.025>So <00:34:12.199>just <00:34:12.375>to <00:34:12.550>find <00:34:12.725>the <00:34:12.900>correct

683
00:34:14.400 --> 00:34:14.700
text.

684
00:34:15.800 --> 00:34:18.200
<00:34:15.800>And <00:34:15.940>hopefully <00:34:16.080>it <00:34:16.220>works. <00:34:16.360>So <00:34:16.500>let's <00:34:16.640>see <00:34:16.780>if <00:34:16.920>we've <00:34:17.060>done <00:34:17.200>any

685
00:34:18.200 --> 00:34:21.300
<00:34:18.199>issues <00:34:18.327>or <00:34:18.454>if <00:34:18.581>it <00:34:18.709>actually <00:34:18.836>works <00:34:18.963>and <00:34:19.090>as <00:34:19.218>we <00:34:19.345>can <00:34:19.472>see <00:34:19.600>it

686
00:34:21.300 --> 00:34:24.100
<00:34:21.300>passes <00:34:21.475>I <00:34:21.650>can <00:34:21.825>also <00:34:22.000>just <00:34:22.175>show <00:34:22.350>that <00:34:22.525>this <00:34:22.700>is

687
00:34:24.100 --> 00:34:27.500
<00:34:24.100>not <00:34:24.216>not <00:34:24.333>any <00:34:24.449>cheating. <00:34:24.566>So <00:34:24.683>for <00:34:24.799>example, <00:34:24.916>if <00:34:25.033>I <00:34:25.150>just <00:34:25.266>add <00:34:25.383>here <00:34:25.500>an

688
00:34:27.500 --> 00:34:30.400
<00:34:27.500>explanation <00:34:27.675>mark <00:34:27.850>for <00:34:28.025>example, <00:34:28.199>we <00:34:28.375>can <00:34:28.550>see <00:34:28.725>if <00:34:28.900>I

689
00:34:30.400 --> 00:34:34.200
<00:34:30.400>rerun <00:34:30.540>the <00:34:30.680>test. <00:34:30.820>We <00:34:30.960>should <00:34:31.100>see <00:34:31.240>an <00:34:31.380>error <00:34:31.520>saying <00:34:31.660>oh <00:34:31.800>wait

690
00:34:34.200 --> 00:34:37.200
<00:34:34.199>you <00:34:34.375>actually <00:34:34.549>returned <00:34:34.725>an <00:34:34.899>issue <00:34:35.074>about <00:34:35.250>the <00:34:35.424>warning <00:34:35.600>is

691
00:34:37.200 --> 00:34:40.300
<00:34:37.199>having <00:34:37.339>the <00:34:37.480>wrong <00:34:37.620>wrong <00:34:37.759>string <00:34:37.899>as <00:34:38.040>a <00:34:38.179>return <00:34:38.319>because <00:34:38.460>sometimes <00:34:38.600>in

692
00:34:40.300 --> 00:34:43.400
<00:34:40.300>your <00:34:40.427>rules <00:34:40.554>you <00:34:40.681>can <00:34:40.809>have <00:34:40.936>depending <00:34:41.063>on <00:34:41.190>a <00:34:41.318>scenario <00:34:41.445>different <00:34:41.572>messages <00:34:41.700>that

693
00:34:43.400 --> 00:34:46.400
<00:34:43.400>you <00:34:43.500>want <00:34:43.600>to <00:34:43.700>show <00:34:43.800>to <00:34:43.900>the <00:34:44.000>user <00:34:44.100>depending <00:34:44.200>on <00:34:44.300>what <00:34:44.400>is <00:34:44.500>happening <00:34:44.600>in <00:34:44.700>their <00:34:44.800>code.

694
00:34:47.100 --> 00:34:50.400
<00:34:47.100>So <00:34:47.216>let's <00:34:47.333>just <00:34:47.449>go <00:34:47.566>back <00:34:47.683>and <00:34:47.799>revert <00:34:47.916>as <00:34:48.033>it <00:34:48.150>was <00:34:48.266>before <00:34:48.383>so <00:34:48.500>I

695
00:34:50.400 --> 00:34:51.000
<00:34:50.400>rule <00:34:50.670>actually <00:34:50.940>works.

696
00:34:52.200 --> 00:34:54.100
<00:34:52.199>And <00:34:52.480>now <00:34:52.759>what <00:34:53.040>we've <00:34:53.319>done <00:34:53.600>is

697
00:34:54.900 --> 00:34:57.300
<00:34:54.900>implemented <00:34:55.100>the <00:34:55.300>rule <00:34:55.500>itself <00:34:55.700>have <00:34:55.900>a <00:34:56.100>unit <00:34:56.300>test

698
00:34:57.300 --> 00:35:00.100
<00:34:57.300>to <00:34:57.475>ensure <00:34:57.650>that <00:34:57.825>it <00:34:58.000>does <00:34:58.175>work <00:34:58.350>somewhat <00:34:58.525>now <00:34:58.700>we

699
00:35:00.100 --> 00:35:03.100
<00:35:00.100>just <00:35:00.275>have <00:35:00.450>to <00:35:00.625>take <00:35:00.799>care <00:35:00.975>of <00:35:01.150>boilerplate <00:35:01.325>code <00:35:01.500>and

700
00:35:03.100 --> 00:35:06.600
<00:35:03.100>adding <00:35:03.240>the <00:35:03.380>documentation <00:35:03.520>for <00:35:03.660>the <00:35:03.799>rule <00:35:03.940>itself. <00:35:04.080>So <00:35:04.220>first <00:35:04.360>based <00:35:04.500>on

701
00:35:06.600 --> 00:35:06.700
the

702
00:35:07.600 --> 00:35:10.400
<00:35:07.600>Based <00:35:07.755>on <00:35:07.911>this <00:35:08.066>project. <00:35:08.222>We <00:35:08.377>are <00:35:08.533>using <00:35:08.688>we <00:35:08.844>unfortunately <00:35:09.000>need

703
00:35:10.400 --> 00:35:13.400
<00:35:10.400>to <00:35:10.527>manually <00:35:10.654>add <00:35:10.781>this <00:35:10.909>rule <00:35:11.036>to <00:35:11.163>the <00:35:11.290>list <00:35:11.418>of <00:35:11.545>rules. <00:35:11.672>So <00:35:11.800>let's

704
00:35:13.400 --> 00:35:16.400
<00:35:13.400>go <00:35:13.575>ahead <00:35:13.750>and <00:35:13.925>do <00:35:14.100>this. <00:35:14.275>Let's <00:35:14.450>say <00:35:14.625>this <00:35:14.800>avoid

705
00:35:17.600 --> 00:35:19.600
<00:35:17.600>Oh, <00:35:17.880>I'm <00:35:18.160>missing <00:35:18.440>up <00:35:18.720>column <00:35:19.000>here.

706
00:35:21.600 --> 00:35:24.200
<00:35:21.600>Avoid <00:35:21.950>returning <00:35:22.299>date <00:35:22.650>type <00:35:23.000>rule

707
00:35:24.200 --> 00:35:25.200
<00:35:24.200>should <00:35:24.500>be <00:35:24.799>added <00:35:25.100>here.

708
00:35:26.100 --> 00:35:27.300
<00:35:26.100>So <00:35:26.370>it <00:35:26.640>actually <00:35:26.910>gets <00:35:27.180>installed.

709
00:35:28.400 --> 00:35:31.200
<00:35:28.400>While <00:35:28.600>we <00:35:28.800>build <00:35:29.000>this <00:35:29.200>project <00:35:29.400>and <00:35:29.600>the <00:35:29.800>next

710
00:35:31.200 --> 00:35:34.700
<00:35:31.200>part <00:35:31.355>we <00:35:31.511>have <00:35:31.666>to <00:35:31.822>do <00:35:31.977>is <00:35:32.133>add <00:35:32.288>the <00:35:32.444>HTML <00:35:32.600>and

711
00:35:34.700 --> 00:35:37.200
<00:35:34.700>Json <00:35:34.899>files <00:35:35.100>for <00:35:35.299>the <00:35:35.500>documentation <00:35:35.700>itself. <00:35:35.899>So <00:35:36.100>if

712
00:35:37.200 --> 00:35:40.400
<00:35:37.200>you <00:35:37.299>ever <00:35:37.399>use <00:35:37.500>solar <00:35:37.600>Cube, <00:35:37.700>you <00:35:37.799>know <00:35:37.899>that <00:35:38.000>if <00:35:38.100>you <00:35:38.200>try <00:35:38.299>to <00:35:38.399>open <00:35:38.500>a <00:35:38.600>rule

713
00:35:40.400 --> 00:35:43.200
<00:35:40.400>you <00:35:40.540>will <00:35:40.680>get <00:35:40.820>some <00:35:40.960>information <00:35:41.100>about <00:35:41.240>it. <00:35:41.380>For <00:35:41.520>example, <00:35:41.660>what <00:35:41.800>is

714
00:35:43.200 --> 00:35:46.200
<00:35:43.200>the <00:35:43.375>compliant <00:35:43.549>way <00:35:43.725>to <00:35:43.899>solve <00:35:44.075>this? <00:35:44.250>What <00:35:44.424>what <00:35:44.600>is

715
00:35:46.200 --> 00:35:49.500
<00:35:46.200>the <00:35:46.355>non-compliant <00:35:46.511>exam <00:35:46.666>and <00:35:46.822>why <00:35:46.977>is <00:35:47.133>the <00:35:47.288>reason <00:35:47.444>this <00:35:47.600>rule

716
00:35:49.500 --> 00:35:52.800
<00:35:49.500>is <00:35:49.655>actually <00:35:49.811>used <00:35:49.966>at <00:35:50.122>all? <00:35:50.277>Why <00:35:50.433>should <00:35:50.588>you <00:35:50.744>by? <00:35:50.900>Why

717
00:35:52.800 --> 00:35:54.300
<00:35:52.800>does <00:35:52.992>it <00:35:53.185>matter <00:35:53.378>to <00:35:53.571>actually <00:35:53.764>use <00:35:53.957>this <00:35:54.150>role?

718
00:35:54.800 --> 00:35:57.300
<00:35:54.800>So <00:35:54.975>let's <00:35:55.150>make <00:35:55.325>our <00:35:55.500>own <00:35:55.675>copy <00:35:55.850>of <00:35:56.025>this <00:35:56.200>documentation.

719
00:35:57.300 --> 00:35:59.500
<00:35:57.300>We <00:35:57.650>can <00:35:58.000>say <00:35:58.350>avoid <00:35:58.700>returning.

720
00:36:00.300 --> 00:36:03.300
<00:36:00.300>dates <00:36:00.533>type <00:36:00.766>HTML <00:36:01.000>and <00:36:01.233>write <00:36:01.466>something <00:36:01.700>like

721
00:36:05.200 --> 00:36:06.200
<00:36:05.200>avoid <00:36:06.100>returning

722
00:36:09.800 --> 00:36:11.200
<00:36:09.800>Java <00:36:10.430>util <00:36:11.060>dates

723
00:36:13.500 --> 00:36:14.300
<00:36:13.500>prefer <00:36:14.220>using

724
00:36:15.700 --> 00:36:16.700
<00:36:15.700>local <00:36:16.600>date

725
00:36:18.900 --> 00:36:21.900
<00:36:18.900>or <00:36:19.250>similar <00:36:19.600>types <00:36:19.950>is <00:36:20.300>Java

726
00:36:21.900 --> 00:36:23.600
<00:36:21.900>util <00:36:22.366>date <00:36:22.833>is <00:36:23.300>deprecated.

727
00:36:27.300 --> 00:36:30.800
<00:36:27.300>Something <00:36:27.427>like <00:36:27.554>this <00:36:27.681>and <00:36:27.809>also <00:36:27.936>we <00:36:28.063>can <00:36:28.190>add <00:36:28.318>some <00:36:28.445>some <00:36:28.572>examples <00:36:28.700>here.

728
00:36:30.800 --> 00:36:33.500
<00:36:30.800>We <00:36:30.955>can <00:36:31.111>just <00:36:31.266>copy <00:36:31.422>paste <00:36:31.577>this <00:36:31.733>and <00:36:31.888>say, <00:36:32.044>okay. <00:36:32.200>This

729
00:36:33.500 --> 00:36:34.700
<00:36:33.500>is <00:36:34.580>non-compliant.

730
00:36:36.400 --> 00:36:39.700
<00:36:36.400>We <00:36:36.575>will <00:36:36.750>delete <00:36:36.925>this <00:36:37.100>comment <00:36:37.275>here <00:36:37.450>and <00:36:37.625>just <00:36:37.800>we

731
00:36:39.700 --> 00:36:42.500
<00:36:39.700>can <00:36:39.855>leave <00:36:40.011>this <00:36:40.166>empty. <00:36:40.322>And <00:36:40.477>for <00:36:40.633>the <00:36:40.788>correct <00:36:40.944>example, <00:36:41.100>we

732
00:36:42.500 --> 00:36:44.800
<00:36:42.500>can <00:36:42.850>maybe <00:36:43.200>say <00:36:43.550>Okay <00:36:43.900>use.

733
00:36:46.200 --> 00:36:46.600
Maybe

734
00:36:47.900 --> 00:36:49.500
<00:36:47.900>local <00:36:48.250>date <00:36:48.600>something <00:36:48.950>like <00:36:49.300>this.

735
00:36:50.400 --> 00:36:50.600
also

736
00:36:51.700 --> 00:36:54.500
<00:36:51.700>We <00:36:51.875>need <00:36:52.049>to <00:36:52.225>add <00:36:52.399>additional <00:36:52.575>metadata, <00:36:52.750>which <00:36:52.924>will <00:36:53.100>describe

737
00:36:54.500 --> 00:36:57.300
<00:36:54.500>the <00:36:54.700>sonar <00:36:54.900>rule <00:36:55.100>itself. <00:36:55.300>So <00:36:55.500>here <00:36:55.700>you <00:36:55.900>can

738
00:36:57.300 --> 00:37:00.600
<00:36:57.300>see <00:36:57.427>example <00:36:57.554>of <00:36:57.681>how <00:36:57.809>this <00:36:57.936>looks <00:36:58.063>like. <00:36:58.190>If <00:36:58.318>you <00:36:58.445>ever <00:36:58.572>use <00:36:58.700>honor

739
00:37:00.600 --> 00:37:03.400
<00:37:00.600>cubic, <00:37:00.707>you <00:37:00.815>know <00:37:00.923>that <00:37:01.030>it <00:37:01.138>calculates <00:37:01.246>the <00:37:01.353>time <00:37:01.461>it <00:37:01.569>needs <00:37:01.676>to <00:37:01.784>actually <00:37:01.892>fix <00:37:02.000>all

740
00:37:03.400 --> 00:37:06.300
<00:37:03.400>the <00:37:03.527>rules <00:37:03.654>so <00:37:03.781>you <00:37:03.909>can <00:37:04.036>decide <00:37:04.163>what <00:37:04.290>is <00:37:04.418>the <00:37:04.545>time <00:37:04.672>needed <00:37:04.800>to

741
00:37:06.300 --> 00:37:09.400
<00:37:06.300>fix <00:37:06.440>your <00:37:06.580>own <00:37:06.720>Rule <00:37:06.860>and <00:37:07.000>the <00:37:07.140>most <00:37:07.280>important <00:37:07.420>part <00:37:07.560>probably <00:37:07.700>is

742
00:37:09.400 --> 00:37:12.300
<00:37:09.400>the <00:37:09.507>severity <00:37:09.615>of <00:37:09.723>the <00:37:09.830>role <00:37:09.938>because <00:37:10.046>you <00:37:10.153>can <00:37:10.261>say, <00:37:10.369>okay. <00:37:10.476>This <00:37:10.584>is <00:37:10.692>a <00:37:10.800>major

743
00:37:12.300 --> 00:37:15.100
<00:37:12.300>blocker. <00:37:12.407>This <00:37:12.515>is <00:37:12.623>a <00:37:12.730>major <00:37:12.838>type <00:37:12.946>of <00:37:13.053>rule <00:37:13.161>or <00:37:13.269>a <00:37:13.376>blocker <00:37:13.484>and <00:37:13.592>depending <00:37:13.700>on

744
00:37:15.100 --> 00:37:18.600
<00:37:15.100>that <00:37:15.216>you <00:37:15.333>can <00:37:15.450>enforce <00:37:15.566>that <00:37:15.683>the <00:37:15.799>analysis <00:37:15.916>fail <00:37:16.033>of <00:37:16.150>the <00:37:16.266>build <00:37:16.383>and <00:37:16.500>that

745
00:37:18.600 --> 00:37:21.800
<00:37:18.600>if <00:37:18.740>this <00:37:18.880>role <00:37:19.020>is <00:37:19.160>not <00:37:19.299>in <00:37:19.440>for <00:37:19.580>is <00:37:19.720>not <00:37:19.860>fulfilled <00:37:20.000>your

746
00:37:21.800 --> 00:37:24.700
<00:37:21.800>build <00:37:21.940>will <00:37:22.080>not <00:37:22.220>finish <00:37:22.360>and <00:37:22.500>you <00:37:22.640>will <00:37:22.780>not <00:37:22.920>you <00:37:23.060>cannot <00:37:23.200>continue.

747
00:37:24.700 --> 00:37:27.800
<00:37:24.700>So <00:37:24.875>let's <00:37:25.049>create <00:37:25.225>this <00:37:25.399>Json <00:37:25.575>file <00:37:25.750>for <00:37:25.924>our <00:37:26.100>rule.

748
00:37:27.800 --> 00:37:29.500
<00:37:27.800>We <00:37:28.150>can <00:37:28.500>again <00:37:28.850>say <00:37:29.200>avoid

749
00:37:30.500 --> 00:37:33.800
<00:37:30.500>Returning <00:37:30.850>date <00:37:31.200>type <00:37:31.550>and <00:37:31.900>for

750
00:37:33.800 --> 00:37:36.400
<00:37:33.800>our <00:37:33.975>rule. <00:37:34.150>We <00:37:34.325>just <00:37:34.500>have <00:37:34.675>to <00:37:34.850>replace <00:37:35.025>the <00:37:35.200>title.

751
00:37:39.500 --> 00:37:43.300
<00:37:39.500>We <00:37:39.640>can <00:37:39.780>for <00:37:39.920>example <00:37:40.060>say <00:37:40.200>that <00:37:40.340>it <00:37:40.480>has <00:37:40.620>a <00:37:40.760>major <00:37:40.900>severity

752
00:37:42.300 --> 00:37:45.300
<00:37:42.300>and <00:37:42.650>leave <00:37:43.000>everything <00:37:43.350>as <00:37:43.700>it

753
00:37:45.300 --> 00:37:48.700
<00:37:45.300>is. <00:37:45.440>So <00:37:45.580>how <00:37:45.720>do <00:37:45.860>this <00:37:46.000>files <00:37:46.140>actually <00:37:46.280>get <00:37:46.420>used? <00:37:46.560>Well, <00:37:46.700>this

754
00:37:48.700 --> 00:37:51.500
<00:37:48.700>is <00:37:48.855>automatically <00:37:49.011>picked <00:37:49.166>up <00:37:49.322>by <00:37:49.477>the <00:37:49.633>by <00:37:49.788>the <00:37:49.944>by <00:37:50.100>this

755
00:37:51.500 --> 00:37:54.600
<00:37:51.500>project <00:37:51.780>itself. <00:37:52.060>So <00:37:52.340>we've <00:37:52.620>we <00:37:52.900>use

756
00:37:54.600 --> 00:37:57.100
<00:37:54.600>this <00:37:54.775>key <00:37:54.950>that <00:37:55.125>is <00:37:55.299>added <00:37:55.475>in <00:37:55.650>The <00:37:55.825>annotation <00:37:56.000>of

757
00:37:57.100 --> 00:38:00.400
<00:37:57.100>the <00:37:57.255>class <00:37:57.411>itself. <00:37:57.566>So <00:37:57.722>somewhere <00:37:57.877>in <00:37:58.033>this <00:37:58.188>project, <00:37:58.344>it <00:37:58.500>has

758
00:38:00.400 --> 00:38:03.100
<00:38:00.400>already <00:38:00.540>been <00:38:00.680>set <00:38:00.820>up <00:38:00.960>in <00:38:01.100>this <00:38:01.240>specific <00:38:01.380>case. <00:38:01.520>We <00:38:01.660>have <00:38:01.800>this

759
00:38:03.100 --> 00:38:06.400
<00:38:03.100>rule <00:38:03.240>metadata <00:38:03.380>loader <00:38:03.520>class <00:38:03.660>which <00:38:03.799>will <00:38:03.940>allow <00:38:04.080>us <00:38:04.220>to <00:38:04.360>automatically <00:38:04.500>pick

760
00:38:06.400 --> 00:38:09.700
<00:38:06.400>up <00:38:06.527>everything <00:38:06.654>and <00:38:06.781>this <00:38:06.909>is <00:38:07.036>going <00:38:07.163>to <00:38:07.290>automatically <00:38:07.418>be <00:38:07.545>installed <00:38:07.672>as <00:38:07.800>well

761
00:38:09.700 --> 00:38:12.700
<00:38:09.700>here. <00:38:09.899>We <00:38:10.100>can <00:38:10.299>change <00:38:10.500>some <00:38:10.700>specific <00:38:10.899>types <00:38:11.100>specific

762
00:38:12.700 --> 00:38:15.600
<00:38:12.700>metadata <00:38:12.980>for <00:38:13.259>the <00:38:13.540>rule <00:38:13.819>for <00:38:14.100>the

763
00:38:15.600 --> 00:38:18.700
<00:38:15.600>plugin <00:38:15.799>itself. <00:38:16.000>So <00:38:16.200>here <00:38:16.400>we <00:38:16.600>can <00:38:16.799>decide <00:38:17.000>the

764
00:38:18.700 --> 00:38:21.400
<00:38:18.700>repository <00:38:18.827>name <00:38:18.954>which <00:38:19.081>is <00:38:19.209>going <00:38:19.336>to <00:38:19.463>show <00:38:19.590>up <00:38:19.718>on <00:38:19.845>the <00:38:19.972>sonar <00:38:20.100>cube

765
00:38:21.400 --> 00:38:24.800
<00:38:21.400>in <00:38:21.527>the <00:38:21.654>interface. <00:38:21.781>So, <00:38:21.909>for <00:38:22.036>example, <00:38:22.163>we <00:38:22.290>can <00:38:22.418>say <00:38:22.545>here <00:38:22.672>we <00:38:22.800>are

766
00:38:24.800 --> 00:38:27.400
<00:38:24.800>developers <00:38:25.266>custom <00:38:25.733>repository. <00:38:26.200>So

767
00:38:27.400 --> 00:38:29.200
<00:38:27.400>we <00:38:27.575>are <00:38:27.750>sure <00:38:27.925>that <00:38:28.100>we <00:38:28.275>found <00:38:28.450>the <00:38:28.625>correct <00:38:28.800>thing.

768
00:38:30.100 --> 00:38:33.100
<00:38:30.100>And <00:38:30.255>what <00:38:30.411>we've <00:38:30.566>done <00:38:30.722>here <00:38:30.877>is <00:38:31.033>basically <00:38:31.188>taken <00:38:31.344>care <00:38:31.500>of

769
00:38:33.100 --> 00:38:36.300
<00:38:33.100>everything. <00:38:33.216>We <00:38:33.333>have <00:38:33.450>a <00:38:33.566>rule. <00:38:33.683>We <00:38:33.799>have <00:38:33.916>a <00:38:34.033>metadata. <00:38:34.150>We <00:38:34.266>have <00:38:34.383>the <00:38:34.500>test

770
00:38:36.300 --> 00:38:37.900
<00:38:36.300>and <00:38:36.475>we <00:38:36.650>can <00:38:36.825>go <00:38:37.000>ahead <00:38:37.175>and <00:38:37.350>build <00:38:37.525>the <00:38:37.700>project.

771
00:38:38.700 --> 00:38:41.600
<00:38:38.700>and <00:38:38.827>how <00:38:38.954>we <00:38:39.081>do <00:38:39.209>this <00:38:39.336>is <00:38:39.463>just <00:38:39.590>doing <00:38:39.718>a <00:38:39.845>simple <00:38:39.972>Maven <00:38:40.100>clean

772
00:38:41.600 --> 00:38:44.800
<00:38:41.600>install <00:38:41.740>and <00:38:41.880>if <00:38:42.020>everything <00:38:42.160>went <00:38:42.299>correctly, <00:38:42.440>we <00:38:42.580>should <00:38:42.720>have <00:38:42.860>a <00:38:43.000>jar

773
00:38:44.800 --> 00:38:47.400
<00:38:44.800>file <00:38:44.955>which <00:38:45.111>can <00:38:45.266>then <00:38:45.422>be <00:38:45.577>directly <00:38:45.733>installed <00:38:45.888>to <00:38:46.044>sonar <00:38:46.200>Cube

774
00:38:47.400 --> 00:38:50.700
<00:38:47.400>and <00:38:47.680>I'll <00:38:47.960>open <00:38:48.240>this <00:38:48.520>project <00:38:48.800>quickly

775
00:38:50.700 --> 00:38:51.900
<00:38:50.700>and <00:38:51.060>explore <00:38:51.420>to <00:38:51.780>see

776
00:38:53.500 --> 00:38:55.200
<00:38:53.500>where <00:38:53.966>the <00:38:54.433>Jaris <00:38:54.900>okay.

777
00:38:56.400 --> 00:38:59.800
<00:38:56.400>And <00:38:56.540>let's <00:38:56.680>see <00:38:56.820>if <00:38:56.960>the <00:38:57.100>okay <00:38:57.240>the <00:38:57.380>bill <00:38:57.520>has <00:38:57.660>succeeded. <00:38:57.800>And

778
00:38:59.800 --> 00:39:02.800
<00:38:59.800>now <00:38:59.916>if <00:39:00.033>I <00:39:00.150>open <00:39:00.266>the <00:39:00.383>target <00:39:00.500>folder <00:39:00.616>we <00:39:00.733>can <00:39:00.850>see <00:39:00.966>here <00:39:01.083>we <00:39:01.200>have

779
00:39:02.800 --> 00:39:05.500
<00:39:02.800>here <00:39:02.975>two <00:39:03.150>jars <00:39:03.325>one <00:39:03.500>is <00:39:03.675>just <00:39:03.850>for <00:39:04.025>the <00:39:04.200>maven

780
00:39:05.500 --> 00:39:08.100
<00:39:05.500>shade <00:39:05.640>plugin <00:39:05.780>with <00:39:05.920>some <00:39:06.060>of <00:39:06.200>the <00:39:06.340>dependencies <00:39:06.480>hidden <00:39:06.620>away. <00:39:06.760>So <00:39:06.900>we

781
00:39:08.100 --> 00:39:11.400
<00:39:08.100>will <00:39:08.187>use <00:39:08.275>the <00:39:08.362>bigger <00:39:08.450>one <00:39:08.537>because <00:39:08.625>that <00:39:08.712>is <00:39:08.799>the <00:39:08.887>one <00:39:08.975>that <00:39:09.062>can <00:39:09.150>be <00:39:09.237>installed <00:39:09.325>to <00:39:09.412>solar <00:39:09.500>Cube.

782
00:39:12.300 --> 00:39:15.600
<00:39:12.300>So <00:39:12.440>now <00:39:12.580>how <00:39:12.720>do <00:39:12.860>you <00:39:13.000>actually <00:39:13.140>use <00:39:13.280>this <00:39:13.420>video <00:39:13.560>sonar <00:39:13.700>Cube

783
00:39:15.600 --> 00:39:18.300
<00:39:15.600>generally <00:39:15.775>in <00:39:15.950>companies <00:39:16.125>you <00:39:16.299>have <00:39:16.475>one <00:39:16.650>instance <00:39:16.825>of <00:39:17.000>solar

784
00:39:18.300 --> 00:39:21.500
<00:39:18.300>Cube <00:39:18.427>that <00:39:18.554>is <00:39:18.681>used <00:39:18.809>company <00:39:18.936>wide <00:39:19.063>or <00:39:19.190>for <00:39:19.318>the <00:39:19.445>organization <00:39:19.572>or <00:39:19.700>whatever

785
00:39:21.500 --> 00:39:21.900
<00:39:21.500>you <00:39:21.860>have.

786
00:39:22.700 --> 00:39:25.400
<00:39:22.700>In <00:39:22.827>this <00:39:22.954>case, <00:39:23.081>we <00:39:23.209>will <00:39:23.336>do <00:39:23.463>it <00:39:23.590>locally <00:39:23.718>because <00:39:23.845>I <00:39:23.972>have <00:39:24.100>our

787
00:39:25.400 --> 00:39:28.600
<00:39:25.400>instance <00:39:25.540>of <00:39:25.680>sonar <00:39:25.820>cube <00:39:25.960>right <00:39:26.100>here <00:39:26.240>and <00:39:26.380>it's <00:39:26.520>actually <00:39:26.660>really <00:39:26.800>easy

788
00:39:28.600 --> 00:39:31.000
<00:39:28.600>to <00:39:28.716>install <00:39:28.833>it. <00:39:28.950>So <00:39:29.066>all <00:39:29.183>you <00:39:29.299>have <00:39:29.416>to <00:39:29.533>do <00:39:29.650>is <00:39:29.766>just <00:39:29.883>go <00:39:30.000>to

789
00:39:31.400 --> 00:39:34.700
<00:39:31.400>day <00:39:31.540>page <00:39:31.680>and <00:39:31.820>download <00:39:31.960>it <00:39:32.100>and <00:39:32.240>you <00:39:32.380>extract <00:39:32.520>this <00:39:32.660>ZIP <00:39:32.800>and

790
00:39:34.700 --> 00:39:37.500
<00:39:34.700>you <00:39:34.899>have <00:39:35.100>this <00:39:35.299>structure <00:39:35.500>of <00:39:35.700>folders. <00:39:35.899>And <00:39:36.100>all

791
00:39:37.500 --> 00:39:40.300
<00:39:37.500>you <00:39:37.616>have <00:39:37.733>to <00:39:37.850>do <00:39:37.966>is <00:39:38.083>go <00:39:38.200>into <00:39:38.316>the <00:39:38.433>extensions <00:39:38.550>folder <00:39:38.666>find <00:39:38.783>the <00:39:38.900>plugin

792
00:39:40.300 --> 00:39:43.500
<00:39:40.300>sub <00:39:40.475>folder <00:39:40.650>and <00:39:40.825>copy <00:39:41.000>over <00:39:41.175>your <00:39:41.350>your <00:39:41.525>rule <00:39:41.700>set

793
00:39:43.500 --> 00:39:46.600
<00:39:43.500>and <00:39:43.655>that's <00:39:43.811>exactly <00:39:43.966>what <00:39:44.122>you're <00:39:44.277>going <00:39:44.433>to <00:39:44.588>do. <00:39:44.744>The <00:39:44.900>installation

794
00:39:46.600 --> 00:39:49.800
<00:39:46.600>procedure <00:39:46.727>is <00:39:46.854>actually <00:39:46.981>the <00:39:47.109>same <00:39:47.236>if <00:39:47.363>you <00:39:47.490>have <00:39:47.618>this <00:39:47.745>for <00:39:47.872>example <00:39:48.000>hosted

795
00:39:49.800 --> 00:39:52.800
<00:39:49.800>for <00:39:50.080>your <00:39:50.360>whole <00:39:50.640>company <00:39:50.920>somewhere. <00:39:51.200>Maybe

796
00:39:52.800 --> 00:39:55.200
<00:39:52.800>you <00:39:53.000>have <00:39:53.200>a <00:39:53.400>Docker <00:39:53.600>image. <00:39:53.800>So <00:39:54.000>now <00:39:54.200>we

797
00:39:55.200 --> 00:39:58.300
<00:39:55.200>have <00:39:55.316>the <00:39:55.433>role <00:39:55.549>set. <00:39:55.666>It's <00:39:55.783>going <00:39:55.899>to <00:39:56.016>be <00:39:56.133>automatically <00:39:56.250>installed <00:39:56.366>and <00:39:56.483>pick <00:39:56.600>up

798
00:39:58.300 --> 00:40:00.500
<00:39:58.300>picked <00:39:58.500>up <00:39:58.700>once <00:39:58.900>you <00:39:59.100>start <00:39:59.300>on <00:39:59.500>our <00:39:59.700>Cube.

799
00:40:01.300 --> 00:40:04.300
<00:40:01.300>You <00:40:01.427>started <00:40:01.554>by <00:40:01.681>going <00:40:01.809>to <00:40:01.936>the <00:40:02.063>bin <00:40:02.190>bin <00:40:02.318>folder <00:40:02.445>and <00:40:02.572>selecting <00:40:02.700>the

800
00:40:04.300 --> 00:40:07.400
<00:40:04.300>platform <00:40:04.440>you <00:40:04.580>use <00:40:04.720>in <00:40:04.860>this <00:40:05.000>case <00:40:05.140>this <00:40:05.280>windows <00:40:05.420>and <00:40:05.560>I'll <00:40:05.700>just

801
00:40:07.400 --> 00:40:11.600
<00:40:07.400>open <00:40:07.600>the <00:40:07.800>terminal <00:40:08.000>window <00:40:08.200>here <00:40:08.400>and <00:40:08.600>around <00:40:08.800>starts

802
00:40:10.600 --> 00:40:11.900
owner.

803
00:40:13.100 --> 00:40:16.300
<00:40:13.100>And <00:40:13.193>I'll <00:40:13.286>just <00:40:13.380>have <00:40:13.473>to <00:40:13.566>wait <00:40:13.660>a <00:40:13.753>couple <00:40:13.846>of <00:40:13.940>seconds <00:40:14.033>for <00:40:14.126>the <00:40:14.220>sonar <00:40:14.313>to <00:40:14.406>actually <00:40:14.500>run.

804
00:40:16.300 --> 00:40:19.700
<00:40:16.300>So <00:40:16.580>it <00:40:16.860>generally <00:40:17.140>runs <00:40:17.420>by <00:40:17.700>default

805
00:40:19.700 --> 00:40:22.500
<00:40:19.700>on <00:40:19.980>the <00:40:20.259>localhost <00:40:20.540>9000 <00:40:20.819>Port <00:40:21.100>so

806
00:40:22.500 --> 00:40:25.200
<00:40:22.500>I <00:40:22.627>will <00:40:22.754>just <00:40:22.881>open <00:40:23.009>it <00:40:23.136>here. <00:40:23.263>And <00:40:23.390>as <00:40:23.518>soon <00:40:23.645>as <00:40:23.772>it <00:40:23.900>actually

807
00:40:25.200 --> 00:40:28.400
<00:40:25.200>boots <00:40:25.327>up <00:40:25.454>we <00:40:25.581>should <00:40:25.709>see <00:40:25.836>the <00:40:25.963>user <00:40:26.090>interface <00:40:26.218>for <00:40:26.345>sonar. <00:40:26.472>So <00:40:26.600>let's

808
00:40:28.400 --> 00:40:31.400
<00:40:28.400>see <00:40:28.527>how <00:40:28.654>it's <00:40:28.781>going. <00:40:28.909>We'll <00:40:29.036>have <00:40:29.163>to <00:40:29.290>wait <00:40:29.418>a <00:40:29.545>couple <00:40:29.672>of <00:40:29.800>seconds

809
00:40:31.400 --> 00:40:34.800
<00:40:31.400>here. <00:40:31.600>Also <00:40:31.800>just <00:40:32.000>a <00:40:32.200>quick <00:40:32.400>note <00:40:32.600>this <00:40:32.800>whole

810
00:40:34.800 --> 00:40:37.400
<00:40:34.800>project <00:40:34.940>that <00:40:35.080>we <00:40:35.220>are <00:40:35.360>doing <00:40:35.500>here <00:40:35.640>during <00:40:35.780>the <00:40:35.920>live <00:40:36.060>station <00:40:36.200>is

811
00:40:37.400 --> 00:40:40.200
<00:40:37.400>hosted <00:40:37.633>on <00:40:37.866>hosted <00:40:38.100>on <00:40:38.333>GitHub. <00:40:38.566>So <00:40:38.800>you

812
00:40:40.200 --> 00:40:43.500
<00:40:40.200>can <00:40:40.327>find <00:40:40.454>this <00:40:40.581>link. <00:40:40.709>If <00:40:40.836>you <00:40:40.963>if <00:40:41.090>you <00:40:41.218>check <00:40:41.345>the <00:40:41.472>presentation <00:40:41.600>you

813
00:40:43.500 --> 00:40:46.300
<00:40:43.500>can <00:40:43.700>access <00:40:43.900>this <00:40:44.100>code <00:40:44.300>sleep <00:40:44.500>that's <00:40:44.700>indeed <00:40:44.900>custom

814
00:40:46.300 --> 00:40:49.400
<00:40:46.300>rule. <00:40:46.393>You <00:40:46.486>can <00:40:46.580>download <00:40:46.673>it <00:40:46.766>and <00:40:46.860>check <00:40:46.953>it <00:40:47.046>out <00:40:47.140>yourself <00:40:47.233>if <00:40:47.326>you <00:40:47.420>want. <00:40:47.513>It's <00:40:47.606>hosted <00:40:47.700>and

815
00:40:49.400 --> 00:40:50.300
<00:40:49.400>my <00:40:49.805>private <00:40:50.210>Repository.

816
00:40:51.200 --> 00:40:54.800
<00:40:51.200>So, <00:40:51.339>let's <00:40:51.480>see <00:40:51.620>if <00:40:51.759>solar <00:40:51.899>Cube <00:40:52.040>has <00:40:52.180>actually <00:40:52.319>run <00:40:52.460>it <00:40:52.600>has

817
00:40:54.800 --> 00:40:57.500
<00:40:54.800>now <00:40:54.975>I <00:40:55.150>just <00:40:55.325>have <00:40:55.500>to <00:40:55.675>login. <00:40:55.850>The <00:40:56.025>default <00:40:56.200>one

818
00:40:57.500 --> 00:41:01.700
<00:40:57.500>is <00:40:57.655>admin. <00:40:57.811>Admin. <00:40:57.966>Of <00:40:58.122>course, <00:40:58.277>it <00:40:58.433>gives <00:40:58.588>you <00:40:58.744>the <00:40:58.900>warning

819
00:41:00.700 --> 00:41:03.100
<00:41:00.700>that <00:41:00.980>you're <00:41:01.259>using <00:41:01.540>custom <00:41:01.819>roles. <00:41:02.100>You

820
00:41:03.100 --> 00:41:06.500
<00:41:03.100>should <00:41:03.207>be <00:41:03.315>careful <00:41:03.423>what <00:41:03.530>you <00:41:03.638>are <00:41:03.746>doing <00:41:03.853>and <00:41:03.961>they <00:41:04.069>already <00:41:04.176>have <00:41:04.284>this <00:41:04.392>a <00:41:04.500>placeholder

821
00:41:06.500 --> 00:41:09.800
<00:41:06.500>for <00:41:06.675>the <00:41:06.850>project <00:41:07.025>itself. <00:41:07.200>So <00:41:07.375>this <00:41:07.550>is <00:41:07.725>how <00:41:07.900>soon

822
00:41:09.800 --> 00:41:12.500
<00:41:09.800>our <00:41:10.150>Cube <00:41:10.500>looks <00:41:10.850>and <00:41:11.200>if

823
00:41:12.500 --> 00:41:15.000
<00:41:12.500>you <00:41:12.627>go <00:41:12.754>into <00:41:12.881>the <00:41:13.009>rules <00:41:13.136>section, <00:41:13.263>you <00:41:13.390>will <00:41:13.518>see <00:41:13.645>here <00:41:13.772>a <00:41:13.900>lot

824
00:41:15.200 --> 00:41:18.200
<00:41:15.200>of <00:41:15.327>rules <00:41:15.454>that <00:41:15.581>are <00:41:15.709>added <00:41:15.836>by <00:41:15.963>default. <00:41:16.090>And <00:41:16.218>now <00:41:16.345>what <00:41:16.472>we <00:41:16.600>want

825
00:41:18.200 --> 00:41:21.100
<00:41:18.200>to <00:41:18.327>do <00:41:18.454>is <00:41:18.581>find <00:41:18.709>our <00:41:18.836>custom <00:41:18.963>rules. <00:41:19.090>So <00:41:19.218>if <00:41:19.345>you <00:41:19.472>select <00:41:19.600>the

826
00:41:21.100 --> 00:41:24.100
<00:41:21.100>Java <00:41:21.255>and <00:41:21.411>go <00:41:21.566>to <00:41:21.722>the <00:41:21.877>repository <00:41:22.033>section, <00:41:22.188>we <00:41:22.344>should <00:41:22.500>see

827
00:41:24.100 --> 00:41:27.900
<00:41:24.100>the <00:41:24.299>new <00:41:24.500>repository <00:41:24.700>section <00:41:24.900>called <00:41:25.100>VR <00:41:25.299>developers <00:41:25.500>and

828
00:41:27.900 --> 00:41:30.400
<00:41:27.900>right <00:41:28.040>here <00:41:28.180>here <00:41:28.320>are <00:41:28.460>the <00:41:28.600>rules <00:41:28.740>that <00:41:28.880>are <00:41:29.020>added <00:41:29.160>built <00:41:29.300>in

829
00:41:30.400 --> 00:41:33.300
<00:41:30.400>into <00:41:30.527>the <00:41:30.654>project <00:41:30.781>itself. <00:41:30.909>But <00:41:31.036>here <00:41:31.163>is <00:41:31.290>also <00:41:31.418>the <00:41:31.545>new <00:41:31.672>one <00:41:31.800>that

830
00:41:33.300 --> 00:41:36.800
<00:41:33.300>we <00:41:33.475>just <00:41:33.650>added <00:41:33.825>avoiding <00:41:34.000>returning <00:41:34.175>date <00:41:34.350>type <00:41:34.525>Rule <00:41:34.700>and

831
00:41:36.800 --> 00:41:40.200
<00:41:36.800>you <00:41:36.955>can <00:41:37.111>also <00:41:37.266>see <00:41:37.422>here <00:41:37.577>the <00:41:37.733>major <00:41:37.888>major <00:41:38.044>take <00:41:38.200>for

832
00:41:40.200 --> 00:41:43.300
<00:41:40.200>the <00:41:40.375>severity <00:41:40.549>and <00:41:40.725>the <00:41:40.899>comment <00:41:41.075>that <00:41:41.250>we <00:41:41.424>add <00:41:41.600>in

833
00:41:43.300 --> 00:41:45.400
<00:41:43.300>the <00:41:43.533>HTML. <00:41:43.766>Everything <00:41:44.000>is <00:41:44.233>here <00:41:44.466>is <00:41:44.700>expected.

834
00:41:46.100 --> 00:41:49.400
<00:41:46.100>So <00:41:46.216>what <00:41:46.333>you <00:41:46.450>do <00:41:46.566>now <00:41:46.683>is <00:41:46.799>just <00:41:46.916>activate <00:41:47.033>this <00:41:47.150>inside <00:41:47.266>your <00:41:47.383>quality <00:41:47.500>profile.

835
00:41:49.400 --> 00:41:52.700
<00:41:49.400>Meaning <00:41:49.540>that <00:41:49.680>you <00:41:49.820>actually <00:41:49.960>want <00:41:50.100>this <00:41:50.240>rule <00:41:50.380>to <00:41:50.520>be <00:41:50.660>enforced <00:41:50.800>inside

836
00:41:52.700 --> 00:41:55.400
<00:41:52.700>of <00:41:52.875>one <00:41:53.049>of <00:41:53.225>your <00:41:53.399>profiles. <00:41:53.575>So <00:41:53.750>a <00:41:53.924>quality <00:41:54.100>profile

837
00:41:55.400 --> 00:41:57.600
<00:41:55.400>is <00:41:55.633>owner <00:41:55.866>basically <00:41:56.100>means <00:41:56.333>are <00:41:56.566>all <00:41:56.800>set.

838
00:41:58.200 --> 00:41:59.500
<00:41:58.200>So <00:41:58.395>let's <00:41:58.589>go <00:41:58.785>ahead <00:41:58.980>and <00:41:59.175>activate <00:41:59.370>it.

839
00:42:00.500 --> 00:42:01.600
<00:42:00.500>and <00:42:00.747>now <00:42:00.995>what <00:42:01.242>we've <00:42:01.490>done

840
00:42:02.400 --> 00:42:05.300
<00:42:02.400>Is <00:42:02.527>made <00:42:02.654>sure <00:42:02.781>that <00:42:02.909>this <00:42:03.036>rule <00:42:03.163>is <00:42:03.290>included <00:42:03.418>but <00:42:03.545>how <00:42:03.672>does <00:42:03.800>the

841
00:42:05.300 --> 00:42:08.200
<00:42:05.300>end <00:42:05.500>user <00:42:05.700>the <00:42:05.900>developer <00:42:06.100>itself? <00:42:06.300>Use <00:42:06.500>this <00:42:06.700>role?

842
00:42:08.200 --> 00:42:11.300
<00:42:08.200>So <00:42:08.339>for <00:42:08.480>that <00:42:08.620>to <00:42:08.759>show <00:42:08.899>you <00:42:09.040>how <00:42:09.180>it <00:42:09.319>works. <00:42:09.460>I've <00:42:09.600>added

843
00:42:11.300 --> 00:42:14.300
<00:42:11.300>a <00:42:11.455>separate <00:42:11.611>project <00:42:11.766>here. <00:42:11.922>We <00:42:12.077>just <00:42:12.233>has <00:42:12.388>one <00:42:12.544>class <00:42:12.700>and

844
00:42:14.300 --> 00:42:18.100
<00:42:14.300>one <00:42:14.475>method <00:42:14.650>which <00:42:14.825>violates <00:42:15.000>the <00:42:15.175>specifically <00:42:15.350>this <00:42:15.525>role <00:42:15.700>we've

845
00:42:17.100 --> 00:42:20.400
<00:42:17.100>created. <00:42:17.255>So <00:42:17.411>it <00:42:17.566>has <00:42:17.722>one <00:42:17.877>method <00:42:18.033>and <00:42:18.188>it <00:42:18.344>returns <00:42:18.500>a

846
00:42:20.400 --> 00:42:20.900
<00:42:20.400>new <00:42:20.850>date.

847
00:42:21.400 --> 00:42:25.000
<00:42:21.400>So <00:42:21.575>I'm <00:42:21.750>having <00:42:21.925>I <00:42:22.100>already <00:42:22.275>have <00:42:22.450>here <00:42:22.625>installed <00:42:22.800>sonarlint,

848
00:42:24.100 --> 00:42:27.400
<00:42:24.100>which <00:42:24.240>is <00:42:24.380>a <00:42:24.520>plugin <00:42:24.660>that <00:42:24.799>is <00:42:24.940>used <00:42:25.080>in <00:42:25.220>combination. <00:42:25.360>It's <00:42:25.500>on

849
00:42:27.400 --> 00:42:31.100
<00:42:27.400>our <00:42:27.507>Cube. <00:42:27.615>If <00:42:27.723>you <00:42:27.830>just <00:42:27.938>install <00:42:28.046>it <00:42:28.153>it's <00:42:28.261>going <00:42:28.369>to <00:42:28.476>use <00:42:28.584>a <00:42:28.692>predetermined <00:42:28.800>local

850
00:42:30.100 --> 00:42:33.000
<00:42:30.100>set <00:42:30.299>of <00:42:30.500>rules. <00:42:30.700>And <00:42:30.900>as <00:42:31.100>you <00:42:31.299>can <00:42:31.500>see

851
00:42:33.400 --> 00:42:36.400
<00:42:33.400>here <00:42:33.516>if <00:42:33.633>I <00:42:33.750>run <00:42:33.866>it <00:42:33.983>it <00:42:34.100>doesn't <00:42:34.216>show <00:42:34.333>any <00:42:34.450>warnings. <00:42:34.566>But <00:42:34.683>what <00:42:34.800>we'd

852
00:42:36.400 --> 00:42:39.400
<00:42:36.400>like <00:42:36.527>to <00:42:36.654>do <00:42:36.781>now <00:42:36.909>is <00:42:37.036>connect <00:42:37.163>this <00:42:37.290>online <00:42:37.418>plugin <00:42:37.545>to <00:42:37.672>my <00:42:37.800>local

853
00:42:39.400 --> 00:42:42.700
<00:42:39.400>instance <00:42:39.540>of <00:42:39.680>sonar <00:42:39.820>Cube <00:42:39.960>and <00:42:40.100>make <00:42:40.240>sure <00:42:40.380>it <00:42:40.520>retrieves <00:42:40.660>and <00:42:40.800>downloads

854
00:42:42.700 --> 00:42:45.100
<00:42:42.700>the <00:42:42.807>rule <00:42:42.915>said <00:42:43.023>that <00:42:43.130>I <00:42:43.238>set <00:42:43.346>up <00:42:43.453>there. <00:42:43.561>So <00:42:43.669>in <00:42:43.776>that <00:42:43.884>way <00:42:43.992>we <00:42:44.100>can

855
00:42:45.100 --> 00:42:48.400
<00:42:45.100>make <00:42:45.216>sure <00:42:45.333>that <00:42:45.450>each <00:42:45.566>of <00:42:45.683>the <00:42:45.799>developers <00:42:45.916>uses <00:42:46.033>the <00:42:46.150>same <00:42:46.266>set <00:42:46.383>of <00:42:46.500>rules

856
00:42:48.400 --> 00:42:49.300
<00:42:48.400>as <00:42:48.805>everybody <00:42:49.210>else.

857
00:42:50.100 --> 00:42:52.700
<00:42:50.100>So <00:42:50.227>we <00:42:50.354>do <00:42:50.481>the <00:42:50.609>by <00:42:50.736>just <00:42:50.863>going <00:42:50.990>into <00:42:51.118>the <00:42:51.245>settings <00:42:51.372>here <00:42:51.500>in

858
00:42:54.300 --> 00:42:56.400
<00:42:54.300>In <00:42:54.533>IntelliJ <00:42:54.766>and <00:42:55.000>we <00:42:55.233>already <00:42:55.466>see <00:42:55.700>here.

859
00:42:57.200 --> 00:43:01.200
<00:42:57.200>Sooner <00:42:57.307>lint <00:42:57.415>section <00:42:57.523>what <00:42:57.630>they <00:42:57.738>need <00:42:57.846>to <00:42:57.953>do <00:42:58.061>now. <00:42:58.169>We <00:42:58.276>just <00:42:58.384>create <00:42:58.492>a <00:42:58.600>and

860
00:43:00.200 --> 00:43:03.300
<00:43:00.200>a <00:43:00.480>connection <00:43:00.759>to <00:43:01.040>the <00:43:01.319>solar <00:43:01.600>Cube.

861
00:43:03.300 --> 00:43:04.700
<00:43:03.300>I <00:43:03.552>was <00:43:03.804>for <00:43:04.056>example <00:43:04.308>call <00:43:04.560>it.

862
00:43:05.600 --> 00:43:08.500
<00:43:05.600>We <00:43:05.880>are <00:43:06.160>devs <00:43:06.440>sonar <00:43:06.720>select <00:43:07.000>the

863
00:43:08.500 --> 00:43:11.400
<00:43:08.500>sonar <00:43:08.640>Cube <00:43:08.780>option. <00:43:08.920>I <00:43:09.060>have <00:43:09.200>to <00:43:09.340>give <00:43:09.480>it <00:43:09.620>the <00:43:09.760>Local <00:43:09.900>Host

864
00:43:11.400 --> 00:43:12.300
9,000.

865
00:43:13.100 --> 00:43:15.600
<00:43:13.100>Okay, <00:43:13.450>I <00:43:13.799>have <00:43:14.150>to <00:43:14.500>somehow.

866
00:43:16.600 --> 00:43:19.600
<00:43:16.600>Somehow <00:43:16.755>login <00:43:16.911>I <00:43:17.066>will <00:43:17.222>use <00:43:17.377>just <00:43:17.533>in <00:43:17.688>this <00:43:17.844>case <00:43:18.000>the

867
00:43:19.600 --> 00:43:20.300
credentials.

868
00:43:21.500 --> 00:43:22.800
<00:43:21.500>And <00:43:21.792>we <00:43:22.085>are <00:43:22.377>basically <00:43:22.670>done.

869
00:43:23.500 --> 00:43:26.300
<00:43:23.500>So <00:43:23.655>the <00:43:23.811>way <00:43:23.966>this <00:43:24.122>works <00:43:24.277>is <00:43:24.433>little <00:43:24.588>generally <00:43:24.744>every <00:43:24.900>now

870
00:43:26.300 --> 00:43:29.300
<00:43:26.300>and <00:43:26.407>then <00:43:26.515>check <00:43:26.623>and <00:43:26.730>update <00:43:26.838>your <00:43:26.946>rule <00:43:27.053>set, <00:43:27.161>but <00:43:27.269>we <00:43:27.376>will <00:43:27.484>now <00:43:27.592>this <00:43:27.700>do

871
00:43:29.300 --> 00:43:32.400
<00:43:29.300>this <00:43:29.475>manually <00:43:29.650>and <00:43:29.825>we <00:43:30.000>also <00:43:30.175>have <00:43:30.350>to <00:43:30.525>bind <00:43:30.700>a

872
00:43:32.400 --> 00:43:35.300
<00:43:32.400>specific <00:43:32.540>project <00:43:32.680>for <00:43:32.820>this <00:43:32.960>for <00:43:33.100>our <00:43:33.240>own <00:43:33.380>project. <00:43:33.520>So <00:43:33.660>for <00:43:33.800>example

873
00:43:35.300 --> 00:43:38.500
<00:43:35.300>in <00:43:35.427>sonar <00:43:35.554>Cube, <00:43:35.681>you <00:43:35.809>can <00:43:35.936>have <00:43:36.063>multiple <00:43:36.190>projects <00:43:36.318>and <00:43:36.445>in <00:43:36.572>Project <00:43:36.700>can

874
00:43:38.500 --> 00:43:41.100
<00:43:38.500>have <00:43:38.675>its <00:43:38.850>own <00:43:39.025>separate <00:43:39.200>rule <00:43:39.375>set. <00:43:39.550>So <00:43:39.725>in <00:43:39.900>this

875
00:43:41.100 --> 00:43:44.700
<00:43:41.100>case, <00:43:41.227>I <00:43:41.354>will <00:43:41.481>just <00:43:41.609>select <00:43:41.736>this <00:43:41.863>instance <00:43:41.990>that <00:43:42.118>I <00:43:42.245>added <00:43:42.372>and <00:43:42.500>from

876
00:43:44.700 --> 00:43:47.200
<00:43:44.700>the <00:43:44.899>list <00:43:45.100>use <00:43:45.299>the <00:43:45.500>placeholder <00:43:45.700>that <00:43:45.899>I <00:43:46.100>created

877
00:43:47.200 --> 00:43:51.100
<00:43:47.200>previously. <00:43:47.375>So <00:43:47.549>if <00:43:47.725>I <00:43:47.899>do <00:43:48.075>all <00:43:48.250>this <00:43:48.424>press <00:43:48.600>apply,

878
00:43:50.100 --> 00:43:53.200
<00:43:50.100>hopefully <00:43:50.380>we <00:43:50.660>should <00:43:50.940>now <00:43:51.220>see <00:43:51.500>our

879
00:43:53.200 --> 00:43:56.200
<00:43:53.200>rule <00:43:53.339>already <00:43:53.480>picked <00:43:53.620>up. <00:43:53.759>So <00:43:53.899>if <00:43:54.040>I <00:43:54.180>press <00:43:54.319>OK <00:43:54.460>you <00:43:54.600>can

880
00:43:56.200 --> 00:43:59.900
<00:43:56.200>already <00:43:56.355>see <00:43:56.511>here <00:43:56.666>of <00:43:56.822>warning <00:43:56.977>has <00:43:57.133>been <00:43:57.288>thrown <00:43:57.444>avoid <00:43:57.600>returning

881
00:43:59.900 --> 00:44:02.300
<00:43:59.900>Java <00:44:00.075>util <00:44:00.250>date <00:44:00.425>and <00:44:00.600>the <00:44:00.775>date <00:44:00.950>itself <00:44:01.125>as <00:44:01.300>we

882
00:44:02.300 --> 00:44:05.500
<00:44:02.300>SV <00:44:02.533>edit <00:44:02.766>is <00:44:03.000>now <00:44:03.233>highlighted <00:44:03.466>if <00:44:03.700>I

883
00:44:05.500 --> 00:44:08.300
<00:44:05.500>hover <00:44:05.640>over <00:44:05.780>it <00:44:05.920>you <00:44:06.060>already <00:44:06.200>see <00:44:06.340>this <00:44:06.480>is <00:44:06.620>the <00:44:06.760>rule <00:44:06.900>we

884
00:44:08.300 --> 00:44:11.400
<00:44:08.300>created <00:44:08.440>and <00:44:08.580>if <00:44:08.720>I <00:44:08.860>click <00:44:09.000>here <00:44:09.140>it <00:44:09.280>will <00:44:09.420>automatically <00:44:09.560>download <00:44:09.700>the

885
00:44:11.400 --> 00:44:14.900
<00:44:11.400>HTML <00:44:11.527>from <00:44:11.654>the <00:44:11.781>solar <00:44:11.909>cubes. <00:44:12.036>So <00:44:12.163>we <00:44:12.290>will <00:44:12.418>directly <00:44:12.545>in <00:44:12.672>intelligence <00:44:12.800>see

886
00:44:14.900 --> 00:44:17.600
<00:44:14.900>the <00:44:15.366>documentation <00:44:15.833>about <00:44:16.300>rule

887
00:44:17.600 --> 00:44:20.500
<00:44:17.600>itself. <00:44:17.755>Generally <00:44:17.911>when <00:44:18.066>you <00:44:18.222>have <00:44:18.377>your <00:44:18.533>rules <00:44:18.688>this <00:44:18.844>this <00:44:19.000>will

888
00:44:20.500 --> 00:44:23.200
<00:44:20.500>be <00:44:20.607>a <00:44:20.715>little <00:44:20.823>more <00:44:20.930>extensive <00:44:21.038>so <00:44:21.146>you <00:44:21.253>would <00:44:21.361>have <00:44:21.469>more <00:44:21.576>examples <00:44:21.684>here <00:44:21.792>or <00:44:21.900>just

889
00:44:23.400 --> 00:44:26.300
<00:44:23.400>More <00:44:23.575>information <00:44:23.750>about <00:44:23.925>what <00:44:24.100>should <00:44:24.275>be <00:44:24.450>happening, <00:44:24.625>but <00:44:24.800>I

890
00:44:26.300 --> 00:44:29.200
<00:44:26.300>think <00:44:26.387>you <00:44:26.475>get <00:44:26.562>the <00:44:26.650>general <00:44:26.737>GST <00:44:26.825>of <00:44:26.912>it. <00:44:27.000>So <00:44:27.087>I <00:44:27.175>think <00:44:27.262>it's <00:44:27.350>really <00:44:27.437>great <00:44:27.525>that <00:44:27.612>that <00:44:27.700>way

891
00:44:29.200 --> 00:44:32.700
<00:44:29.200>we <00:44:29.316>can <00:44:29.433>make <00:44:29.549>sure <00:44:29.666>that <00:44:29.783>all <00:44:29.899>the <00:44:30.016>developers <00:44:30.133>are <00:44:30.250>using <00:44:30.366>the <00:44:30.483>same <00:44:30.600>role

892
00:44:32.700 --> 00:44:35.300
<00:44:32.700>set <00:44:32.875>and <00:44:33.049>that <00:44:33.225>if <00:44:33.399>something <00:44:33.575>goes <00:44:33.750>wrong <00:44:33.924>in <00:44:34.100>the

893
00:44:35.300 --> 00:44:38.200
<00:44:35.300>code <00:44:35.416>and <00:44:35.533>they <00:44:35.650>get <00:44:35.766>see <00:44:35.883>warnings <00:44:36.000>they <00:44:36.116>can <00:44:36.233>easily <00:44:36.350>check <00:44:36.466>what <00:44:36.583>is <00:44:36.700>going

894
00:44:38.200 --> 00:44:41.200
<00:44:38.200>on. <00:44:38.307>They <00:44:38.415>can <00:44:38.523>see <00:44:38.630>why <00:44:38.738>this <00:44:38.846>is <00:44:38.953>wrong. <00:44:39.061>And <00:44:39.169>if <00:44:39.276>they <00:44:39.384>really <00:44:39.492>want <00:44:39.600>they

895
00:44:41.200 --> 00:44:44.200
<00:44:41.200>can <00:44:41.355>go <00:44:41.511>directly <00:44:41.666>into <00:44:41.822>our <00:44:41.977>Confluence <00:44:42.133>and <00:44:42.288>check <00:44:42.444>maybe <00:44:42.600>more

896
00:44:44.200 --> 00:44:45.600
<00:44:44.200>information <00:44:44.515>about <00:44:44.830>the <00:44:45.145>rule <00:44:45.460>itself.

897
00:44:46.400 --> 00:44:46.600
So

898
00:44:47.700 --> 00:44:51.400
<00:44:47.700>this <00:44:47.827>is <00:44:47.954>basically <00:44:48.081>it <00:44:48.209>for <00:44:48.336>the <00:44:48.463>Practical <00:44:48.590>part <00:44:48.718>of <00:44:48.845>the <00:44:48.972>session. <00:44:49.100>What

899
00:44:50.400 --> 00:44:53.500
<00:44:50.400>we've <00:44:50.555>done <00:44:50.711>here <00:44:50.866>is <00:44:51.022>went <00:44:51.177>through <00:44:51.333>all <00:44:51.488>the <00:44:51.644>steps <00:44:51.800>basically

900
00:44:53.500 --> 00:44:56.500
<00:44:53.500>from <00:44:53.733>the <00:44:53.966>start <00:44:54.200>of <00:44:54.433>the <00:44:54.666>role <00:44:54.900>creation

901
00:44:56.500 --> 00:44:59.100
<00:44:56.500>to <00:44:56.700>the <00:44:56.900>deployment <00:44:57.100>and <00:44:57.300>creating <00:44:57.500>all <00:44:57.700>plugin <00:44:57.900>and

902
00:44:59.100 --> 00:45:02.800
<00:44:59.100>then <00:44:59.227>deploying <00:44:59.354>it <00:44:59.481>to <00:44:59.609>the <00:44:59.736>sonar <00:44:59.863>Cube <00:44:59.990>and <00:45:00.118>connecting <00:45:00.245>it <00:45:00.372>intelligence. <00:45:00.500>So

903
00:45:02.800 --> 00:45:05.700
<00:45:02.800>I <00:45:02.916>think <00:45:03.033>this <00:45:03.150>is <00:45:03.266>a <00:45:03.383>really <00:45:03.500>neat <00:45:03.616>way <00:45:03.733>of <00:45:03.850>doing <00:45:03.966>it. <00:45:04.083>And <00:45:04.200>of

904
00:45:05.700 --> 00:45:08.200
<00:45:05.700>course <00:45:05.899>here, <00:45:06.100>we <00:45:06.299>just <00:45:06.500>had <00:45:06.700>a <00:45:06.899>one-liner <00:45:07.100>for

905
00:45:08.200 --> 00:45:11.600
<00:45:08.200>the <00:45:08.316>check <00:45:08.433>in <00:45:08.549>Java. <00:45:08.666>But <00:45:08.783>but <00:45:08.899>if <00:45:09.016>you <00:45:09.133>want <00:45:09.250>you <00:45:09.366>can <00:45:09.483>make <00:45:09.600>many

906
00:45:11.600 --> 00:45:14.500
<00:45:11.600>many <00:45:11.755>more <00:45:11.911>sophisticated <00:45:12.066>rules <00:45:12.222>and <00:45:12.377>you <00:45:12.533>can <00:45:12.688>also <00:45:12.844>check <00:45:13.000>the

907
00:45:14.500 --> 00:45:17.700
<00:45:14.500>implementations <00:45:14.655>from <00:45:14.811>the <00:45:14.966>song <00:45:15.122>that <00:45:15.277>Java <00:45:15.433>from <00:45:15.588>from <00:45:15.744>the <00:45:15.900>company

908
00:45:17.700 --> 00:45:20.500
<00:45:17.700>that <00:45:17.799>makes <00:45:17.899>the <00:45:18.000>rules <00:45:18.100>like <00:45:18.200>you <00:45:18.299>can <00:45:18.399>see <00:45:18.500>that <00:45:18.600>it's <00:45:18.700>a <00:45:18.799>really <00:45:18.899>big <00:45:19.000>project <00:45:19.100>and

909
00:45:20.500 --> 00:45:23.200
<00:45:20.500>you <00:45:20.627>can <00:45:20.754>do <00:45:20.881>some <00:45:21.009>really <00:45:21.136>great <00:45:21.263>things <00:45:21.390>with <00:45:21.518>the <00:45:21.645>roles <00:45:21.772>depending <00:45:21.900>your

910
00:45:23.200 --> 00:45:24.600
<00:45:23.200>needs <00:45:23.452>on <00:45:23.703>the <00:45:23.955>project. <00:45:24.208>Of <00:45:24.460>course.

911
00:45:25.500 --> 00:45:28.500
<00:45:25.500>And <00:45:25.627>this <00:45:25.754>is <00:45:25.881>basically <00:45:26.009>it <00:45:26.136>thank <00:45:26.263>you <00:45:26.390>for <00:45:26.518>your <00:45:26.645>attention, <00:45:26.772>and <00:45:26.900>I'd

912
00:45:28.500 --> 00:45:31.500
<00:45:28.500>like <00:45:28.640>to <00:45:28.780>move <00:45:28.920>now <00:45:29.060>to <00:45:29.200>the <00:45:29.340>Q&amp;A <00:45:29.480>section <00:45:29.620>of <00:45:29.760>the <00:45:29.900>presentation.

913
00:45:41.900 --> 00:45:44.600
<00:45:41.900>So <00:45:42.100>for <00:45:42.300>the <00:45:42.500>Q&amp;A <00:45:42.700>session <00:45:42.900>just <00:45:43.100>to <00:45:43.300>remind

914
00:45:44.600 --> 00:45:47.300
<00:45:44.600>you. <00:45:44.740>Please <00:45:44.880>submit <00:45:45.020>your <00:45:45.160>questions <00:45:45.299>in <00:45:45.440>the <00:45:45.580>app <00:45:45.720>so <00:45:45.860>that <00:45:46.000>we

915
00:45:47.300 --> 00:45:47.900
<00:45:47.300>can <00:45:47.480>rate <00:45:47.660>it <00:45:47.840>out.

916
00:45:49.300 --> 00:45:52.400
<00:45:49.300>And <00:45:49.533>answer <00:45:49.766>them <00:45:50.000>and <00:45:50.233>first <00:45:50.466>up. <00:45:50.700>Do

917
00:45:52.400 --> 00:45:55.600
<00:45:52.400>we <00:45:52.680>have <00:45:52.960>any <00:45:53.240>idea <00:45:53.520>documentation <00:45:53.800>Library?

918
00:45:57.100 --> 00:46:01.400
<00:45:57.100>initial <00:45:57.450>documentation <00:45:57.799>Library <00:45:58.150>ideal <00:45:58.500>documentation

919
00:46:01.400 --> 00:46:02.000
Library

920
00:46:03.500 --> 00:46:06.200
<00:46:03.500>Huh? <00:46:03.780>No, <00:46:04.060>not <00:46:04.340>really <00:46:04.620>or <00:46:04.900>at

921
00:46:06.200 --> 00:46:07.500
<00:46:06.200>least <00:46:06.367>I'm <00:46:06.534>not <00:46:06.701>familiar <00:46:06.868>with <00:46:07.035>it. <00:46:07.202>I <00:46:07.370>mean

922
00:46:08.300 --> 00:46:11.900
<00:46:08.300>rules <00:46:09.000>do <00:46:09.700>document

923
00:46:11.900 --> 00:46:14.600
<00:46:11.900>stuff <00:46:12.075>in <00:46:12.250>a <00:46:12.425>good <00:46:12.600>way <00:46:12.775>and <00:46:12.950>for <00:46:13.125>Java, <00:46:13.300>we

924
00:46:14.600 --> 00:46:17.900
<00:46:14.600>have <00:46:14.740>a <00:46:14.880>lot <00:46:15.020>of <00:46:15.160>out <00:46:15.299>of <00:46:15.440>the <00:46:15.580>box <00:46:15.720>rules. <00:46:15.860>And <00:46:16.000>at

925
00:46:17.900 --> 00:46:20.100
<00:46:17.900>least <00:46:18.133>I <00:46:18.366>didn't <00:46:18.600>so <00:46:18.833>on <00:46:19.066>it <00:46:19.300>so

926
00:46:20.100 --> 00:46:23.200
<00:46:20.100>far <00:46:20.275>to <00:46:20.450>do <00:46:20.625>a <00:46:20.799>lot <00:46:20.975>of <00:46:21.150>java <00:46:21.325>customizations <00:46:21.500>in

927
00:46:23.200 --> 00:46:26.200
<00:46:23.200>the <00:46:23.327>rules, <00:46:23.454>but <00:46:23.581>we <00:46:23.709>did <00:46:23.836>so <00:46:23.963>I <00:46:24.090>need <00:46:24.218>for <00:46:24.345>framework <00:46:24.472>specific <00:46:24.600>things.

928
00:46:27.400 --> 00:46:30.400
<00:46:27.400>and <00:46:27.575>we <00:46:27.750>do <00:46:27.925>also <00:46:28.100>documentation <00:46:28.275>ourselves <00:46:28.450>on <00:46:28.625>Confluence <00:46:28.800>on

929
00:46:30.400 --> 00:46:33.500
<00:46:30.400>different <00:46:30.680>best <00:46:30.960>practices, <00:46:31.240>and <00:46:31.520>maybe <00:46:31.800>it's

930
00:46:33.500 --> 00:46:36.700
<00:46:33.500>a <00:46:33.627>good <00:46:33.754>idea <00:46:33.881>that <00:46:34.009>we <00:46:34.136>have <00:46:34.263>a <00:46:34.390>general <00:46:34.518>one <00:46:34.645>for <00:46:34.772>all <00:46:34.900>Java

931
00:46:36.700 --> 00:46:37.400
<00:46:36.700>developers, <00:46:37.330>but

932
00:46:38.400 --> 00:46:41.500
<00:46:38.400>I'm <00:46:38.555>not <00:46:38.711>aware <00:46:38.866>if <00:46:39.022>there <00:46:39.177>is <00:46:39.333>any <00:46:39.488>probably <00:46:39.644>companies, <00:46:39.800>you

933
00:46:41.500 --> 00:46:44.200
<00:46:41.500>know, <00:46:41.627>the <00:46:41.754>big <00:46:41.881>ones <00:46:42.009>like <00:46:42.136>Google <00:46:42.263>and <00:46:42.390>Microsoft <00:46:42.518>they <00:46:42.645>might <00:46:42.772>have <00:46:42.900>something.

934
00:46:46.900 --> 00:46:49.600
<00:46:46.900>The <00:46:47.133>do <00:46:47.366>you <00:46:47.600>tell <00:46:47.833>your <00:46:48.066>developers <00:46:48.300>to

935
00:46:49.600 --> 00:46:51.400
<00:46:49.600>update <00:46:49.950>the <00:46:50.299>sooner <00:46:50.650>rules <00:46:51.000>manually?

936
00:46:55.200 --> 00:46:58.100
<00:46:55.200>What <00:46:55.307>do <00:46:55.415>you <00:46:55.523>mean <00:46:55.630>update <00:46:55.738>the <00:46:55.846>rules <00:46:55.953>them <00:46:56.061>in <00:46:56.169>the <00:46:56.276>does <00:46:56.384>it <00:46:56.492>say <00:46:56.600>something

937
00:46:58.100 --> 00:46:58.300
else?

938
00:46:59.900 --> 00:47:02.300
<00:46:59.900>I <00:47:00.100>guess <00:47:00.300>I <00:47:00.500>would <00:47:00.700>assume <00:47:00.900>that <00:47:01.100>that <00:47:01.300>means

939
00:47:02.300 --> 00:47:05.700
<00:47:02.300>the <00:47:02.475>devs <00:47:02.650>themself <00:47:02.825>update <00:47:03.000>the <00:47:03.175>rules <00:47:03.350>and <00:47:03.525>the <00:47:03.700>checks

940
00:47:05.700 --> 00:47:08.400
<00:47:05.700>that <00:47:05.855>we <00:47:06.011>just <00:47:06.166>created. <00:47:06.322>So <00:47:06.477>no <00:47:06.633>the <00:47:06.788>way <00:47:06.944>this <00:47:07.100>works

941
00:47:08.400 --> 00:47:11.200
<00:47:08.400>is <00:47:08.540>that <00:47:08.680>we <00:47:08.820>have <00:47:08.960>the <00:47:09.100>open <00:47:09.240>source <00:47:09.380>project. <00:47:09.520>So <00:47:09.660>if <00:47:09.800>somebody

942
00:47:11.200 --> 00:47:14.300
<00:47:11.200>has <00:47:11.327>something <00:47:11.454>to <00:47:11.581>say <00:47:11.709>about <00:47:11.836>it, <00:47:11.963>they <00:47:12.090>can <00:47:12.218>easily <00:47:12.345>raise <00:47:12.472>an <00:47:12.600>issue

943
00:47:14.300 --> 00:47:17.600
<00:47:14.300>in <00:47:14.427>GitHub <00:47:14.554>or <00:47:14.681>just <00:47:14.809>directly <00:47:14.936>contact <00:47:15.063>the <00:47:15.190>people <00:47:15.318>who <00:47:15.445>are <00:47:15.572>responsible <00:47:15.700>for

944
00:47:17.600 --> 00:47:20.200
<00:47:17.600>maintaining <00:47:17.775>the <00:47:17.950>rules <00:47:18.125>and <00:47:18.299>then <00:47:18.475>we <00:47:18.650>will <00:47:18.825>just <00:47:19.000>discuss

945
00:47:20.200 --> 00:47:23.100
<00:47:20.200>if <00:47:20.316>the <00:47:20.433>if <00:47:20.549>the <00:47:20.666>change <00:47:20.783>is <00:47:20.899>warranted <00:47:21.016>and <00:47:21.133>if <00:47:21.250>it <00:47:21.366>is <00:47:21.483>we <00:47:21.600>can

946
00:47:23.100 --> 00:47:26.300
<00:47:23.100>implement <00:47:23.216>the <00:47:23.333>change <00:47:23.450>in <00:47:23.566>the <00:47:23.683>rules <00:47:23.799>and <00:47:23.916>then <00:47:24.033>of <00:47:24.150>course <00:47:24.266>that <00:47:24.383>would <00:47:24.500>require

947
00:47:26.300 --> 00:47:29.100
<00:47:26.300>the <00:47:26.440>release <00:47:26.580>of <00:47:26.720>the <00:47:26.860>new <00:47:27.000>version, <00:47:27.140>of <00:47:27.280>course, <00:47:27.420>so <00:47:27.560>a <00:47:27.700>couple

948
00:47:29.100 --> 00:47:32.600
<00:47:29.100>of <00:47:29.240>steps <00:47:29.380>need <00:47:29.520>to <00:47:29.660>be <00:47:29.799>taken <00:47:29.940>here <00:47:30.080>with <00:47:30.220>the <00:47:30.360>bureaucracy <00:47:30.500>itself.

949
00:47:32.600 --> 00:47:35.400
<00:47:32.600>And <00:47:32.799>also <00:47:33.000>the <00:47:33.200>way <00:47:33.400>the <00:47:33.600>custom <00:47:33.799>solar <00:47:34.000>Cube

950
00:47:35.400 --> 00:47:38.600
<00:47:35.400>rules <00:47:35.516>work <00:47:35.633>is <00:47:35.750>that <00:47:35.866>you <00:47:35.983>can <00:47:36.100>deploy <00:47:36.216>them <00:47:36.333>directly <00:47:36.450>to <00:47:36.566>the <00:47:36.683>solar <00:47:36.800>Cube

951
00:47:38.600 --> 00:47:41.200
<00:47:38.600>Marketplace <00:47:38.799>and <00:47:39.000>that <00:47:39.200>also <00:47:39.400>requires <00:47:39.600>some <00:47:39.799>bureaucratic <00:47:40.000>steps

952
00:47:41.200 --> 00:47:44.300
<00:47:41.200>where <00:47:41.327>you <00:47:41.454>have <00:47:41.581>to <00:47:41.709>actually <00:47:41.836>provide <00:47:41.963>the <00:47:42.090>release <00:47:42.218>notes <00:47:42.345>and <00:47:42.472>create <00:47:42.600>a

953
00:47:44.300 --> 00:47:47.300
<00:47:44.300>trade <00:47:44.427>on <00:47:44.554>their <00:47:44.681>Forum <00:47:44.809>to <00:47:44.936>make <00:47:45.063>sure <00:47:45.190>that <00:47:45.318>the <00:47:45.445>new <00:47:45.572>release <00:47:45.700>will

954
00:47:47.300 --> 00:47:50.500
<00:47:47.300>be <00:47:47.500>installable <00:47:47.700>directly <00:47:47.900>from <00:47:48.100>the <00:47:48.300>user <00:47:48.500>interface. <00:47:48.700>So

955
00:47:50.500 --> 00:47:53.400
<00:47:50.500>what <00:47:50.655>I've <00:47:50.811>shown <00:47:50.966>you <00:47:51.122>now <00:47:51.277>is <00:47:51.433>just <00:47:51.588>adding <00:47:51.744>jar <00:47:51.900>manually,

956
00:47:53.400 --> 00:47:56.200
<00:47:53.400>but <00:47:53.516>you <00:47:53.633>can <00:47:53.750>also <00:47:53.866>just <00:47:53.983>go <00:47:54.100>to <00:47:54.216>the <00:47:54.333>interface <00:47:54.450>and <00:47:54.566>press <00:47:54.683>install. <00:47:54.800>So

957
00:47:56.200 --> 00:47:59.400
<00:47:56.200>whenever <00:47:56.316>we <00:47:56.433>want <00:47:56.549>to <00:47:56.666>make <00:47:56.783>any <00:47:56.899>changes <00:47:57.016>we <00:47:57.133>have <00:47:57.250>to <00:47:57.366>make <00:47:57.483>sure <00:47:57.600>everything.

958
00:47:59.800 --> 00:48:02.600
<00:47:59.800>On <00:47:59.955>so <00:48:00.111>it's <00:48:00.266>not <00:48:00.422>easy <00:48:00.577>for <00:48:00.733>some <00:48:00.888>one <00:48:01.044>person <00:48:01.200>to

959
00:48:02.600 --> 00:48:05.600
<00:48:02.600>change <00:48:02.799>this <00:48:03.000>on <00:48:03.200>its <00:48:03.400>own <00:48:03.600>but <00:48:03.799>any <00:48:04.000>developer

960
00:48:05.600 --> 00:48:08.100
<00:48:05.600>can <00:48:05.755>contribute <00:48:05.911>by <00:48:06.066>adding <00:48:06.222>a <00:48:06.377>customer <00:48:06.533>role <00:48:06.688>if <00:48:06.844>that <00:48:07.000>was

961
00:48:08.100 --> 00:48:12.100
<00:48:08.100>the <00:48:08.216>question. <00:48:08.333>Yes, <00:48:08.450>but <00:48:08.566>of <00:48:08.683>course <00:48:08.799>there <00:48:08.916>is <00:48:09.033>a <00:48:09.150>round <00:48:09.266>of <00:48:09.383>people <00:48:09.500>senior

962
00:48:11.100 --> 00:48:14.400
<00:48:11.100>Engineers <00:48:11.299>that <00:48:11.500>need <00:48:11.700>to <00:48:11.900>review <00:48:12.100>things <00:48:12.299>that <00:48:12.500>go

963
00:48:14.400 --> 00:48:18.300
<00:48:14.400>into <00:48:14.555>in <00:48:14.711>there <00:48:14.866>defeat <00:48:15.022>the <00:48:15.177>purpose, <00:48:15.333>doesn't <00:48:15.488>it? <00:48:15.644>Okay. <00:48:15.800>Well,

964
00:48:17.300 --> 00:48:20.900
<00:48:17.300>thank <00:48:17.500>you <00:48:17.700>guys <00:48:17.900>so <00:48:18.100>much <00:48:18.300>for <00:48:18.500>taking <00:48:18.700>time

965
00:48:20.900 --> 00:48:23.300
<00:48:20.900>to <00:48:21.250>walk <00:48:21.600>through. <00:48:21.950>Thanks <00:48:22.300>for

966
00:48:23.300 --> 00:48:24.100
<00:48:23.300>having <00:48:23.480>us. <00:48:23.660>What's <00:48:23.840>a <00:48:24.020>pleasure?