Casting about in the dark: an empirical study of cast operations in Java programs

Author:

Mastrangelo Luis1,Hauswirth Matthias1,Nystrom Nathaniel1

Affiliation:

1. USI Lugano, Switzerland

Abstract

The main goal of a static type system is to prevent certain kinds of errors from happening at run time. A type system is formulated as a set of constraints that gives any expression or term in a program a well-defined type. Yet mainstream programming languages are endowed with type systems that provide the means to circumvent their constraints through casting. We want to understand how and when developers escape the static type system to use dynamic typing. We empirically study how casting is used by developers in more than seven thousand Java projects. We find that casts are widely used (8.7% of methods contain at least one cast) and that 50% of casts we inspected are not guarded locally to ensure against potential run-time errors. To help us better categorize use cases and thus understand how casts are used in practice, we identify 25 cast-usage patterns---recurrent programming idioms using casts to solve a specific issue. This knowledge can be: (a) a recommendation for current and future language designers to make informed decisions (b) a reference for tool builders, e.g., by providing more precise or new refactoring analyses, (c) a guide for researchers to test new language features, or to carry out controlled programming experiments, and (d) a guide for developers for better practices.

Funder

Schweizerischer Nationalfonds zur Förderung der Wissenschaftlichen Forschung

Publisher

Association for Computing Machinery (ACM)

Subject

Safety, Risk, Reliability and Quality,Software

Reference79 articles.

1. Mining source code repositories at massive scale using language modeling

2. Taming the wildcards

3. Sourcerer: An internet-scale software repository

4. Gavin Bierman. 2019. JEP 354: Switch Expressions. (2019). https://openjdk.java.net/jeps/354 Gavin Bierman. 2019. JEP 354: Switch Expressions. (2019). https://openjdk.java.net/jeps/354

Cited by 8 articles. 订阅此论文施引文献 订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献

1. Do names echo semantics? A large-scale study of identifiers used in C++’s named casts;Journal of Systems and Software;2023-08

2. Towards the Detection of Hidden Familial Type Correlations in Java Code;2022 IEEE 22nd International Working Conference on Source Code Analysis and Manipulation (SCAM);2022-10

3. An Empirical Study of Solidity Language Features;2021 IEEE 21st International Conference on Software Quality, Reliability and Security Companion (QRS-C);2021-12

4. Well-typed programs can go wrong: a study of typing-related bugs in JVM compilers;Proceedings of the ACM on Programming Languages;2021-10-20

5. Breaking Type-Safety in Go: An Empirical Study on the Usage of the unsafe Package;IEEE Transactions on Software Engineering;2021

同舟云学术

1.学者识别学者识别

2.学术分析学术分析

3.人才评估人才评估

"同舟云学术"是以全球学者为主线,采集、加工和组织学术论文而形成的新型学术文献查询和分析系统,可以对全球学者进行文献检索和人才价值评估。用户可以通过关注某些学科领域的顶尖人物而持续追踪该领域的学科进展和研究前沿。经过近期的数据扩容,当前同舟云学术共收录了国内外主流学术期刊6万余种,收集的期刊论文及会议论文总量共计约1.5亿篇,并以每天添加12000余篇中外论文的速度递增。我们也可以为用户提供个性化、定制化的学者数据。欢迎来电咨询!咨询电话:010-8811{复制后删除}0370

www.globalauthorid.com

TOP

Copyright © 2019-2024 北京同舟云网络信息技术有限公司
京公网安备11010802033243号  京ICP备18003416号-3