APÊNDICE B – Descrição do Processo de ETL no Kettle
Neste apêndice, será apresentado a implementação do ETL no Kettle, onde se utilizou dos arquivos CSV resultantes da análise de métricas de código-fonte do Analizo, FindBugs e PMD. No processo de ETL proposto por Rêgo (2014), os arquivos do tipo CSV obtidos do Analizo foram convertidos para JSON, neste trabalho apenas os arqui-vos obtidos pelo Analizo e PMD foram convertidos para JSON, os arquiarqui-vos obtidos do FindBugs foram mantidos no formado CSV. Visando realizar a conversão, foi escrito uma pequena aplicação web na linguagem Ruby, disponível para download no repositório do github 1.
verificar se um determinado campo já existia em uma Dimensão, caso existisse, apenas se retornava o id da túpula, se não o inseria na Dimensão; O componente Select Values foi utilizado para filtrar os dados provienente de outros componentes em uma Transforma-tion; O componenteFilter rows foi utilizado para que as linhas vazias dos arquivos fossem omitidas; O componente Concat Fields foi utilizado para juntar os camposstart eend da análise do FindBugs para formar o campo line que é padrão das outras análises; Por fim o componente if field is null para rejeitar os valores de line em branco.
Na primeira transformação, como se mostra na Figura31, obtém-se os dados provi-nientes do arquivo JSON com componenteJSON Input. Em uma primeira etapa, coletava-se sobre dados: nome do projeto, releacoletava-se do arquivo, data de lançamento da releacoletava-se. Após a coleta dos dados do arquivo JSON, se inseria, conforme as verificações do componente Combination Lookup, nas dimensões correspondentes.
Figura 31 – Primeira Transformação realizada no Kettle
Na segunda transformação, como se mostra na Figura 32, cobre-se o processo de negócio de avaliação dos valores percentis das métricas de código-fonte do projeto em uma determinada release do software. Para tal, foi coletado os valores das métricas de código-fonte de cada classe com o componente JSON Input. Após a coleta dos valores das métricas, esses eram direcionados ao componenteUnivariate Statisticsque realiza cálculos estatísticos. Após a realização dos cálculos, foi realizado um filtro com Select Valuesa fim de se obter apenas os percentis obtidos para cada umas das métricas.
Figura 32 – Segunda Transformação realizada no Kettle
Por fim, foi realizado a avaliação dos valores percentis, em intervalos qualitativos nos metadados com o componente Execute SQL Script. Neste componente, recebeu-se o código-fonte descrito no Código-Fonte 1, onde cada ? foi substituído por uma variável dentro da Transformation.
1 2
3 SET @ i d P r o j e c t = (S E L E C T max( i d P r o j e c t ) f r o m D _ P r o j e c t ) ; 4
5 SET @ i d T i m e = (S E L E C T max( i d T i m e ) f r o m D _ T i m e ) ; 6
7 SET @ i d R e l e a s e = (S E L E C T max( i d R e l e a s e ) f r o m D _ R e l e a s e ) ; 8
9 SET @ P r o j e c t _ L a n g u a g e = (S E L E C T p r o j e c t _ l a n g u a g e f r o m D _ P r o j e c t w h e r e i d P r o j e c t = @ i d P r o j e c t ) ;
10
11 SET @ B e s t _ C o n f i g u r a t i o n = (S E L E C T i d C o n f i g u r a t i o n F R O M D _ C o n f i g u r a t i o n w h e r e c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’ and
12 l a n g u a g e _ n a m e L I K E C O N C A T (’ % ’, @ P r o j e c t _ L a n g u a g e , ’ % ’) ) ; 13
14 SET @ W o r s t _ C o n f i g u r a t i o n = (S E L E C T i d C o n f i g u r a t i o n F R O M D _ C o n f i g u r a t i o n w h e r e c o n f i g u r a t i o n _ n a m e l i k e ’ % T o m c a t M e t r i c s % ’ and
15 l a n g u a g e _ n a m e L I K E C O N C A T (’ % ’, @ P r o j e c t _ L a n g u a g e , ’ % ’) ) ; 16
17 18
19 SET @ i d L O C = (S E L E C T i d M e t r i c F R O M D _ M e t r i c w h e r e m e t r i c _ a b b r e v i a t i o n =’ LOC ’) ;
20 21 22
23 SET @ q u a l i t y B e s t L O C = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 24 I N N E R J O I N D _ Q u a l i t y
25 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = ’ j a v a ’
26 and m e t r i c _ n a m e =’ LOC ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
27
28 29 30
31 SET @ q u a l i t y W o r s t L O C = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 32 I N N E R J O I N D _ Q u a l i t y
33 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
34 and m e t r i c _ n a m e =’ LOC ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % T o m c a t M e t r i c s % ’) ;
35 36 37
38 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
39 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
40 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 41 V A L U E S
42 (? , @ i d P r o j e c t , @idLOC , @ q u a l i t y B e s t L O C , @ B e s t _ C o n f i g u r a t i o n , @ i d R e l e a s e , @ i d T i m e ) ;
43 44 45 46 47
48 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
49 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
50 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 51 V A L U E S
52 (? , @ i d P r o j e c t , @idLOC , @ q u a l i t y W o r s t L O C , @ W o r s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ; 53
54 55 56
57 SET @ i d A C C M = (S E L E C T i d M e t r i c F R O M D _ M e t r i c w h e r e m e t r i c _ a b b r e v i a t i o n =’ A C C M ’) ;
58 59 60
61 SET @ q u a l i t y B e s t A C C M = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 62 I N N E R J O I N D _ Q u a l i t y
63 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
64 and m e t r i c _ n a m e =’ A C C M ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e
l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ; 65
66 67 68
69 SET @ q u a l i t y W o r s t A C C M = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 70 I N N E R J O I N D _ Q u a l i t y
71 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
72 and m e t r i c _ n a m e =’ A C C M ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % T o m c a t M e t r i c s % ’) ;
73 74
75 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
76 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
77 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 78 V A L U E S
79 (? , @ i d P r o j e c t , @idACCM , @ q u a l i t y B e s t A C C M , @ B e s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ; 80
81 82 83 84
85 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
86 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
87 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 88 V A L U E S
89 (? , @ i d P r o j e c t , @idACCM , @ q u a l i t y W o r s t A C C M , @ W o r s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ; 90
91 92
93 SET @ i d A M L O C = (S E L E C T i d M e t r i c F R O M D _ M e t r i c w h e r e m e t r i c _ a b b r e v i a t i o n =
’ A M L O C ’) ; 94
95 96
97 SET @ q u a l i t y B e s t A M L O C = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 98 I N N E R J O I N D _ Q u a l i t y
99 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
100 and m e t r i c _ n a m e =’ A M L O C ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e
l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ; 101
102 103 104
105 SET @ q u a l i t y W o r s t A M L O C = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 106 I N N E R J O I N D _ Q u a l i t y
107 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
108 and m e t r i c _ n a m e =’ A M L O C ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % T o m c a t M e t r i c s % ’) ;
109 110 111
112 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
113 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
114 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 115 V A L U E S
116 (? , @ i d P r o j e c t , @ i d A M L O C , @ q u a l i t y B e s t A M L O C , @ B e s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ; 117
118 119 120 121
122 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
123 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
124 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 125 V A L U E S
126 (? , @ i d P r o j e c t , @ i d A M L O C , @ q u a l i t y W o r s t A M L O C , @ W o r s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ; 127
128 129
130 SET @ i d A C C = (S E L E C T i d M e t r i c F R O M D _ M e t r i c w h e r e m e t r i c _ a b b r e v i a t i o n =’ ACC ’) ;
131 132 133
134 SET @ q u a l i t y B e s t A C C = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 135 I N N E R J O I N D _ Q u a l i t y
136 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
137 and m e t r i c _ n a m e =’ ACC ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
138 139 140 141
142 SET @ q u a l i t y W o r s t A C C = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 143 I N N E R J O I N D _ Q u a l i t y
144 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
145 and m e t r i c _ n a m e =’ ACC ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % T o m c a t M e t r i c s % ’) ;
146 147 148
149 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
150 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
151 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 152 V A L U E S
153 (? , @ i d P r o j e c t , @idACC , @ q u a l i t y B e s t A C C , @ B e s t _ C o n f i g u r a t i o n , @ i d R e l e a s e , @ i d T i m e ) ;
154 155 156 157 158
159 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
160 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
161 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 162 V A L U E S
163 (? , @ i d P r o j e c t , @idACC , @ q u a l i t y W o r s t A C C , @ W o r s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ; 164
165 166 167
168 SET @ i d A N P M = (S E L E C T i d M e t r i c F R O M D _ M e t r i c w h e r e m e t r i c _ a b b r e v i a t i o n =’ A N P M ’) ;
169 170 171
172 SET @ q u a l i t y B e s t A N P M = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 173 I N N E R J O I N D _ Q u a l i t y
174 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
175 and m e t r i c _ n a m e =’ A N P M ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
176 177 178 179
180 SET @ q u a l i t y W o r s t A N P M = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 181 I N N E R J O I N D _ Q u a l i t y
182 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
183 and m e t r i c _ n a m e =’ A N P M ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % T o m c a t M e t r i c s % ’) ;
184 185 186
187 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
188 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
189 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 190 V A L U E S
191 (? , @ i d P r o j e c t , @idANPM , @ q u a l i t y B e s t A N P M , @ B e s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ; 192
193 194 195 196
197 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
198 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
199 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 200 V A L U E S
201 (? , @ i d P r o j e c t , @idANPM , @ q u a l i t y W o r s t A N P M , @ W o r s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ; 202
203 204
205 SET @ i d C B O = (S E L E C T i d M e t r i c F R O M D _ M e t r i c w h e r e m e t r i c _ a b b r e v i a t i o n =’ CBO ’) ;
206 207 208
209 SET @ q u a l i t y B e s t C B O = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s
210 I N N E R J O I N D _ Q u a l i t y
211 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
212 and m e t r i c _ n a m e =’ CBO ’ and r o u n d (?) <= max AND r o u n d (?) >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
213 214 215 216
217 SET @ q u a l i t y W o r s t C B O = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 218 I N N E R J O I N D _ Q u a l i t y
219 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
220 and m e t r i c _ n a m e =’ CBO ’ and r o u n d (?) <= max AND r o u n d (?) >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % T o m c a t M e t r i c s % ’) ;
221 222 223
224 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
225 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
226 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 227 V A L U E S
228 ( r o u n d (?) , @ i d P r o j e c t , @idCBO , @ q u a l i t y B e s t C B O , @ B e s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ; 229
230 231 232 233
234 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
235 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
236 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 237 V A L U E S
238 ( r o u n d (?) , @ i d P r o j e c t , @idCBO , @ q u a l i t y W o r s t C B O , @ W o r s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ; 239
240 241
242 SET @ i d D I T = (S E L E C T i d M e t r i c F R O M D _ M e t r i c w h e r e m e t r i c _ a b b r e v i a t i o n =’ DIT ’) ;
243 244 245
246 SET @ q u a l i t y B e s t D I T = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 247 I N N E R J O I N D _ Q u a l i t y
248 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
249 and m e t r i c _ n a m e =’ DIT ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
250 251 252 253
254 SET @ q u a l i t y W o r s t D I T = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 255 I N N E R J O I N D _ Q u a l i t y
256 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
257 and m e t r i c _ n a m e =’ DIT ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % T o m c a t M e t r i c s % ’) ;
258 259 260
261 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
262 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
263 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 264 V A L U E S
265 (? , @ i d P r o j e c t , @idDIT , @ q u a l i t y B e s t D I T , @ B e s t _ C o n f i g u r a t i o n , @ i d R e l e a s e , @ i d T i m e ) ;
266 267 268 269 270
271 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
272 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
273 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 274 V A L U E S
275 (? , @ i d P r o j e c t , @idDIT , @ q u a l i t y W o r s t D I T , @ W o r s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ; 276
277 278 279 280 281
282 SET @ i d L C O M 4 = (S E L E C T i d M e t r i c F R O M D _ M e t r i c w h e r e m e t r i c _ a b b r e v i a t i o n =
’ L C O M 4 ’) ; 283
284 285
286 SET @ q u a l i t y B e s t L C O M 4 = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 287 I N N E R J O I N D _ Q u a l i t y
288 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
289 and m e t r i c _ n a m e =’ L C O M 4 ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
290 291 292 293
294 SET @ q u a l i t y W o r s t L C O M 4 = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 295 I N N E R J O I N D _ Q u a l i t y
296 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
297 and m e t r i c _ n a m e =’ L C O M 4 ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % T o m c a t M e t r i c s % ’) ;
298 299 300
301 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
302 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
303 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 304 V A L U E S
305 (? , @ i d P r o j e c t , @ i d L C O M 4 , @ q u a l i t y B e s t L C O M 4 , @ B e s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ; 306
307 308 309 310
311 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
312 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
313 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 314 V A L U E S
315 (? , @ i d P r o j e c t , @ i d L C O M 4 , @ q u a l i t y W o r s t L C O M 4 , @ W o r s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ; 316
317 318
319 320 321 322 323
324 SET @ i d N O C = (S E L E C T i d M e t r i c F R O M D _ M e t r i c w h e r e m e t r i c _ a b b r e v i a t i o n =’ NOC ’) ;
325 326 327
328 SET @ q u a l i t y B e s t N O C = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 329 I N N E R J O I N D _ Q u a l i t y
330 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
331 and m e t r i c _ n a m e =’ NOC ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
332 333 334 335
336 SET @ q u a l i t y W o r s t N O C = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 337 I N N E R J O I N D _ Q u a l i t y
338 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
339 and m e t r i c _ n a m e =’ NOC ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % T o m c a t M e t r i c s % ’) ;
340 341 342
343 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
344 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
345 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 346 V A L U E S
347 (? , @ i d P r o j e c t , @idNOC , @ q u a l i t y B e s t N O C , @ B e s t _ C o n f i g u r a t i o n , @ i d R e l e a s e , @ i d T i m e ) ;
348 349 350 351 352
353 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
354 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
355 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘)
356 V A L U E S
357 (? , @ i d P r o j e c t , @idNOC , @ q u a l i t y W o r s t N O C , @ W o r s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ; 358
359 360 361
362 SET @ i d N O M = (S E L E C T i d M e t r i c F R O M D _ M e t r i c w h e r e m e t r i c _ a b b r e v i a t i o n =’ NOM ’) ;
363 364 365
366 SET @ q u a l i t y B e s t N O M = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 367 I N N E R J O I N D _ Q u a l i t y
368 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
369 and m e t r i c _ n a m e =’ NOM ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
370 371 372 373
374 SET @ q u a l i t y W o r s t N O M = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 375 I N N E R J O I N D _ Q u a l i t y
376 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
377 and m e t r i c _ n a m e =’ NOM ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % T o m c a t M e t r i c s % ’) ;
378 379 380
381 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
382 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
383 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 384 V A L U E S
385 (? , @ i d P r o j e c t , @idNOM , @ q u a l i t y B e s t N O M , @ B e s t _ C o n f i g u r a t i o n , @ i d R e l e a s e , @ i d T i m e ) ;
386 387 388 389 390
391 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
392 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
393 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 394 V A L U E S
395 (? , @ i d P r o j e c t , @idNOM , @ q u a l i t y W o r s t N O M , @ W o r s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ; 396
397 398 399
400 SET @ i d N P A = (S E L E C T i d M e t r i c F R O M D _ M e t r i c w h e r e m e t r i c _ a b b r e v i a t i o n =’ NPA ’) ;
401 402 403
404 SET @ q u a l i t y B e s t N P A = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 405 I N N E R J O I N D _ Q u a l i t y
406 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
407 and m e t r i c _ n a m e =’ NPA ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
408 409 410 411
412 SET @ q u a l i t y W o r s t N P A = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 413 I N N E R J O I N D _ Q u a l i t y
414 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
415 and m e t r i c _ n a m e =’ NPA ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % T o m c a t M e t r i c s % ’) ;
416 417 418
419 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
420 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
421 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 422 V A L U E S
423 (? , @ i d P r o j e c t , @idNPA , @ q u a l i t y B e s t N P A , @ B e s t _ C o n f i g u r a t i o n , @ i d R e l e a s e , @ i d T i m e ) ;
424 425 426 427 428
429 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
430 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
431 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 432 V A L U E S
433 (? , @ i d P r o j e c t , @idNPA , @ q u a l i t y W o r s t N P A , @ W o r s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ; 434
435 436
437 SET @ i d R F C = (S E L E C T i d M e t r i c F R O M D _ M e t r i c w h e r e m e t r i c _ a b b r e v i a t i o n =’ RFC ’) ;
438 439 440
441 SET @ q u a l i t y B e s t R F C = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 442 I N N E R J O I N D _ Q u a l i t y
443 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
444 and m e t r i c _ n a m e =’ RFC ’ and r o u n d (?) <= max AND r o u n d (?) >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
445 446 447 448
449 SET @ q u a l i t y W o r s t R F C = (S E L E C T i d Q u a l i t y F R O M M e t a _ M e t r i c _ R a n g e s 450 I N N E R J O I N D _ Q u a l i t y
451 ON M e t a _ M e t r i c _ R a n g e s . q u a l i t y _ i n d e x = D _ Q u a l i t y . q u a l i t y _ i n d e x w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
452 and m e t r i c _ n a m e =’ RFC ’ and r o u n d (?) <= max AND r o u n d (?) >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % T o m c a t M e t r i c s % ’) ;
453 454 455
456 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
457 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
458 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 459 V A L U E S
460 ( r o u n d (?) , @ i d P r o j e c t , @idRFC , @ q u a l i t y B e s t R F C , @ B e s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ; 461
462 463 464
465 I N S E R T I N T O ‘ F _ P r o j e c t _ M e t r i c ‘
466 ( ‘ p e r c e n t i l _ v a l u e ‘ , ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ M e t r i c _ i d M e t r i c ‘ , ‘ D _ Q u a l i t y _ i d Q u a l i t y ‘ ,
467 ‘ D _ C o n f i g u r a t i o n _ i d C o n f i g u r a t i o n ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e
‘) 468 V A L U E S
469 ( r o u n d (?) , @ i d P r o j e c t , @idRFC , @ q u a l i t y W o r s t R F C , @ W o r s t _ C o n f i g u r a t i o n ,
@ i d R e l e a s e , @ i d T i m e ) ;
Código-Fonte 1 – Script SQL de Avaliação dos Valores Percentis das Métricas de Código-Fonte
Na terceira transformação, como se mostra na Figura33, foram cobertos os proces-sos de negócio de avaliar os cenários de limpeza de código-fonte em cada classe do Projeto em uma determinada release e o cálculo da Taxa de Aproveitamento de Oportunidades de Melhoria de Código-Fonte. Para tal, foram obtidos os valores cada métrica para cada classe utilizando o componente JSON Input. Após a coleta das métricas, foram inseridas, utilizando o componente Combination Lookup a fim de evitar duplicações ao longo das releases, as classes do projeto.
Figura 33 – Terceira Transformação realizada no Kettle
Por fim, foram identificados os Cenários de Limpeza de Código-Fonte com auxílio dos metadados utilizando o componente Execute SQL Script. Ainda neste componente, foi calculada a Taxa de Aproveitamento de Oportunidades de Melhoria de Código-Fonte a partir a soma de todos cenários de limpeza identificados em uma determinada release e a soma de todas as classes. O código-fonte, que foi colocado no componente Execute SQL Script é descrito no Código-Fonte 2, onde cada ? foi substituído por uma variável dentro da Transformation.
1
2 SET @ r e l e a s e _ n u m b e r = (S E L E C T s u b s t r i n g _ i n d e x (’ ? ’,’ . ’,1) ) ; 3
4 SET @ i d R e l e a s e = (S E L E C T max( i d R e l e a s e ) f r o m D _ R e l e a s e ) ; 5
6 SET @ P r o j e c t _ L a n g u a g e = (S E L E C T p r o j e c t _ l a n g u a g e f r o m D _ P r o j e c t w h e r e i d P r o j e c t = @ i d P r o j e c t ) ;
7
8 SET @ i d P r o j e c t = (S E L E C T max( i d P r o j e c t ) f r o m D _ P r o j e c t ) ; 9
10
11 SET @ i d A C C M = (S E L E C T i d M e t r i c R a n g e F R O M M e t a _ M e t r i c _ R a n g e s 12 w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
13 and m e t r i c _ n a m e =’ A C C M ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
14
15 SET @ i d A M L O C = (S E L E C T i d M e t r i c R a n g e F R O M M e t a _ M e t r i c _ R a n g e s 16 w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
17 and m e t r i c _ n a m e =’ A M L O C ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
18
19 SET @ i d A N P M = (S E L E C T i d M e t r i c R a n g e F R O M M e t a _ M e t r i c _ R a n g e s 20 w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
21 and m e t r i c _ n a m e =’ A N P M ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
22
23 SET @ i d C B O = (S E L E C T i d M e t r i c R a n g e F R O M M e t a _ M e t r i c _ R a n g e s 24 w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
25 and m e t r i c _ n a m e =’ CBO ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
26
27 SET @ i d L C O M 4 = (S E L E C T i d M e t r i c R a n g e F R O M M e t a _ M e t r i c _ R a n g e s 28 w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
29 and m e t r i c _ n a m e =’ L C O M 4 ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
30
31 SET @ i d N P A = (S E L E C T i d M e t r i c R a n g e F R O M M e t a _ M e t r i c _ R a n g e s 32 w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
33 and m e t r i c _ n a m e =’ NPA ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
34
35 SET @ i d N O C = (S E L E C T i d M e t r i c R a n g e F R O M M e t a _ M e t r i c _ R a n g e s 36 w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
37 and m e t r i c _ n a m e =’ NOC ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
38 39
40 SET @ i d R F C = (S E L E C T i d M e t r i c R a n g e F R O M M e t a _ M e t r i c _ R a n g e s 41 w h e r e l a n g u a g e _ n a m e = @ P r o j e c t _ L a n g u a g e
42 and m e t r i c _ n a m e =’ RFC ’ and ? <= max AND ? >= min and c o n f i g u r a t i o n _ n a m e l i k e ’ % O p e n J D K 8 M e t r i c s % ’) ;
43 44 45 46
47 SET @ i d C l a s s e P o u c o C o e s a = (S E L E C T ‘ M e t a _ S c e n a r i o ‘. ‘ i d M e t a _ S c e n a r i o ‘ 48 F R O M ‘ M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o ‘ I N N E R J O I N M e t a _ S c e n a r i o ON M e t a _ S c e n a r i o . i d M e t a _ S c e n a r i o = M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o .
M e t a _ S c e n a r i o _ i d M e t a _ S c e n a r i o w h e r e
49 M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o . M e t a _ M e t r i c _ R a n g e s _ i d M e t r i c R a n g e 1 =
@ i d L C O M 4
50 and M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o . M e t a _ M e t r i c _ R a n g e s _ i d M e t r i c R a n g e 2
= @ i d R F C ) ; 51
52 53 54
55 SET @ i d I n t e r f a c e M e t o d o s = (S E L E C T ‘ M e t a _ S c e n a r i o ‘. ‘ i d M e t a _ S c e n a r i o ‘ 56 F R O M ‘ M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o ‘ I N N E R J O I N M e t a _ S c e n a r i o ON M e t a _ S c e n a r i o . i d M e t a _ S c e n a r i o = M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o . M e t a _ S c e n a r i o _ i d M e t a _ S c e n a r i o w h e r e
57 M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o . M e t a _ M e t r i c _ R a n g e s _ i d M e t r i c R a n g e 1 =
@ i d A N P M ) ; 58
59 60 61
62 SET @ i d C l a s s e F i l h o s = (S E L E C T ‘ M e t a _ S c e n a r i o ‘. ‘ i d M e t a _ S c e n a r i o ‘ 63 F R O M ‘ M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o ‘ I N N E R J O I N M e t a _ S c e n a r i o ON
M e t a _ S c e n a r i o . i d M e t a _ S c e n a r i o = M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o . M e t a _ S c e n a r i o _ i d M e t a _ S c e n a r i o w h e r e
64 M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o . M e t a _ M e t r i c _ R a n g e s _ i d M e t r i c R a n g e 1 =
@ i d N O C ) ; 65
66 67
68 SET @ i d C l a s s e G r a n d e = (S E L E C T ‘ M e t a _ S c e n a r i o ‘. ‘ i d M e t a _ S c e n a r i o ‘ 69 F R O M ‘ M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o ‘ I N N E R J O I N M e t a _ S c e n a r i o ON
M e t a _ S c e n a r i o . i d M e t a _ S c e n a r i o = M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o . M e t a _ S c e n a r i o _ i d M e t a _ S c e n a r i o w h e r e
70 M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o . M e t a _ M e t r i c _ R a n g e s _ i d M e t r i c R a n g e 1 =
@ i d A C C M
71 and M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o . M e t a _ M e t r i c _ R a n g e s _ i d M e t r i c R a n g e 2 =
@ i d A M L O C ) ; 72
73 74
75 SET @ i d C l a s s e E x p o s t a = (S E L E C T ‘ M e t a _ S c e n a r i o ‘. ‘ i d M e t a _ S c e n a r i o ‘ 76 F R O M ‘ M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o ‘ I N N E R J O I N M e t a _ S c e n a r i o ON
M e t a _ S c e n a r i o . i d M e t a _ S c e n a r i o = M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o . M e t a _ S c e n a r i o _ i d M e t a _ S c e n a r i o w h e r e
77 M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o . M e t a _ M e t r i c _ R a n g e s _ i d M e t r i c R a n g e 1 =
@ i d N P A ) ; 78
79
80
81 SET @ i d C o m p l e x i d a d e E s t r u t u r a l = (S E L E C T ‘ M e t a _ S c e n a r i o ‘. ‘ i d M e t a _ S c e n a r i o
‘
82 F R O M ‘ M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o ‘ I N N E R J O I N M e t a _ S c e n a r i o ON M e t a _ S c e n a r i o . i d M e t a _ S c e n a r i o = M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o . M e t a _ S c e n a r i o _ i d M e t a _ S c e n a r i o w h e r e
83 M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o . M e t a _ M e t r i c _ R a n g e s _ i d M e t r i c R a n g e 1 =
@ i d C B O
84 and M e t a _ M e t r i c _ R a n g e s _ M e t a _ S c e n a r i o . M e t a _ M e t r i c _ R a n g e s _ i d M e t r i c R a n g e 2
= @ i d L C O M 4 ) ; 85
86 87
88 D R O P T A B L E IF E X I S T S T e m p o r a r y _ F _ S c e n a r i o _ C l a s s ;
89 C R E A T E T e m p o r a r y T A B L E ‘ s o u r c e _ i n f o ‘. ‘ T e m p o r a r y _ F _ S c e n a r i o _ C l a s s ‘ ( 90 ‘ i d S c e n a r i o F a c t ‘ INT NOT N U L L A U T O _ I N C R E M E N T ,
91 ‘ q u a n t i t y _ S c e n a r i o ‘ INT NULL,
92 ‘ D _ S c e n a r i o _ C l e a n _ C o d e _ i d S c e n a r i o ‘ INT NULL, 93 ‘ D _ P r o j e c t _ i d P r o j e c t ‘ INT NULL,
94 ‘ D _ R e l e a s e _ i d R e l e a s e ‘ INT NULL, 95 ‘ D _ C l a s s _ i d C l a s s ‘ INT NULL, 96 P R I M A R Y KEY ( ‘ i d S c e n a r i o F a c t ‘) ) 97 E N G I N E = I n n o D B ;
98 99 100
101 I N S E R T I N T O ‘ s o u r c e _ i n f o ‘. ‘ T e m p o r a r y _ F _ S c e n a r i o _ C l a s s ‘ 102 ( ‘ q u a n t i t y _ S c e n a r i o ‘ , ‘ D _ S c e n a r i o _ C l e a n _ C o d e _ i d S c e n a r i o ‘ , 103 ‘ D _ P r o j e c t _ i d P r o j e c t ‘ ,
104 ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , 105 ‘ D _ C l a s s _ i d C l a s s ‘) 106 V A L U E S
107 (1 , @ i d C l a s s e P o u c o C o e s a , @ i d P r o j e c t , @ i d R e l e a s e , ?) ; 108
109 110
111 I N S E R T I N T O ‘ s o u r c e _ i n f o ‘. ‘ T e m p o r a r y _ F _ S c e n a r i o _ C l a s s ‘ 112 ( ‘ q u a n t i t y _ S c e n a r i o ‘ , ‘ D _ S c e n a r i o _ C l e a n _ C o d e _ i d S c e n a r i o ‘ , 113 ‘ D _ P r o j e c t _ i d P r o j e c t ‘ ,
114 ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , 115 ‘ D _ C l a s s _ i d C l a s s ‘) 116 V A L U E S
117 (1 , @ i d I n t e r f a c e M e t o d o s , @ i d P r o j e c t , @ i d R e l e a s e , ?) ; 118
119 120
121 I N S E R T I N T O ‘ s o u r c e _ i n f o ‘. ‘ T e m p o r a r y _ F _ S c e n a r i o _ C l a s s ‘
122 ( ‘ q u a n t i t y _ S c e n a r i o ‘ , ‘ D _ S c e n a r i o _ C l e a n _ C o d e _ i d S c e n a r i o ‘ , 123 ‘ D _ P r o j e c t _ i d P r o j e c t ‘ ,
124 ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , 125 ‘ D _ C l a s s _ i d C l a s s ‘) 126 V A L U E S
127 (1 , @ i d C l a s s e F i l h o s , @ i d P r o j e c t , @ i d R e l e a s e , ?) ; 128
129 130
131 I N S E R T I N T O ‘ s o u r c e _ i n f o ‘. ‘ T e m p o r a r y _ F _ S c e n a r i o _ C l a s s ‘ 132 ( ‘ q u a n t i t y _ S c e n a r i o ‘ , ‘ D _ S c e n a r i o _ C l e a n _ C o d e _ i d S c e n a r i o ‘ , 133 ‘ D _ P r o j e c t _ i d P r o j e c t ‘ ,
134 ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , 135 ‘ D _ C l a s s _ i d C l a s s ‘) 136 V A L U E S
137 (1 , @ i d C l a s s e G r a n d e , @ i d P r o j e c t , @ i d R e l e a s e , ?) ; 138
139 140
141 I N S E R T I N T O ‘ s o u r c e _ i n f o ‘. ‘ T e m p o r a r y _ F _ S c e n a r i o _ C l a s s ‘ 142 ( ‘ q u a n t i t y _ S c e n a r i o ‘ , ‘ D _ S c e n a r i o _ C l e a n _ C o d e _ i d S c e n a r i o ‘ , 143 ‘ D _ P r o j e c t _ i d P r o j e c t ‘ ,
144 ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , 145 ‘ D _ C l a s s _ i d C l a s s ‘) 146 V A L U E S
147 (1 , @ i d C l a s s e E x p o s t a , @ i d P r o j e c t , @ i d R e l e a s e , ?) ; 148
149
150 I N S E R T I N T O ‘ s o u r c e _ i n f o ‘. ‘ T e m p o r a r y _ F _ S c e n a r i o _ C l a s s ‘ 151 ( ‘ q u a n t i t y _ S c e n a r i o ‘ , ‘ D _ S c e n a r i o _ C l e a n _ C o d e _ i d S c e n a r i o ‘ , 152 ‘ D _ P r o j e c t _ i d P r o j e c t ‘ ,
153 ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , 154 ‘ D _ C l a s s _ i d C l a s s ‘) 155 V A L U E S
156 (1 , @ i d C o m p l e x i d a d e E s t r u t u r a l , @ i d P r o j e c t , @ i d R e l e a s e , ?) ; 157
158 159
160 I N S E R T I N T O F _ S c e n a r i o _ C l a s s ( ‘ F _ S c e n a r i o _ C l a s s ‘. ‘ q u a n t i t y _ S c e n a r i o ‘ , ‘ F _ S c e n a r i o _ C l a s s ‘. ‘ D _ S c e n a r i o _ C l e a n _ C o d e _ i d S c e n a r i o ‘ ,
161 ‘ F _ S c e n a r i o _ C l a s s ‘. ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , 162 ‘ F _ S c e n a r i o _ C l a s s ‘. ‘ D _ R e l e a s e _ i d R e l e a s e ‘ ,
163 ‘ F _ S c e n a r i o _ C l a s s ‘. ‘ D _ C l a s s _ i d C l a s s ‘) SELECT‘ T e m p o r a r y _ F _ S c e n a r i o _ C l a s s
‘. ‘ q u a n t i t y _ S c e n a r i o ‘ , ‘ T e m p o r a r y _ F _ S c e n a r i o _ C l a s s ‘. ‘ D _ S c e n a r i o _ C l e a n _ C o d e _ i d S c e n a r i o ‘ ,
164 ‘ T e m p o r a r y _ F _ S c e n a r i o _ C l a s s ‘. ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , 165 ‘ T e m p o r a r y _ F _ S c e n a r i o _ C l a s s ‘. ‘ D _ R e l e a s e _ i d R e l e a s e ‘ ,
166 ‘ T e m p o r a r y _ F _ S c e n a r i o _ C l a s s ‘. ‘ D _ C l a s s _ i d C l a s s ‘ F R O M
T e m p o r a r y _ F _ S c e n a r i o _ C l a s s w h e r e T e m p o r a r y _ F _ S c e n a r i o _ C l a s s . D _ S c e n a r i o _ C l e a n _ C o d e _ i d S c e n a r i o is not n u l l;
167
168 SET @ t o t a l _ s c e n a r i o s = (S E L E C T C O U N T(*)F R O M s o u r c e _ i n f o . F _ S c e n a r i o _ C l a s s w h e r e D _ R e l e a s e _ i d R e l e a s e = @ i d R e l e a s e ) ;
169
170 SET @ r a t e = ( @ t o t a l _ s c e n a r i o s /?) ; 171
172 D R O P T A B L E IF E X I S T S ‘ T e m p o r a r y _ F _ R a t e _ S c e n a r i o ‘;
173 C R E A T E T e m p o r a r y T A B L E ‘ T e m p o r a r y _ F _ R a t e _ S c e n a r i o ‘ ( 174 ‘ i d R a t e S c e n a r i o ‘ int( 1 1 ) NOT N U L L A U T O _ I N C R E M E N T , 175 ‘ R a t e S c e n a r i o ‘ d o u b l e D E F A U L T NULL,
176 ‘ Q u a n t i y _ S c e n a r i o s ‘ d o u b l e D E F A U L T NULL, 177 ‘ n u m b e r O f C l a s s e s ‘ int( 1 1 ) D E F A U L T NULL, 178 ‘ D _ P r o j e c t _ i d P r o j e c t ‘ int( 1 1 ) NOT NULL, 179 ‘ D _ R e l e a s e _ i d R e l e a s e ‘ int( 1 1 ) NOT NULL, 180 P R I M A R Y KEY ( ‘ i d R a t e S c e n a r i o ‘) )
181 E N G I N E = I n n o D B D E F A U L T C H A R S E T = u t f 8 ; 182
183 I N S E R T I N T O ‘ s o u r c e _ i n f o ‘. ‘ T e m p o r a r y _ F _ R a t e _ S c e n a r i o ‘ 184 ( ‘ R a t e S c e n a r i o ‘ , ‘ Q u a n t i y _ S c e n a r i o s ‘ , ‘ n u m b e r O f C l a s s e s ‘ , 185 ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘)
186 V A L U E S
187 ( @rate , @ t o t a l _ s c e n a r i o s ,? , @ i d P r o j e c t , @ i d R e l e a s e ) ; 188
189 SET @ q u a n t i y _ V i o l a t i o n = (S E L E C T C O U N T(*)F R O M s o u r c e _ i n f o . F _ P r o j e c t _ V i o l a t i o n w h e r e D _ R e l e a s e _ i d R e l e a s e = @ i d R e l e a s e ) ;
190 SET @ q u a n t i y _ B u g = (S E L E C T C O U N T(*)F R O M s o u r c e _ i n f o . F _ P r o j e c t _ B u g w h e r e D _ R e l e a s e _ i d R e l e a s e = @ i d R e l e a s e ) ;
191 192
193 R E P L A C E I N T O ‘ s o u r c e _ i n f o ‘. ‘ F _ R a t e _ S c e n a r i o ‘
194 SET ‘ R a t e S c e n a r i o ‘ = @rate , ‘ n u m b e r O f C l a s s e s ‘= ? , ‘ Q u a n t i y _ S c e n a r i o s ‘ =
@ t o t a l _ s c e n a r i o s ,
195 ‘ D _ R e l e a s e _ i d R e l e a s e ‘ = @ i d R e l e a s e , ‘ D _ P r o j e c t _ i d P r o j e c t ‘= @ i d P r o j e c t , ‘ Q u a n t i y _ V i o l a t i o n s ‘ = @ q u a n t i y _ V i o l a t i o n , ‘ Q u a n t i y _ B u g s ‘ =
@ q u a n t i y _ B u g ;
Código-Fonte 2 – Script SQL de Identificação de Cenários de limpeza de Código-Fonte e Cálculo da Taxa de Aproveitamento de Oportunidades de Melhoria de Código-Fonte
Na quarta transformação, como se mostra na Figura 34, foram cobertos os pro-cessos de negócio para avaliar as violações do código-fonte em cada classe do Projeto em uma determinada release. Para tal, foram obtidos os valores de cada violação para cada classe utilizando o componente JSON Input. Após a coleta das violações, foram inseridas,
utilizando o componente Combination Lookup a fim de evitar duplicações ao longo das releases, as classes do projeto.
Figura 34 – Quarta Transformação realizada no Kettle
Em seguida, foram identificados as violações do Código-Fonte e suas características utilizando o componente Execute SQL Script.O código-fonte, que foi colocado no compo-nente Execute SQL Script é descrito no Código-Fonte 3, onde cada ? foi substituído por uma variável dentro da Transformation.
1
2 SET @ r e l e a s e _ n u m b e r = (S E L E C T s u b s t r i n g _ i n d e x (’ ? ’,’ . ’,1) ) ; 3
4 SET @ i d P r o j e c t = (S E L E C T max( i d P r o j e c t ) f r o m D _ P r o j e c t ) ; 5
6 SET @ i d T i m e = (S E L E C T max( i d T i m e ) f r o m D _ T i m e ) ; 7
8 SET @ i d R e l e a s e = (S E L E C T max( i d R e l e a s e ) f r o m D _ R e l e a s e ) ; 9
10 SET @ P r o j e c t _ L a n g u a g e = (S E L E C T p r o j e c t _ l a n g u a g e f r o m D _ P r o j e c t w h e r e i d P r o j e c t = @ i d P r o j e c t ) ;
11
12 SET @ i d R u l e s = (S E L E C T i d R u l e s F R O M D _ R u l e s w h e r e r u l e _ n a m e =’ ? ’) ; 13
14 SET @ i d S e v e r i t e = ( C A S E
15 W H E N ’ ? ’ IN (’ A b s t r a c t N a m i n g ’, ’ A t L e a s t O n e C o n s t r u c t o r ’, ’ U n n e c e s s a r y C a s e C h a n g e ’) T H E N ’ 1 ’
16 W H E N ’ ? ’ IN (’ A t L e a s t O n e C o n s t r u c t o r ’, ’
A v o i d T h r o w i n g R a w E x c e p t i o n T y p e s ’, ’ U s e E q u a l s T o C o m p a r e S t r i n g s ’) T H E N ’ 2 ’
17 W H E N ’ ? ’ IN (’ A v o i d B r a n c h i n g S t a t e m e n t A s L a s t I n L o o p ’, ’
A v o i d C a t c h i n g G e n e r i c E x c e p t i o n ’, ’ A v o i d D e e p l y N e s t e d I f S t m t s ’, ’ A v o i d D u p l i c a t e L i t e r a l s ’, ’ A v o i d F i e l d N a m e M a t c h i n g M e t h o d N a m e ’, ’ A v o i d F i e l d N a m e M a t c h i n g T y p e N a m e ’, ’ A v o i d F i n a l L o c a l V a r i a b l e ’, ’ A v o i d I n s t a n t i a t i n g O b j e c t s I n L o o p s ’, ’ A v o i d L i t e r a l s I n I f C o n d i t i o n ’, ’ A v o i d R e a s s i g n i n g P a r a m e t e r s ’, ’ A v o i d T h r o w i n g R a w E x c e p t i o n T y p e s ’, ’ B e a n M e m b e r s S h o u l d S e r i a l i z e ’, ’ B i g I n t e g e r I n s t a n t i a t i o n ’, ’
B o o l e a n G e t M e t h o d N a m e ’, ’
C l a s s W i t h O n l y P r i v a t e C o n s t r u c t o r s S h o u l d B e F i n a l ’, ’ C o l l a p s i b l e I f S t a t e m e n t s ’, ’ C o n f u s i n g T e r n a r y ’, ’
C o n s e c u t i v e A p p e n d s S h o u l d R e u s e ’, ’ C o n s e c u t i v e L i t e r a l A p p e n d s ’, ’
C y c l o m a t i c C o m p l e x i t y ’, ’ D a t a f l o w A n o m a l y A n a l y s i s ’, ’ D e f a u l t P a c k a g e ’ , ’ E m p t y C a t c h B l o c k ’, ’ E m p t y I f S t m t ’, ’ E x c e s s i v e C l a s s L e n g t h ’, ’ E x c e s s i v e M e t h o d L e n g t h ’, ’ E x c e s s i v e P a r a m e t e r L i s t ’, ’
E x c e s s i v e P u b l i c C o u n t ’, ’ F i e l d D e c l a r a t i o n s S h o u l d B e A t S t a r t O f C l a s s ’,
’ F i n a l F i e l d C o u l d B e S t a t i c ’, ’ G o d C l a s s ’, ’ I f S t m t s M u s t U s e B r a c e s ’, ’ I m m u t a b l e F i e l d ’, ’ I n e f f i c i e n t S t r i n g B u f f e r i n g ’, ’
I n s u f f i c i e n t S t r i n g B u f f e r D e c l a r a t i o n ’, ’ I n t e g e r I n s t a n t i a t i o n ’, ’ J U n i t 4 T e s t S h o u l d U s e T e s t A n n o t a t i o n ’, ’ L o c a l V a r i a b l e C o u l d B e F i n a l ’, ’ L o n g I n s t a n t i a t i o n ’, ’ L o n g V a r i a b l e ’, ’ M e t h o d A r g u m e n t C o u l d B e F i n a l ’,
’ M e t h o d N a m i n g C o n v e n t i o n s ’, ’ M o d i f i e d C y c l o m a t i c C o m p l e x i t y ’, ’ N c s s M e t h o d C o u n t ’, ’ N P a t h C o m p l e x i t y ’, ’ N u l l A s s i g n m e n t ’, ’
O n e D e c l a r a t i o n P e r L i n e ’, ’ O n l y O n e R e t u r n ’, ’ A v o i d R e t h r o w i n g E x c e p t i o n
’, ’ C a l l S u p e r I n C o n s t r u c t o r ’, ’ F o r L o o p s M u s t U s e B r a c e s ’, ’ S i m p l i f y B o o l e a n E x p r e s s i o n s ’, ’ U s e C o n c u r r e n t H a s h M a p ’, ’ S i m p l i f y B o o l e a n E x p r e s s i o n s ’) T H E N ’ 3 ’
18 W H E N ’ ? ’ IN (’ P o s i t i o n L i t e r a l s F i r s t I n C o m p a r i s o n s ’, ’ P r e m a t u r e D e c l a r a t i o n ’, ’ P r e s e r v e S t a c k T r a c e ’, ’
R e d u n d a n t F i e l d I n i t i a l i z e r ’, ’ S h o r t C l a s s N a m e ’, ’ S h o r t I n s t a n t i a t i o n ’ , ’ S h o r t V a r i a b l e ’) T H E N ’ 4 ’
19 W H E N ’ ? ’ IN (’ S i g n a t u r e D e c l a r e T h r o w s E x c e p t i o n ’, ’
S i m p l e D a t e F o r m a t N e e d s L o c a l e ’, ’ S i m p l i f y B o o l e a n R e t u r n s ’, ’ S i n g u l a r F i e l d ’, ’ S t d C y c l o m a t i c C o m p l e x i t y ’, ’ T o o M a n y F i e l d s ’, ’ T o o M a n y M e t h o d s ’, ’ U n c o m m e n t e d E m p t y C o n s t r u c t o r ’, ’
U n c o m m e n t e d E m p t y M e t h o d ’, ’ U n n e c e s s a r y C o n s t r u c t o r ’, ’
U n n e c e s s a r y F u l l y Q u a l i f i e d N a m e ’, ’ U n n e c e s s a r y L o c a l B e f o r e R e t u r n ’, ’ U n n e c e s s a r y P a r e n t h e s e s ’, ’ U n u s e d F o r m a l P a r a m e t e r ’, ’ U n u s e d I m p o r t s ’,
’ U n u s e d L o c a l V a r i a b l e ’, ’ U n u s e d M o d i f i e r ’, ’ U n u s e d P r i v a t e F i e l d ’, ’ U n u s e d P r i v a t e M e t h o d ’, ’ U s e C o l l e c t i o n I s E m p t y ’, ’ U s e l e s s P a r e n t h e s e s ’ , ’ U s e l e s s S t r i n g V a l u e O f ’, ’ U s e L o c a l e W i t h C a s e C o n v e r s i o n s ’, ’
U s e O b j e c t F o r C l e a r e r A P I ’, ’ U s e S t r i n g B u f f e r F o r S t r i n g A p p e n d s ’, ’ U s e V a r a r g s ’, ’ V a r i a b l e N a m i n g C o n v e n t i o n s ’, ’ E m p t y S t a t e m e n t N o t I n L o o p
’, ’ L o g i c I n v e r s i o n ’) T H E N ’ 5 ’
20 E L S E ’ 0 ’
21 END) ; 22
23
24 I N S E R T I N T O ‘ F _ P r o j e c t _ V i o l a t i o n ‘
25 ( ‘ q u a n t i y _ V i o l a t i o n ‘ , ‘ D _ C l a s s _ V i o l a t i o n _ i d C l a s s _ v i o l a t i o n ‘ , ‘ D _ C l a s s _ V i o l a t i o n _ i d R u l e s ‘ , ‘ D _ C l a s s _ V i o l a t i o n _ i d S e v e r i t e ‘ , 26 ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e ‘) 27 V A L U E S
28 (1 , ? , @ i d R u l e s , @ i d S e v e r i t e , @ i d P r o j e c t , @ i d R e l e a s e , @ i d T i m e ) ;
Código-Fonte 3 – Script SQL de Identificação das violações de Código-Fonte Na quinta transformação, como se mostra na Figura 35, foram cobertos os pro-cessos de negócio para avaliar bugs do código-fonte em cada classe do Projeto em uma
determinada release. Para tal, foram obtidos os valores de cada bug para cada classe uti-lizando o componente Text file Input. Após a coleta dos bugs foi utilizado o componente Filter rows para desprezar as linhas em brancos do arquivo CSV, o componente If field value is null para eliminar os os valores nulos dos campos start e end e o componete Concat Fields para juntar os campos start e end em um único campo chamado line. Em seguida, foram inseridas, utilizando o componente Combination Lookup a fim de evitar duplicações ao longo das releases, as classes do projeto.
Figura 35 – Quinta Transformação realizada no Kettle
Por fim, foram identificadosbugs do Código-Fonte e suas características utilizando o componenteExecute SQL Script.O código-fonte, que foi colocado no componenteExecute SQL Script é descrito no Código-Fonte 4, onde cada ? foi substituído por uma variável dentro da Transformation.
1
2 SET @ r e l e a s e _ n u m b e r = (S E L E C T s u b s t r i n g _ i n d e x (’ ? ’,’ . ’,1) ) ; 3
4 SET @ i d P r o j e c t = (S E L E C T max( i d P r o j e c t ) f r o m D _ P r o j e c t ) ; 5
6 SET @ i d T i m e = (S E L E C T max( i d T i m e ) f r o m D _ T i m e ) ; 7
8 SET @ i d R e l e a s e = (S E L E C T max( i d R e l e a s e ) f r o m D _ R e l e a s e ) ; 9
10 SET @ P r o j e c t _ L a n g u a g e = (S E L E C T p r o j e c t _ l a n g u a g e f r o m D _ P r o j e c t w h e r e i d P r o j e c t = @ i d P r o j e c t ) ;
11 12
13 SET @ i d T y p e = (S E L E C T i d T y p e f r o m D _ T y p e w h e r e t y p e _ n a m e = ’ ? ’) ; 14
15
16 SET @ i d P r i o r i t y = ( C A S E
17 W H E N ’ ? ’ IN (’ R p C _ R E P E A T E D _ C O N D I T I O N A L _ T E S T ’, ’ / E S _ C O M P A R I N G _ P A R A M E T E R _ S T R I N G _ W I T H _ E Q ’, ’
E S _ C O M P A R I N G _ P A R A M E T E R _ S T R I N G _ W I T H _ E Q ’, ’ /
R C _ R E F _ C O M P A R I S O N ’, ’ R C _ R E F _ C O M P A R I S O N ’, ’ D M _ N U M B E R _ C T O R ’, ’ N P _ N U L L _ O N _ S O M E _ P A T H ’, ’ R C N _ R E D U N D A N T _ N U L L C H E C K _ O F _ N O N N U L L _ V A L U E
’, ’ R C N _ R E D U N D A N T _ N U L L C H E C K _ O F _ N U L L _ V A L U E ’) T H E N ’ 1 ’
18 W H E N ’ ? ’ IN (’ B X _ U N B O X I N G _ I M M E D I A T E L Y _ R E B O X E D ’, ’ W M I _ W R O N G _ M A P _ I T E R A T O R ’, ’
R C N _ R E D U N D A N T _ N U L L C H E C K _ W O U L D _ H A V E _ B E E N _ A _ N P E ’, ’ / E C _ U N R E L A T E D _ T Y P E S ’, ’ / S E _ B A D _ F I E L D ’, ’
D B _ D U P L I C A T E _ B R A N C H E S ’, ’ D L S _ D E A D _ L O C A L _ S T O R E ’, ’ D M _ C O N V E R T _ C A S E
’, ’ E C _ U N R E L A T E D _ T Y P E S ’, ’ E I _ E X P O S E _ R E P ’, ’ E I _ E X P O S E _ R E P 2 ’, ’ N M _ F I E L D _ N A M I N G _ C O N V E N T I O N ’, ’ N P _ L O A D _ O F _ K N O W N _ N U L L _ V A L U E ’, ’ R V _ R E T U R N _ V A L U E _ I G N O R E D _ N O _ S I D E _ E F F E C T ’, ’ S E _ B A D _ F I E L D ’, ’ S S _ S H O U L D _ B E _ S T A T I C ’, ’ U C F _ U S E L E S S _ C O N T R O L _ F L O W ’) T H E N ’ 2 ’ 19 W H E N ’ ? ’ IN (’ E S _ C O M P A R I N G _ S T R I N G S _ W I T H _ E Q ’, ’ /
E S _ C O M P A R I N G _ S T R I N G S _ W I T H _ E Q ’, ’ U P M _ U N C A L L E D _ P R I V A T E _ M E T H O D ’, ’ D E _ M I G H T _ I G N O R E ’, ’ S I C _ I N N E R _ S H O U L D _ B E _ S T A T I C _ A N O N ’, ’
H E _ E Q U A L S _ U S E _ H A S H C O D E ’, ’ M E _ E N U M _ F I E L D _ S E T T E R ’, ’ R E C _ C A T C H _ E X C E P T I O N ’) T H E N ’ 3 ’
20 E L S E ’ 0 ’
21 END) ; 22
23 I N S E R T I N T O ‘ F _ P r o j e c t _ B u g ‘
24 ( ‘ q u a n t i y _ B u g ‘ , ‘ D _ C l a s s _ B u g _ i d C l a s s _ B u g ‘ , ‘ D _ C l a s s _ B u g _ i d T y p e ‘ , ‘ D _ C l a s s _ B u g _ i d P r i o r i t y ‘ ,
25 ‘ D _ P r o j e c t _ i d P r o j e c t ‘ , ‘ D _ R e l e a s e _ i d R e l e a s e ‘ , ‘ D _ T i m e _ i d T i m e ‘) 26 V A L U E S
27 (1 , ? , @idType , @ i d P r i o r i t y , @ i d P r o j e c t , @ i d R e l e a s e , @ i d T i m e ) ;
Código-Fonte 4 – Script SQL de Identificação debugs no Código-Fonte