TY - GEN
T1 - The case for analysis preserving language transformation
AU - Zhang, Xiaolan
AU - Koved, Larry
AU - Pistoia, Marco
AU - Weber, Sam
AU - Jaeger, Trent
AU - Marceau, Guillaume
AU - Zeng, Liangzhao
PY - 2006
Y1 - 2006
N2 - Static analysis has gained much attention over the past few years in applications such as bug finding and program verification. As software becomes more complex and componentized, it is common for software systems and applications to be implemented in multiple languages. There is thus a strong need for developing analysis tools for multi-language software. We introduce a technique called Analysis Preserving Language Transformation (APLT) that enables the analysis of multi-language software, and also allows analysis tools for one language to be applied to programs written in another. APLT preserves data and control flow information needed to perform static analyses, but allows the translation to deviate from the original program's semantics in ways that are not pertinent to the particular analysis. We discuss major technical difficulties in building such a translator, using a C-to-Java translator as an example. We demonstrate the feasibility and effectiveness of APLT using two usage cases: analysis of the Java runtime native methods and reuse of Java analysis tools for C. Our preliminary results show that a control- and data-flow equivalent model for native methods can eliminate unsoundness and produce reliable results, and that APLT enables seamless reuse of analysis tools for checking high-level program properties.
AB - Static analysis has gained much attention over the past few years in applications such as bug finding and program verification. As software becomes more complex and componentized, it is common for software systems and applications to be implemented in multiple languages. There is thus a strong need for developing analysis tools for multi-language software. We introduce a technique called Analysis Preserving Language Transformation (APLT) that enables the analysis of multi-language software, and also allows analysis tools for one language to be applied to programs written in another. APLT preserves data and control flow information needed to perform static analyses, but allows the translation to deviate from the original program's semantics in ways that are not pertinent to the particular analysis. We discuss major technical difficulties in building such a translator, using a C-to-Java translator as an example. We demonstrate the feasibility and effectiveness of APLT using two usage cases: analysis of the Java runtime native methods and reuse of Java analysis tools for C. Our preliminary results show that a control- and data-flow equivalent model for native methods can eliminate unsoundness and produce reliable results, and that APLT enables seamless reuse of analysis tools for checking high-level program properties.
UR - http://www.scopus.com/inward/record.url?scp=34247343731&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=34247343731&partnerID=8YFLogxK
U2 - 10.1145/1146238.1146260
DO - 10.1145/1146238.1146260
M3 - Conference contribution
AN - SCOPUS:34247343731
SN - 1595932631
SN - 9781595932631
T3 - Proceedings of the 2006 International Symposium on Software Testing and Analysis, ISSTA 2006
SP - 191
EP - 201
BT - Proceedings of the 2006 International Symposium on Software Testing and Analysis, ISSTA 2006
T2 - 2006 International Symposium on Software Testing and Analysis, ISSTA 2006
Y2 - 17 July 2006 through 20 July 2006
ER -