• Nenhum resultado encontrado

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

Documentos relacionados