Total Recall? How Good Are Static Call Graphs Really? DOI
Dominik Helm, Sven Keidel, Anemone Kampkötter

и другие.

Опубликована: Сен. 11, 2024

Язык: Английский

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

Luis Mastrangelo,

Matthias Hauswirth,

Nathaniel Nystrom

и другие.

Proceedings of the ACM on Programming Languages, Год журнала: 2019, Номер 3(OOPSLA), С. 1 - 31

Опубликована: Окт. 10, 2019

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

Язык: Английский

Процитировано

12

Code search engines for the next generation DOI Creative Commons
Marcus Kessel, Colin Atkinson

Journal of Systems and Software, Год журнала: 2024, Номер 215, С. 112065 - 112065

Опубликована: Май 6, 2024

Given the abundance of software in open source repositories, code search engines are increasingly turning to "big data" technologies such as natural language processing and machine learning, deliver more useful results. However, like syntax-based approaches traditionally used analyze compare first generation engines, big data essentially static analysis processes. When dynamic properties software, run-time behavior (i.e., semantics) performance, among criteria, exclusive use algorithms has a significant negative impact on precision recall results well other key usability factors ranking quality. Therefore, address these weaknesses provide reliable usable service, next needs complement techniques with equally large-scale, based its execution observation. In this paper we describe new platform specifically developed achieve by simplifying largely automating observation) at large scale. We show how can combine dynamically observed modules improve quality

Язык: Английский

Процитировано

1

Toward granular search-based automatic unit test case generation DOI Creative Commons
Fabiano Pecorelli, Giovanni Grano, Fabio Palomba

и другие.

Empirical Software Engineering, Год журнала: 2024, Номер 29(4)

Опубликована: Май 17, 2024

Abstract Unit testing verifies the presence of faults in individual software components. Previous research has been targeting automatic generation unit tests through adoption random or search-based algorithms. Despite their effectiveness, these approaches aim at creating by solely optimizing metrics like code coverage, without ensuring that resulting have granularities would allow them to verify both behavior production methods and interaction between class under test. To address this limitation, we propose a two-step systematic approach tests: first force algorithms create cover code, hence implementing so-called intra-method ; then, relax constraints enable creation intra-class target interactions among methods. The assessment our is conducted mixed-method design combines statistical analyses with user study. key results report able keep same level mutation coverage while providing test suites are more structured, understandable aligned principles testing.

Язык: Английский

Процитировано

1

A unified lattice model and framework for purity analyses DOI
Dominik Helm,

Florian Kübler,

Michael Eichberg

и другие.

Опубликована: Авг. 20, 2018

Analyzing methods in object-oriented programs whether they are side-effect free and also deterministic, i.e., mathematically pure, has been the target of extensive research. Identifying such helps to find code smells security related issues, analyses detecting concurrency bugs. Pure used by formal verification approaches as foundations for specifications proving pureness is necessary ensure correct specifications. However, so far no common terminology exists which describes purity methods. Furthermore, some terms (e.g., pure or free) inconsistently. Further, all current only report selected information making them suitable a smaller subset potential use cases. In this paper, we present fine-grained unified lattice model puts levels found literature into relation adds new level that generalizes existing definitions. We have implemented scalable, modularized analysis produces significantly more precise results real-world than best-performing work. The shows defined projects.

Язык: Английский

Процитировано

11

Serialization-aware call graph construction DOI
Joanna C. S. Santos,

Reese A. Jones,

Chinomso Ashiogwu

и другие.

Опубликована: Июнь 18, 2021

Although call graphs are crucial for inter-procedural analyses, it is challenging to statically compute them programs with dynamic features. Prior work focused on supporting certain kinds of features, but serialization-related features still not very well supported. Therefore, we introduce Salsa, an approach complement existing points-to analysis respect enhance the graph's soundness while greatly affecting its precision. We evaluate Salsa's soundness, precision, and performance using 9 from Java Call graph Assessment & Test Suite (CATS) 4 XCorpus dataset. compared Salsa against off-the-shelf construction algorithms available Soot, Doop, WALA, OPAL. Our experiments showed that improved graphs' their also observed did incur extra overhead underlying pointer method.

