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 2018Publication History

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.Google ScholarGoogle Scholar
  2. Clr to jvm. http://www.xmlvm.org/clr2jvm/. Accessed on March, 16th 2018.Google ScholarGoogle Scholar
  3. CodeSonar - Static Analysis SAST Software. https://www.grammatech.com/products/codesonar. Accessed on March, 16th 2018.Google ScholarGoogle Scholar
  4. Findbugs<sup>TM</sup> - Find Bugs in Java Programs. http://findbugs.sourceforge.net/. Accessed on March, 16th 2018.Google ScholarGoogle Scholar
  5. Ndepend. http://www.ndepend.com. Accessed on March, 16th 2018.Google ScholarGoogle Scholar
  6. .Net Reflector Add-Ins. https://www.microsoft.com/en-us/research/project/spec.Google ScholarGoogle Scholar
  7. PMD. https://pmd.github.io/. Accessed on March, 16th 2018.Google ScholarGoogle Scholar
  8. WALA. http://wala.sourceforge.net/wiki/index.php/Main_Page. Accessed on March, 16th 2018.Google ScholarGoogle Scholar
  9. M. Ameri and C. A. Furia. Why Just Boogie? Translating between Intermediate VÂćerification Languages. In Proceedings of IFM '16, LNCS. Springer, 2016. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle ScholarCross RefCross Ref
  12. M. Barnett, K. Leino, and W. Schulte. The Spec# Programming System: An Overview. In Proceedings of CASSIS '04, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Coverity. Coverity Prevent<sup>TM</sup> . http://www.coverity.com/library/pdf/coverity_prevent.pdf. Accessed on March, 16th 2018.Google ScholarGoogle Scholar
  18. ECMA. Standard ECMA-335: Common Language Infrastructure (CLI). 2012.Google ScholarGoogle Scholar
  19. T. A. S. Foundation. Apache Commons BCEL. https://commons.apache.org/proper/commons-bcel. Accessed on March, 16th 2018.Google ScholarGoogle Scholar
  20. JetBrains. Resharper. https://www.jetbrains.com/resharper.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. F. Logozzo and M. Fähndrich. Static Contract Checking with Abstract Interpretation. In Proceedings of FoVeOOS '10, LNCS. Springer, 2010.Google ScholarGoogle Scholar
  24. Microsoft. FxCop. https://msdn.microsoft.com/en-us/library/bb429476(v=vs.80).aspx. Accessed on March, 16th 2018.Google ScholarGoogle Scholar
  25. F. Spoto. The Julia Static Analyzer for Java. In Proceedings of SAS '16, LNCS. Springer, 2016.Google ScholarGoogle ScholarCross RefCross Ref
  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.Google ScholarGoogle Scholar

Recommendations

Comments

Login options

Check if you have access through your login credentials or your institution to get full access on this article.

Sign in
  • 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

    Copyright © 2018 ACM

    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].

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    • Published: 2 June 2018

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • research-article

    Upcoming Conference

    ICSE 2025

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader