An Empirical Study of Goto in C Code from GitHub Repositories
Authors -
Meiyappan, Nagappan;
Romain, Robbes;
Yasutaka, Kamei;
Eric, Tanter;
Shane, McIntosh;
Audris, Mockus and
Ahmed, E. Hassan
Venue -
Proceedings of the 9th joint meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE 2015), Bergamo, Italy, August 30 - September 04, 2015
Related Tags -
Abstract -
It is nearly 50 years since Dijkstra argued that goto obscures
the flow of control in program execution and urged
programmers to abandon the goto statement. While past
research has shown that goto is still in use, little is known
about whether goto is used in the unrestricted manner that
Dijkstra feared, and if it is harmful enough to be a part of
a post-release bug. We, therefore, conduct a two part empirical
study - (1) qualitatively analyze a statistically representative
sample of 384 files from a population of almost
250K C programming language files collected from over 11K
GitHub repositories and find that developers use goto in C
files for error handling (80.215%) and cleaning up resources
at the end of a procedure (40.36 5%); and (2) quantitatively
analyze the commit history from the release branches
of six OSS projects and find that no goto statement was removed/modified
in the post-release phase of four of the six
projects. We conclude that developers limit themselves to
using goto appropriately in most cases, and not in an unrestricted
manner like Dijkstra feared, thus suggesting
Preprint -
PDF
BibTex -
@article{Nagappan2015,
author = {Meiyappan, Nagappan and Romain, Robbes and Yasutaka, Kamei and Eric, Tanter and Shane, McIntosh and Audris, Mockus and Ahmed, E. Hassan},
keyword = {ESE in Ultra Large Repositories},
title = {An Empirical Study of Goto in C Code from GitHub Repositories},
type = {conference},
venue = {Proceedings of the 9th joint meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE 2015), Bergamo, Italy, August 30 - September 04, 2015}
}