Язык: Английский

Процитировано

8

On the construction of soundness oracles DOI
Jens Dietrich, Li Sui, Shawn Rasheed

и другие.

Опубликована: Июнь 9, 2017

One of the inherent advantages static analysis is that it can create and reason about models an entire program. However, mainstream languages such as Java use numerous dynamic language features designed to boost programmer productivity, but these are notoriously difficult capture by analysis, leading unsoundness in practice. While existing research has focused on providing sound handling for selected (mostly reflection) based anecdotal evidence case studies, there little empirical work investigate extent which particular cause In this paper, we (1) discuss may (2) a methodology be used check (un)soundness call-graph construction, soundness oracles. These oracles also hybrid analyses.

Язык: Английский

Процитировано

8

Diversity-driven unit test generation DOI
Marcus Kessel, Colin Atkinson

Journal of Systems and Software, Год журнала: 2022, Номер 193, С. 111442 - 111442

Опубликована: Авг. 11, 2022

Язык: Английский

Процитировано

5

On the Use of Mined Stack Traces to Improve the Soundness of Statically Constructed Call Graphs DOI
Li Sui, Jens Dietrich, Amjed Tahir

и другие.

Опубликована: Дек. 1, 2017

Static program analysis is a cornerstone of modern software engineering - it used to detect bugs and security vulnerabilities early before deployed. While there large body research into the scalability precision static analysis, (un) soundness critical issue that has not attracted same level attention by community. In this paper we investigate question whether information harvested from stack traces obtained GitHub tracker Stack Overflow Q&A forums can be in order complement statically built call graphs. For purpose, extract reflective graph edges parsed traces, check these are correctly computed Doop, widely tool for with built-in support reflection analysis. We do find Doop misses when analysing real-world programs, even enabled. This suggests mining techniques useful test improve

Язык: Английский

Процитировано

5

SourcererJBF: A Java Build Framework For Large-Scale Compilation DOI Open Access
Md Rakib Hossain Misu, Rohan Achar, Cristina Videira Lopes

и другие.

ACM Transactions on Software Engineering and Methodology, Год журнала: 2023, Номер 33(3), С. 1 - 35

Опубликована: Дек. 2, 2023

Researchers and tool developers working on dynamic analysis, software testing, automated program repair, verification, validation, need large compiled, compilable, executable code corpora to test their ideas. The publicly available are relatively small, and/or non-compilable, non-executable. Developing a compiled corpus is laborious activity demanding significant manual effort human intervention. To facilitate large-scale analysis research, we develop SourcererJBF , J ava B uild F ramework that can automatically build Java without project-specific instructions generate corpus, creates an offline knowledge base by collecting external dependencies from the project directories existing scripts (if available). It constructs indices of those collected enable fast search for resolving during compilation. As output compilation, it produces JAigantic, compilable containing projects, bytecode, dependencies, normalized script, command. We evaluated SourcererJBF’s effectiveness, correctness, performance, scalability in collection projects. Our experimental results demonstrate significantly effective scalable building corpus. Besides, substantiates reasonable performance correctness similar projects’ systems.

Язык: Английский

Процитировано

2

Driver Generation for Java EE Web Applications DOI
Jens Dietrich, François Gauthier, Padmanabhan Krishnan

и другие.

Опубликована: Ноя. 1, 2018

Program analyses typically need to identify a single entry method that triggers program executions. However, many modern applications do not have such point. Instead, they be deployed in container interacts with them through an application programming interface (API). We present tool generates driver supplies for Java EE web applications. The generated simulates arbitrary client interacting the container. describe modular design of generator, and existing support features like server pages, servlets, filters listeners. report on our experience using generator large real-world

Язык: Английский

Процитировано

5