Transformation of Constraint-based Analyses for Efficient Analysis of Java Programs

Java 프로그램의 효율적인 분석을 위한 집합-기반 분석의 변환

  • 조장우 (부산외국어대학교 컴퓨터전자공학부) ;
  • 창병모 (숙명여자대학교 컴퓨터학과)
  • Published : 2002.08.01

Abstract

This paper proposes a transformation-based approach to design constraint-based analyses for Java at a coarser granularity. In this approach, we design a less or equally precise but more efficient version of an original analysis by transforming the original construction rules into new ones. As applications of this rule transformation, we provide two instances of analysis design by rule-transformation. The first one designs a sparse version of class analysis for Java and the second one deals with a sparse exception analysis for Java. Both are designed based on method-level, and the sparse exception analysis is shown to give the same information for every method as the original analysis.

본 논문에서는 Java 프로그램에 대한 집합기반 분석 설계 시, 효율적인 분석을 위해 분석의 단위를 조절하는 생성규칙 변환 방법을 제안한다. 기존의 생성규칙을 변환함으로서 기존의 분석보다는 정확성이 감소하지만 보다 효율적인 분석을 설계할 수 있다. 본 방법을 응용한 예로서 기존의식 수준의 클래스 분석과 예외 상황 분석에 대해 생성규칙 변환을 사용하여 효율적인 클래스 분석과 예외상황 분석을 설계하였다. 클래스 분석에서는 메소드와 필드 변수 단위의 분석을 설계하였으며, 예외상황 분석에서는 메소드와 try 구문 단위의 분석을 설계하였다. 그리고 예외상황 분석에서는 식 수준의 분석과 변환된 메소드 수준의 분석이 각 메소드에 대해서 동등한 정보를 제공함을 보였다.

Keywords

References

  1. N. Heintze, Set-Based Program Analysis, Ph.D Thesis, School of Computer Science, Carneige Mellon University, 1992
  2. N. Heintze, Set-based analysis of ML programs, In Proceedings of ACM Conference on Lisp and Functional Programming, pp. 306-317, 1994 https://doi.org/10.1145/182409.182495
  3. P. Cousot and R. Cousot, Formal Language, Grammars and Set-Constraint-Based Program Analysis by Abstract Interpretation, In Proceedings of '95 Conference on Functional Programming Languages and Computer Architecture, pp. 25-28, June 1995 https://doi.org/10.1145/224164.224199
  4. C. Flanagan and M. Felleisen, Componential Set-Based Analysis, In Proceedings of ACM Symposium on Principles of Programming Languages, January 1997
  5. F. Tip and J. Palsberg, Scalable propagation-based call graph construction algorithms. In Proceedings of ACM Conference of Object-Oriented Programming Systems, Languages, and Applications, October 2000 https://doi.org/10.1145/353171.353190
  6. K. Yi and S. Ryu, A Cost-effective estimation of uncaught exceptions in Standard ML programs. Theoretical Computer Science, volume 237, number 1, 2000 https://doi.org/10.1016/S0304-3975(00)00317-0
  7. F. Nielson, H. Nielson and C. Hankin, Principles of Program Analysis, Springer-Verlag, December 1999
  8. K. Yi and B.-M. Chang, Exception analysis for Java, In Proceedings of 1999 ECOOP Workshop on Formal Techniques for Java Programs, Lisbon, Portugal, June 1999
  9. C. Flanagan and M. Freund, Type-based Race Detection for Java In Proceedings of ACM Symposium on Programming Languages Design and Implementation, June 2000 https://doi.org/10.1145/349299.349328
  10. E. Duesterwald, R. Gupta and M. L. Soffa, Reducing the Cost of Data Flow Analysis by Congruence Partitioning, In Proceedings of International Conf. on Compiler Construction, April 1994
  11. M. Fahndrich, J. S. Foster, Z. Su and A. Aiken, Partial Online Cycle Elimination in Inclusion Constraint Graphs, In ACM SIGPLAN Conference on Programming Language Design and Implementation, June 1998 https://doi.org/10.1145/277650.277667
  12. Z. Su, M. Fahndrich and A. Aiken, Projection Merging: Reducing Redundancies in Inclusion Constraint Graphs, In Proceedings of 27th ACM Symposium on Principles of Programming Languages, January 2000 https://doi.org/10.1145/325694.325706
  13. F. Bourdoncle, Abstract Interpretation by dynamic Partitioning, Journal of Funtional Programming, 2(4) (1992) 407-435 https://doi.org/10.1017/S0956796800000496
  14. P. Cousot and R. Cousot, Abstract Interpreation and application to logic Programs, Journal of Logic Programming, Vol 13, no. 2-3, pp. 103-179, 1992 https://doi.org/10.1016/0743-1066(92)90030-7
  15. N. D. Jones and S. Muchnick, A flexible Approach to Interprocedural data flow analysis and Programs with recursive data Structures, In Proceedings of the 9th ACM Symposium on Principles of Programming Languages, 1982 https://doi.org/10.1145/582153.582161
  16. M. Sharir and A. Pnueli, Two Approaches to Interprocedural Data Flow analysis, in Muchnick and Jones Eds., Program Flow Analysis, Theory and Applications, Prentice-Hall, 1981
  17. S. Drossopoulou and S. Eisenbach, Java is type safe-probably, Proceedings of 97 ECOOP, 1997 https://doi.org/10.1007/BFb0053388
  18. Tobias Nipkow and David von Oheimb. Java is safe-definitely, Proceedings of the 25th ACM Symposium on Principles of Programming Languages, 1998
  19. D.F. Bacon and P.F. Sweeny, Fast Static analysis of C++ virtual function calls. In Proceedings of ACM Conference of Object-Oriented Programming Systams. languages, and Applications, October 1996
  20. G. DeFouw, D. Grove, and C. Chambers, Fast Interprocedural class analysis, Proceedings of 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages pages 222-236, January 1998 https://doi.org/10.1145/268946.268965
  21. B.-M. Chang, J. Jo, K. Yi and K.-M. Choe, Interprocedural exception Analysis for Java, ACM Symposium on Applied Computing, LasVegas, USA, March 2001 https://doi.org/10.1145/372202.372786