sel@kit · 2014. 9. 5. · pmd or checkstyle (static code analyzer) crm114 learner tokenizer...

17
KYOTO INSTITUTE OF TECHNOLOGY SEL@KIT

Upload: others

Post on 12-Aug-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SEL@KIT · 2014. 9. 5. · PMD or CheckStyle (static code analyzer) CRM114 Learner Tokenizer warning messages tokens unknown Tokenizer PMD or CheckStyle (static code analyzer) CRM114

KYOTO INSTITUTE OF TECHNOLOGY

SEL@KIT

Page 2: SEL@KIT · 2014. 9. 5. · PMD or CheckStyle (static code analyzer) CRM114 Learner Tokenizer warning messages tokens unknown Tokenizer PMD or CheckStyle (static code analyzer) CRM114

KYOTO INSTITUTE OF TECHNOLOGY

A Fault-Prone Module Detection Using a Spam Filter

Photo by Osamu Mizuno

KYOTO INSTITUTE OF TECHNOLOGY

Page 3: SEL@KIT · 2014. 9. 5. · PMD or CheckStyle (static code analyzer) CRM114 Learner Tokenizer warning messages tokens unknown Tokenizer PMD or CheckStyle (static code analyzer) CRM114

KYOTO INSTITUTE OF TECHNOLOGY

Fault-prone Filtering

✦ Fault-prone module detection using a spam filtering approach[1][2]✦ Uses frequency of terms like spam e-mail filtering✦ Constructs both faulty and non-faulty corpuses from past

modules✦ Classifies an unknown module using two corpuses

