Checkification: a practical approach for testing static analysis truths

Ferreiro de Aguiar, Daniela ORCID: https://orcid.org/0009-0002-1072-8989, Casso San Román, Ignacio ORCID: https://orcid.org/0000-0001-9196-7951, Morales Caballero, José Francisco ORCID: https://orcid.org/0000-0001-9782-8135, López García, Pedro ORCID: https://orcid.org/0000-0002-1092-2071 and Hermenegildo, Manuel V. ORCID: https://orcid.org/0000-0002-7583-323X (2025). Checkification: a practical approach for testing static analysis truths. "Theory and Practice Of Logic Programming", v. 25 (n. 5); pp. 829-866. ISSN 1475-3081. https://doi.org/10.1017/S1471068425100069.

Descripción

Título: Checkification: a practical approach for testing static analysis truths
Autor/es:
Tipo de Documento: Artículo
Título de Revista/Publicación: Theory and Practice Of Logic Programming
Fecha: 22 Julio 2025
ISSN: 1475-3081
Volumen: 25
Número: 5
Materias:
ODS:
Palabras Clave Informales: static analysis, testing, run-time checks, assertions, abstract interpretation, logic programing, constraint logic programing
Escuela: E.T.S. de Ingenieros Informáticos (UPM)
Departamento: Inteligencia Artificial
Licencias Creative Commons: Reconocimiento - Sin obra derivada - No comercial

Texto completo

[thumbnail of HERME_2025_03.pdf] PDF (Portable Document Format) - Se necesita un visor de ficheros PDF, como GSview, Xpdf o Adobe Acrobat Reader
Descargar (4MB)

Resumen

Static analysis is an essential component of many modern software development tools. Unfortunately, the ever-increasing complexity of static analyzers makes their coding error-prone. Even analysis tools based on rigorous mathematical techniques, such as abstract interpretation, are not immune to bugs. Ensuring the correctness and reliability of software analyzers is critical if they are to be inserted in production compilers and development environments. While compiler validation has seen notable success, formal validation of static analysis tools remains relatively unexplored. In this paper we present checkification, a simple, automatic method for testing static analyzers. Broadly, it consists in checking, over a suite of benchmarks, that the properties inferred statically are satisfied dynamically. The main advantage of our approach lies in its simplicity, which stems directly from framing it within the Ciao assertion-based validation framework, and its blended static/dynamic assertion checking approach. We demonstrate that in this setting, the analysis can be tested with little effort by combining the following components already present in the framework: 1) the static analyzer, which outputs its results as the original program source with assertions interspersed; 2) the assertion run-time checking mechanism,which instruments a program to ensure that no assertion is violated at run time; 3) the random test case generator, which generates random test cases satisfying the properties present in assertion preconditions; and 4) the unit-test framework, which executes those test cases. We have applied our approach to the CiaoPP static analyzer, resulting in the identification of many bugs with reasonable overhead. Most of these bugs have been either fixed or confirmed, helping us detect a range of errors not only related to analysis soundness but also within other aspects of the framework.

Proyectos asociados

Tipo
Código
Acrónimo
Responsable
Título
Gobierno de España
PID2019-108528RB-C21
Sin especificar
Sin especificar
ProCode
Gobierno de España
TED2021- 132464B-I00
Sin especificar
Sin especificar
PRODIGY
Gobierno de España
FJC2021-047102-I
Sin especificar
Sin especificar
Sin especificar

Más información

ID de Registro: 94032
Identificador DC: https://oa.upm.es/94032/
Identificador OAI: oai:oa.upm.es:94032
URL Portal Científico: https://portalcientifico.upm.es/es/ipublic/item/10383636
Identificador DOI: 10.1017/S1471068425100069
URL Oficial: https://www.cambridge.org/core/journals/theory-and...
Depositado por: Biblioteca Facultad de Informatica
Depositado el: 17 Feb 2026 07:34
Ultima Modificación: 17 Feb 2026 07:34