Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/3193992.3193994acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

CIL to Java-bytecode translation for static analysis leveraging

Published: 02 June 2018 Publication History
  • Get Citation Alerts
  • Abstract

    A formal translation of CIL (i.e., .Net) bytecode into Java bytecode is introduced and proved sound with respect to the language semantics. The resulting code is then analyzed with Julia, an industrial static analyzer of Java bytecode. The overall process of translation and analysis is fast, scales up to industrial programs, and introduces a negligible number of false alarms. The main result of this work is to leverage existing, mature, and sound analyzers for Java bytecode by applying them to the (translated) CIL bytecode.

    References

    [1]
    Checkstyle. http://checkstyle.sourceforge.net. Accessed on March, 16th 2018.
    [2]
    Clr to jvm. http://www.xmlvm.org/clr2jvm/. Accessed on March, 16th 2018.
    [3]
    CodeSonar - Static Analysis SAST Software. https://www.grammatech.com/products/codesonar. Accessed on March, 16th 2018.
    [4]
    Findbugs<sup>TM</sup> - Find Bugs in Java Programs. http://findbugs.sourceforge.net/. Accessed on March, 16th 2018.
    [5]
    Ndepend. http://www.ndepend.com. Accessed on March, 16th 2018.
    [6]
    .Net Reflector Add-Ins. https://www.microsoft.com/en-us/research/project/spec.
    [7]
    PMD. https://pmd.github.io/. Accessed on March, 16th 2018.
    [8]
    WALA. http://wala.sourceforge.net/wiki/index.php/Main_Page. Accessed on March, 16th 2018.
    [9]
    M. Ameri and C. A. Furia. Why Just Boogie? Translating between Intermediate VÂćerification Languages. In Proceedings of IFM '16, LNCS. Springer, 2016.
    [10]
    R. Atkey and D. Sannella. ThreadSafe: Static Analysis for Java Concurrency. Electronic Comm. of the European Association of Software Science and Technology, 72, 2015.
    [11]
    G. Barbon, A. Cortesi, P. Ferrara, and E. Steffinlongo. DAPA: degradation-aware privacy analysis of android apps. In Proceedings of STM '16, pages 32--46, 2016.
    [12]
    M. Barnett, K. Leino, and W. Schulte. The Spec# Programming System: An Overview. In Proceedings of CASSIS '04, 2004.
    [13]
    M. Bebenita, F. Brandner, M. Fähndrich, F. Logozzo, W. Schulte, N. Tillmann, and H. Venter. SPUR: a Trace-based JIT Compiler for CIL. In W. R. Cook, S. Clarke, and M. C. Rinard, editors, Proceedings of OOPSLA '10. ACM, 2010.
    [14]
    G. Costantini, P. Ferrara, and A. Cortesi. A suite of abstract domains for static analysis of string values. Softw., Pract. Exper., 45(2):245--287, 2015.
    [15]
    P. Cousot and R. Cousot. Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Proceedings of POPL '77. ACM Press, 1977.
    [16]
    P. Cousot and R. Cousot. Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In Proc. of Principles of Programming Languages (POPL'77), pages 238--252, 1977.
    [17]
    Coverity. Coverity Prevent<sup>TM</sup> . http://www.coverity.com/library/pdf/coverity_prevent.pdf. Accessed on March, 16th 2018.
    [18]
    ECMA. Standard ECMA-335: Common Language Infrastructure (CLI). 2012.
    [19]
    T. A. S. Foundation. Apache Commons BCEL. https://commons.apache.org/proper/commons-bcel. Accessed on March, 16th 2018.
    [20]
    JetBrains. Resharper. https://www.jetbrains.com/resharper.
    [21]
    T. Lindholm, F. Yellin, G. Bracha, and A. Buckley. The Java Virtual Machine Specification, Java SE 7 Edition. Addison-Wesley Professional, 1st edition, 2013.
    [22]
    F. Logozzo. Cibai: An Abstract Interpretation-Based Static Analyzer for Modular Analysis and Verification of Java Classes. In Proceedings of VMCAI '07, LNCS. Springer, 2007.
    [23]
    F. Logozzo and M. Fähndrich. Static Contract Checking with Abstract Interpretation. In Proceedings of FoVeOOS '10, LNCS. Springer, 2010.
    [24]
    Microsoft. FxCop. https://msdn.microsoft.com/en-us/library/bb429476(v=vs.80).aspx. Accessed on March, 16th 2018.
    [25]
    F. Spoto. The Julia Static Analyzer for Java. In Proceedings of SAS '16, LNCS. Springer, 2016.
    [26]
    Wikipedia. List of Tools for Static Code Analysis. https://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#Java. Accessed on March, 16th 2018.

    Cited By

    View all
    • (2023)LiSA: A Generic Framework for Multilanguage Static AnalysisChallenges of Software Verification10.1007/978-981-19-9601-6_2(19-42)Online publication date: 22-Jul-2023
    • (2020)From CIL to Java bytecode: Semantics-based translation for static analysis leveragingScience of Computer Programming10.1016/j.scico.2020.102392(102392)Online publication date: Jan-2020
    • (2020)SARL: OO Framework Specification for Static AnalysisSoftware Verification10.1007/978-3-030-63618-0_1(3-20)Online publication date: 6-Dec-2020

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    FormaliSE '18: Proceedings of the 6th Conference on Formal Methods in Software Engineering
    June 2018
    101 pages
    ISBN:9781450357180
    DOI:10.1145/3193992
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 02 June 2018

    Permissions

    Request permissions for this article.

    Check for updates

    Qualifiers

    • Research-article

    Conference

    ICSE '18
    Sponsor:

    Upcoming Conference

    ICSE 2025

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)5
    • Downloads (Last 6 weeks)0

    Other Metrics

    Citations

    Cited By

    View all
    • (2023)LiSA: A Generic Framework for Multilanguage Static AnalysisChallenges of Software Verification10.1007/978-981-19-9601-6_2(19-42)Online publication date: 22-Jul-2023
    • (2020)From CIL to Java bytecode: Semantics-based translation for static analysis leveragingScience of Computer Programming10.1016/j.scico.2020.102392(102392)Online publication date: Jan-2020
    • (2020)SARL: OO Framework Specification for Static AnalysisSoftware Verification10.1007/978-3-030-63618-0_1(3-20)Online publication date: 6-Dec-2020

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media