[1] O. Mizuno and T. Kikuno, "Training on Errors Experiment to Detect Fault-Prone Software Modules by Spam Filter," In The 6th joint meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE2007), pp. 405-414, September 2007. (Dubrovnik, Croatia)[2] O. Mizuno, S. Ikami, S. Nakaichi, and T. Kikuno, "Spam Filter Based Approach for Finding Fault-Prone Software Modules," In Proc. of Fourth International Workshop on Mining Software Repositories (MSR'07), p. 4, May 2007. (Minneapolis, MN, USA)

KYOTO INSTITUTE OF TECHNOLOGY

Page 4: SEL@KIT · 2014. 9. 5. · PMD or CheckStyle (static code analyzer) CRM114 Learner Tokenizer warning messages tokens unknown Tokenizer PMD or CheckStyle (static code analyzer) CRM114

KYOTO INSTITUTE OF TECHNOLOGY

How It Works (Training)

1. Training faulty and non-faulty modules using Tokenizer.

4

Each corpus holds frequency information of each word

import, java.foo.Stateful, import, java.foo.AroundInvoke, @Stateful, public, class, EmployeeBean, implements, EmployeeServiceLocal, EmployeeServiceRemote, public, EmployeeBean, public, void, doAction, ...

public, class, EmployerBean, implements, ServiceGlobal, ServiceRemote, public, EmployeeBean, public, void, didAction, ...

non-faulty

faulty

CRM114Learner

Tokenizer

tokens

faultycorpus

non-faultycorpus

Page 5: SEL@KIT · 2014. 9. 5. · PMD or CheckStyle (static code analyzer) CRM114 Learner Tokenizer warning messages tokens unknown Tokenizer PMD or CheckStyle (static code analyzer) CRM114

KYOTO INSTITUTE OF TECHNOLOGY

How It Works (Prediction)

2. Calculating probability by the Bayesian filter.

5

Fault-proneness is determined by the probability and a threshold.

public, class, public, EmployeeBean, public, void, didAction, ...

unknown TokenizerCRM114Classifier

Probability to be faulty

non-faultycorpus

faultycorpus

Page 6: SEL@KIT · 2014. 9. 5. · PMD or CheckStyle (static code analyzer) CRM114 Learner Tokenizer warning messages tokens unknown Tokenizer PMD or CheckStyle (static code analyzer) CRM114

KYOTO INSTITUTE OF TECHNOLOGY

Experiment:Result of Prediction

Eclipse(random sample)

Eclipse(random sample)

PredictedPredictedEclipse(random sample)

Eclipse(random sample) NFP FP

Actualnot

faulty 12,249 7,093Actual

faulty 2,972 16,243

Precision: 0.696 Recall: 0.845

Eclipse BIRT(all modules)Eclipse BIRT(all modules)

PredictedPredictedEclipse BIRT(all modules)Eclipse BIRT(all modules) NFP FP

Actualnot

faulty 70,349 16,011Actual

faulty 2,039 7,501

Precision: 0.319 Recall: 0.786

Page 7: SEL@KIT · 2014. 9. 5. · PMD or CheckStyle (static code analyzer) CRM114 Learner Tokenizer warning messages tokens unknown Tokenizer PMD or CheckStyle (static code analyzer) CRM114

KYOTO INSTITUTE OF TECHNOLOGY

Successive Prediction (TOE)KYOTO INSTITUTE OF TECHNOLOGY

Apply software modules to fault-prone filter in order of construction and modification.

Only misclassified modules are trained in corpuses.

The accuracy improves as the number of modules increases.

Page 8: SEL@KIT · 2014. 9. 5. · PMD or CheckStyle (static code analyzer) CRM114 Learner Tokenizer warning messages tokens unknown Tokenizer PMD or CheckStyle (static code analyzer) CRM114

KYOTO INSTITUTE OF TECHNOLOGY

Fault-proneness filtering with static code analysis

Avoid, variables, with, short, names, like, gd, Local, variable, ‘, gd, ‘, could, be, declared, finalLocal, variable, ‘, cmp, Basic,‘ , could, be, declared, final, …

Parameter , ‘, e, ‘, is, not, assigned, and, could, be, declared, final, Parameter, ,‘, isSelected, ‘, is, not, assigned, and, could, be, declared, final, …

Parameter, ,‘, isSelected, ‘, is, not, assigned, and, could, be,...

non-faulty

faulty

PMDor

CheckStyle

(static code analyzer)

CRM114Learner

Tokenizer

warning messages tokens

unknown Tokenizer

PMDor

CheckStyle

(static code analyzer)

CRM114Classifier

faultycorpus

non-faultycorpus

Probability to be faulty

Page 9: SEL@KIT · 2014. 9. 5. · PMD or CheckStyle (static code analyzer) CRM114 Learner Tokenizer warning messages tokens unknown Tokenizer PMD or CheckStyle (static code analyzer) CRM114

KYOTO INSTITUTE OF TECHNOLOGY

Result

Original with PMD

Recall rises rapidly and becomes stable earlier. But, lower precision makes overall result worse.

Page 10: SEL@KIT · 2014. 9. 5. · PMD or CheckStyle (static code analyzer) CRM114 Learner Tokenizer warning messages tokens unknown Tokenizer PMD or CheckStyle (static code analyzer) CRM114

KYOTO INSTITUTE OF TECHNOLOGY

Analysis of Identifiers

Photo by thenyswww.freeimages.com

KYOTO INSTITUTE OF TECHNOLOGY

Page 11: SEL@KIT · 2014. 9. 5. · PMD or CheckStyle (static code analyzer) CRM114 Learner Tokenizer warning messages tokens unknown Tokenizer PMD or CheckStyle (static code analyzer) CRM114

KYOTO INSTITUTE OF TECHNOLOGY

What we did

We investigated the frequency of appearance of identifiers in source code modules from the viewpoint of the length of identifiers in Eclipse and NetBeans.We modelled the relationship between the length of identifiers and the fault-proneness.

We used the random forest for the modelling.

Data used:Frequency of identifier’s occurrence for each file grouped by the length of identifier + faulty status by SZZ

Kimiaki Kawamoto and Osamu Mizuno, "Do Long Identifiers Induce Faults in Software? --- a Repository Mining Based Investigation ---," In Proc. of 22nd International Symposium on Software Reliability Engineering (ISSRE2011), Supplemental proceedings, 3-1, November 2011. (Hiroshima, Japan)

Page 12: SEL@KIT · 2014. 9. 5. · PMD or CheckStyle (static code analyzer) CRM114 Learner Tokenizer warning messages tokens unknown Tokenizer PMD or CheckStyle (static code analyzer) CRM114

KYOTO INSTITUTE OF TECHNOLOGY

Results of analysis

Lengths of 3, 4, and 7 have impact for fault-proneness.

2IEICE TRANS. ??, VOL.Exx–??, NO.xx XXXX 200x

Tokenize

Calculate length

Model buildingand prediction

Faultymodules

Non-faulty

modules Extract identifiers

Count up for each length

RandomForest

Fig. 1 A flow chart of experiments

Table 2 Evaluation of prediction (average of 10 times)

Accuracy Precision Recall F-MeasureEclipse 0.888 0.866 0.913 0.889

Netbeans 0.850 0.765 0.865 0.812

Table 3 Top 10: Mean Decrease Gini (average of 10 times)

Eclipse NetbeansRank Length Mean decrease Gini Length Mean decrease Gini

1 7 7767.47 3 7505.822 4 6501.14 4 6537.753 8 6146.32 10 6505.304 3 5643.99 7 6187.075 13 5378.26 6 6109.806 6 5073.66 11 5342.157 9 4883.39 9 5176.198 5 4664.90 8 5156.069 11 4200.25 14 4900.9510 14 4140.85 13 4653.10

module. In this study, a software module means a java classfile. To Determine faulty status of modules using the SZZalgorithm [4].

In both faulty and non-faulty modules, average lengthof identifiers is almost equal. It is thus difficult to predict thefaulty modules using the length of identifiers only. In thisstudy, we utilize the distribution of the length of identifiersfor each module.

3.2 Fault-prone prediction model

In order to find the answer to the RQ1, we built a fault-pronemodule prediction model.

Figure 1 shows a flow chart of experiments. We ex-tract source code modules for both faulty and non-faulty.For each module, we count up the number of occurrences ofidentifiers by length. Finally, we build a model to determinefaulty modules and predict using the random forest [5] of amachine learning technique from the number of occurrencesof the identifiers.

3.3 Results

Table 2 summarizes the result of prediction using evaluationmeasures such as accuracy, precision, recall, and F-measure.From Table 2, we can see that predictions are done withabout 85% accuracy in both Eclipse and Netbeans. How-ever, we can also see that the precision is relatively low in

Netbeans.Table 3 shows the ranking of mean decrease Gini for

each length of identifiers in both Eclipse and Netbeans. Themean decrease Gini is a measure to evaluate the importanceof variables used in the random forests. The higher meandecrease Gini value is, the more important variable is. FromTable 3, identifiers with shorter length have higher mean de-crease Gini values.

4. Discussion

4.1 Fault-prone prediction by length of identifiers

First, we intend to find the answer of the research questionRQ1. As shown in Table 2, the result of prediction showsthat the length of identifiers can be a measure for fault-pronemodule prediction. We can thus conclude that the answer ofRQ1 is “yes” and it is confirmed at a certain degree.

4.2 Particular length of identifiers

Next, we intend to find the answer of the research questionRQ2. From Table 3, we can see that there are length of 3, 4and 7 in top 4 of ranking of mean decrease Gini value in bothEclipse and Nebeans. We guess that these lengths (3, 4 and7) of identifiers are keys of fault-prone module prediction.We can thus conclude that the answer of RQ2 is “yes”.

5. Conclusions

In this study, we investigated the relationship between thelength of identifiers and software faults in a software mod-ule. The results showed that there is a certain relationshipbetween the length of identifier and existence of softwarefaults. We should investigate the relationship between thelength of identifiers and existence of faults in software mod-ules more precisely.

Acknowledgment

This work is partially supported by KAKENHI, Grant-in-Aid for Scientific Research(B), (23300009).

References

[1] F. Deissenboeck and M. Pizka, “Concise and consistent naming,”Software Quality Control, vol.14, pp.261–282, September 2006.

[2] S. Butler, M. Wermelinger, Y. Yu, and H. Sharp, “Relating identi-fier naming flaws and code quality: an empirical study,” Proc. of theWorking Conf. on Reverse Engineering, pp.31–35, IEEE ComputerSociety, 2009.

[3] D. Lawrie, C. Morrell, H. Feild, and D. Binkley, “What’s in a name? astudy of identifiers,” Proceedings of the 14th IEEE International Con-ference on Program Comprehension, Washington, DC, USA, pp.3–12,IEEE Computer Society, 2006.

[4] J. Sliwerski, T. Zimmermann, and A. Zeller, “When do changes in-duce fixes?,” Proceedings of the 2005 international workshop on Min-ing software repositories, New York, NY, USA, pp.1–5, ACM, 2005.

[5] L. Breiman, “Random forests,” Machine Learning, vol.45, pp.5–32,October 2001.

2IEICE TRANS. ??, VOL.Exx–??, NO.xx XXXX 200x

Tokenize

Calculate length

Model buildingand prediction

Faultymodules

Non-faulty

modules Extract identifiers

Count up for each length

RandomForest

Fig. 1 A flow chart of experiments

Table 2 Evaluation of prediction (average of 10 times)

Accuracy Precision Recall F-MeasureEclipse 0.888 0.866 0.913 0.889

Netbeans 0.850 0.765 0.865 0.812

Table 3 Top 10: Mean Decrease Gini (average of 10 times)

Eclipse NetbeansRank Length Mean decrease Gini Length Mean decrease Gini

1 7 7767.47 3 7505.822 4 6501.14 4 6537.753 8 6146.32 10 6505.304 3 5643.99 7 6187.075 13 5378.26 6 6109.806 6 5073.66 11 5342.157 9 4883.39 9 5176.198 5 4664.90 8 5156.069 11 4200.25 14 4900.9510 14 4140.85 13 4653.10

module. In this study, a software module means a java classfile. To Determine faulty status of modules using the SZZalgorithm [4].

In both faulty and non-faulty modules, average lengthof identifiers is almost equal. It is thus difficult to predict thefaulty modules using the length of identifiers only. In thisstudy, we utilize the distribution of the length of identifiersfor each module.

3.2 Fault-prone prediction model

In order to find the answer to the RQ1, we built a fault-pronemodule prediction model.

Figure 1 shows a flow chart of experiments. We ex-tract source code modules for both faulty and non-faulty.For each module, we count up the number of occurrences ofidentifiers by length. Finally, we build a model to determinefaulty modules and predict using the random forest [5] of amachine learning technique from the number of occurrencesof the identifiers.

3.3 Results

Table 2 summarizes the result of prediction using evaluationmeasures such as accuracy, precision, recall, and F-measure.From Table 2, we can see that predictions are done withabout 85% accuracy in both Eclipse and Netbeans. How-ever, we can also see that the precision is relatively low in

Netbeans.Table 3 shows the ranking of mean decrease Gini for

each length of identifiers in both Eclipse and Netbeans. Themean decrease Gini is a measure to evaluate the importanceof variables used in the random forests. The higher meandecrease Gini value is, the more important variable is. FromTable 3, identifiers with shorter length have higher mean de-crease Gini values.

4. Discussion

4.1 Fault-prone prediction by length of identifiers

First, we intend to find the answer of the research questionRQ1. As shown in Table 2, the result of prediction showsthat the length of identifiers can be a measure for fault-pronemodule prediction. We can thus conclude that the answer ofRQ1 is “yes” and it is confirmed at a certain degree.

4.2 Particular length of identifiers

Next, we intend to find the answer of the research questionRQ2. From Table 3, we can see that there are length of 3, 4and 7 in top 4 of ranking of mean decrease Gini value in bothEclipse and Nebeans. We guess that these lengths (3, 4 and7) of identifiers are keys of fault-prone module prediction.We can thus conclude that the answer of RQ2 is “yes”.

5. Conclusions

In this study, we investigated the relationship between thelength of identifiers and software faults in a software mod-ule. The results showed that there is a certain relationshipbetween the length of identifier and existence of softwarefaults. We should investigate the relationship between thelength of identifiers and existence of faults in software mod-ules more precisely.

Acknowledgment

This work is partially supported by KAKENHI, Grant-in-Aid for Scientific Research(B), (23300009).

References

[1] F. Deissenboeck and M. Pizka, “Concise and consistent naming,”Software Quality Control, vol.14, pp.261–282, September 2006.

[2] S. Butler, M. Wermelinger, Y. Yu, and H. Sharp, “Relating identi-fier naming flaws and code quality: an empirical study,” Proc. of theWorking Conf. on Reverse Engineering, pp.31–35, IEEE ComputerSociety, 2009.

[3] D. Lawrie, C. Morrell, H. Feild, and D. Binkley, “What’s in a name? astudy of identifiers,” Proceedings of the 14th IEEE International Con-ference on Program Comprehension, Washington, DC, USA, pp.3–12,IEEE Computer Society, 2006.

[4] J. Sliwerski, T. Zimmermann, and A. Zeller, “When do changes in-duce fixes?,” Proceedings of the 2005 international workshop on Min-ing software repositories, New York, NY, USA, pp.1–5, ACM, 2005.

[5] L. Breiman, “Random forests,” Machine Learning, vol.45, pp.5–32,October 2001.

Page 13: SEL@KIT · 2014. 9. 5. · PMD or CheckStyle (static code analyzer) CRM114 Learner Tokenizer warning messages tokens unknown Tokenizer PMD or CheckStyle (static code analyzer) CRM114

KYOTO INSTITUTE OF TECHNOLOGY

[FYI] The longest identifiers

In Eclipse: 237 characters, appears 26 timesWorkingDirectoryStatusHandler_Eclipse_is_not_able_to_set_the_working_directory_specified_by_the_program_being_launched_as_the_current_runtime_does_not_support_working_directories__nContinue_launch_without_setting_the_working_directory__2

In Netbeans: 210 characters, appears 76 timesgetCustomResourceOrExternalJndiResourceOrJdbcResourceOrMailResourceOrPersistenceManagerFactoryResourceOrAdminObjectResourceOrConnectorResourceOrResourceAdapterConfigOrJdbcConnectionPoolOrConnectorConnectionPool

Page 14: SEL@KIT · 2014. 9. 5. · PMD or CheckStyle (static code analyzer) CRM114 Learner Tokenizer warning messages tokens unknown Tokenizer PMD or CheckStyle (static code analyzer) CRM114

Mining code review repositoriesPhoto by Paul Barker (www.freeimages.com)

Do code review activities become more productive in Gerrit-based projects as a result of evolution?

14

Page 15: SEL@KIT · 2014. 9. 5. · PMD or CheckStyle (static code analyzer) CRM114 Learner Tokenizer warning messages tokens unknown Tokenizer PMD or CheckStyle (static code analyzer) CRM114

KYOTO INSTITUTE OF TECHNOLOGY

Data collection tool (Developed)

Integrated crawling and mining tool [1].Developed by Junwei Liang (a master course student)

[1] JunWei Liang and Osamu Mizuno, "Analyzing Involvements of Reviewers Through Mining a Code Review Repository," In Proc. of the Joint Conference of the 21th International Workshop on Software Measurement and the 6th International Conference on Software Process and Product Measurement (IWSM/MENSURA2011), pp. 126-132, November 2011. (Nara, Japan)

Page 16: SEL@KIT · 2014. 9. 5. · PMD or CheckStyle (static code analyzer) CRM114 Learner Tokenizer warning messages tokens unknown Tokenizer PMD or CheckStyle (static code analyzer) CRM114

Ratio of activities in review process

0.00

0.25

0.50

0.75

1.00

(Rietveld) Chromium

(Rietveld) GWT(Gerrit) Android

(Gerrit) Qt

Project

count

ActivityCreate

Inline Comment

LGTM/Label

Message

Ratio of Label activities increases in Gerrit-based projects.

16

Page 17: SEL@KIT · 2014. 9. 5. · PMD or CheckStyle (static code analyzer) CRM114 Learner Tokenizer warning messages tokens unknown Tokenizer PMD or CheckStyle (static code analyzer) CRM114

Discussion time and approval

✦ In Rietveld, the number of LGTM is proportional to the discussion time.

✦ In Gerrit, +2 labeled issues quickly finish discussion.

(Rietveld) Chromium (Rietveld) GWT

1e-01

1e+01

1e+03

0 1 2 3 >4 0 1 2 3 >4Number of LGTM messages

Dis

cuss

ion

time

(hou

r)

(Gerrit) Android (Gerrit) Qt

1e-01

1e+01

1e+03

-2 -1 0 +1 +2 -2 -1 0 +1 +2Max label value

Dis

cuss

ion

time

(hou

r)

NLGT Mi

L

max

i

Photo by omzn17