skip to main content
research-article

A Survey of Parametric Static Analysis

Published: 18 July 2021 Publication History

Editorial Notes

A corrigendum was issued for this paper on November 18, 2021. You can download the corrigendum from the supplemental material section of this citation page.

Abstract

Understanding program behaviors is important to verify program properties or to optimize programs. Static analysis is a widely used technique to approximate program behaviors via abstract interpretation. To evaluate the quality of static analysis, researchers have used three metrics: performance, precision, and soundness. The static analysis quality depends on the analysis techniques used, but the best combination of such techniques may be different for different programs. To find the best combination of analysis techniques for specific programs, recent work has proposed parametric static analysis. It considers static analysis as black-box parameterized by analysis parameters, which are techniques that may be configured without analysis details. We formally define the parametric static analysis, and we survey analysis parameters and their parameter selection in the literature. We also discuss open challenges and future directions of the parametric static analysis.

Supplementary Material

3464457-corrigendum (3464457-corrigendum.pdf)
Corrigendum to "A Survey of Parametric Static Analysis" by Park et al., ACM Computing Surveys, Volume 54, Issue 7 (CSUR 54:7).

References

[1]
Stephen Adams, Thomas Ball, Manuvir Das, Sorin Lerner, Sriram K. Rajamani, Mark Seigle, and Westley Weimer. 2002. Speeding up dataflow analysis using flow-insensitive pointer analysis. In Proceedings of the International Static Analysis Symposium. 230–246.
[2]
Miltiadis Allamanis, Marc Brockschmidt, and Mahmoud Khademi. 2018. Learning to represent programs with graphs. (2018).
[3]
Uri Alon, Meital Zilberstein, Omer Levy, and Eran Yahav. 2019. code2vec: Learning distributed representations of code. In Proceedings of the Symposium on Principles of Programming Languages, Vol. 3. 1–29.
[4]
Esben Andreasen and Anders Møller. 2014. Determinacy in static analysis for jquery. In Proceedings of the International Conference on Object-oriented Programming, Systems, Languages, and Applications. 17–31.
[5]
Christophe Andrieu, Nando De Freitas, Arnaud Doucet, and Michael I. Jordan. 2003. An introduction to MCMC for machine learning. Mach. Learn. 50, 1–2 (2003), 5–43.
[6]
SungGyeong Bae, Hyunghun Cho, Inho Lim, and Sukyoung Ryu. 2014. SAFEWAPI: Web API misuse detector for web applications. In Proceedings of the International Symposium on Foundations of Software Engineering. 507–517.
[7]
Osbert Bastani, Rahul Sharma, Lazaro Clapp, Saswat Anand, and Alex Aiken. 2019. Eventually sound points-to analysis with specifications. In Proceedings of the European Conference on Object-Oriented Programming. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik.
[8]
Pavol Bielik, Veselin Raychev, and Martin Vechev. 2017. Learning a static analyzer from data. In Proceedings of the International Conference on Computer-aided Verification. Springer, 233–253.
[9]
Sam Blackshear, Bor-Yuh Evan Chang, and Manu Sridharan. 2013. Thresher: Precise refutations for heap reachability. In Proceedings of the Conference on Programming Language Design and Implementation, Vol. 48. 275–286.
[10]
Bruno Blanchet, Patrick Cousot, Radhia Cousot, Jérome Feret, Laurent Mauborgne, Antoine Miné, David Monniaux, and Xavier Rival. 2003. A static analyzer for large safety-critical software. In Proceedings of the Conference on Programming Language Design and Implementation. 196–207.
[11]
Sooyoung Cha, Sehun Jeong, and Hakjoo Oh. 2016. Learning a strategy for choosing widening thresholds from a large codebase. In Proceedings of the Asian Symposium on Programming Languages and Systems. 25–41.
[12]
Kwonsoo Chae, Hakjoo Oh, Kihong Heo, and Hongseok Yang. 2017. Automatically generating features for learning program analysis heuristics for c-like languages. In Proceedings of the International Conference on Object-oriented Programming, Systems, Languages, and Applications, Vol. 1. 25.
[13]
Patrick Cousot and Radhia Cousot. 1977. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Proceedings of the Symposium on Principles of Programming Languages. 238–252.
[14]
John Cyphert, Jason Breck, Zachary Kincaid, and Thomas Reps. 2019. Refinement of path expressions for static analysis. In Proceedings of the Symposium on Principles of Programming Languages, Vol. 3. 1–29.
[15]
Arnab De and Deepak D’Souza. 2012. Scalable flow-sensitive pointer analysis for java with strong updates. In Proceedings of the European Conference on Object-oriented Programming. 665–687.
[16]
Jens Dietrich, Nicholas Hollingum, and Bernhard Scholz. 2015. Giga-scale exhaustive points-to analysis for Java in under a minute. In Proceedings of the International Conference on Object-oriented Programming, Systems, Languages, and Applications. 535–551.
[17]
Bruno Dufour, Barbara G. Ryder, and Gary Sevitsky. 2007. Blended analysis for performance understanding of framework-based applications. In Proceedings of the International Symposium on Software Testing and Analysis. 118–128.
[18]
Bruno Dufour, Barbara G. Ryder, and Gary Sevitsky. 2008. A scalable technique for characterizing the usage of temporaries in framework-intensive Java applications. In Proceedings of the International Symposium on Foundations of Software Engineering. 59–70.
[19]
Paul Erdős and Alfréd Rényi. 1960. On the evolution of random graphs. Publ. Math. Inst. Hung. Acad. Sci 5, 1 (1960), 17–60.
[20]
Damien Ernst, Pierre Geurts, and Louis Wehenkel. 2005. Tree-based batch mode reinforcement learning. J. Mach. Learn. Res. 6, Apr. (2005), 503–556.
[21]
Gang Fan, Rongxin Wu, Qingkai Shi, Xiao Xiao, Jinguo Zhou, and Charles Zhang. 2019. Smoke: Scalable path-sensitive memory leak detection for millions of lines of code. In Proceedings of the International Conference on Software Engineering. IEEE, 72–82.
[22]
Neville Grech, George Fourtounis, Adrian Francalanza, and Yannis Smaragdakis. 2017. Heaps don’t lie: Countering unsoundness with heap snapshots. In Proceedings of the International Conference on Object-oriented Programming, Systems, Languages, and Applications, Vol. 1. 1–27.
[23]
Radu Grigore and Hongseok Yang. 2016. Abstraction refinement guided by a learnt probabilistic model. In Proceedings of the Symposium on Principles of Programming Languages. 485–498.
[24]
Bhargav S. Gulavani and Sriram K. Rajamani. 2006. Counterexample driven refinement for abstract interpretation. In Proceedings of the International Conference on Tools and Algorithms for the Construction and Analysis of Systems. 474–488.
[25]
Samuel Z. Guyer and Calvin Lin. 2003. Client-driven pointer analysis. In Proceedings of the International Static Analysis Symposium. 214–236.
[26]
Samuel Z. Guyer and Calvin Lin. 2005. Error checking with client-driven pointer analysis. Sci. Comput. Prog. 58, 1–2 (2005), 83–114.
[27]
Ben Hardekopf and Calvin Lin. 2007. Exploiting pointer and location equivalence to optimize pointer analysis. In Proceedings of the International Static Analysis Symposium. 265–280.
[28]
Ben Hardekopf and Calvin Lin. 2011. Flow-sensitive pointer analysis for millions of lines of code. In Proceedings of the International Symposium on Code Generation and Optimization. 289–298.
[29]
Behnaz Hassanshahi, Raghavendra Kagalavadi Ramesh, Padmanabhan Krishnan, Bernhard Scholz, and Yi Lu. 2017. An efficient tunable selective points-to analysis for large codebases. In Proceedings of the International Workshop on State of the Art in Program Analysis. 13–18.
[30]
Jingxuan He, Gagandeep Singh, Markus Püschel, and Martin Vechev. 2020. Learning fast and precise numerical analysis. In Proceedings of the Conference on Programming Language Design and Implementation. 1112–1127.
[31]
Nevin Heintze and Olivier Tardieu. 2001. Demand-driven pointer analysis. In Proceedings of the Conference on Programming Language Design and Implementation. 24–34.
[32]
Jordan Henkel, Shuvendu K. Lahiri, Ben Liblit, and Thomas Reps. 2018. Code vectors: Understanding programs through embedded abstracted symbolic traces. In Proceedings of the International Symposium on Foundations of Software Engineering. 163–174.
[33]
Kihong Heo, Hakjoo Oh, and Hongseok Yang. 2016. Learning a variable-clustering strategy for octagon from labeled data generated by a static analysis. In Proceedings of the International Static Analysis Symposium. 237–256.
[34]
Kihong Heo, Hakjoo Oh, and Hongseok Yang. 2019. Resource-aware program analysis via online abstraction coarsening. In Proceedings of the International Conference on Software Engineering. IEEE, 94–104.
[35]
Kihong Heo, Hakjoo Oh, and Kwangkeun Yi. 2017. Machine-learning-guided selectively unsound static analysis. In Proceedings of the International Conference on Software Engineering. 519–529.
[36]
Stefan Heule, Manu Sridharan, and Satish Chandra. 2015. Mimic: Computing models for opaque code. In Proceedings of the International Symposium on Foundations of Software Engineering. 710–720.
[37]
Simon Holm Jensen, Peter A. Jonsson, and Anders Møller. 2012. Remedying the eval that men do. In Proceedings of the International Symposium on Software Testing and Analysis. 34–44.
[38]
Minseok Jeon, Sehun Jeong, and Hakjoo Oh. 2018. Precise and scalable points-to analysis via data-driven context tunneling. In Proceedings of the International Conference on Object-oriented Programming, Systems, Languages, and Applications, Vol. 2. 1–29.
[39]
Sehun Jeong, Minseok Jeon, Sungdeok Cha, and Hakjoo Oh. 2017. Data-driven context-sensitivity for points-to analysis. In Proceedings of the International Conference on Object-oriented Programming, Systems, Languages, and Applications, Vol. 1. 28.
[40]
Vineet Kahlon. 2008. Bootstrapping: A technique for scalable flow and context-sensitive pointer alias analysis. In Proceedings of the Conference on Programming Language Design and Implementation. 249–259.
[41]
George Kastrinis and Yannis Smaragdakis. 2013. Hybrid context-sensitivity for points-to analysis. In Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’13). 423–434.
[42]
Se-Won Kim, Xavier Rival, and Sukyoung Ryu. 2018. A theoretical foundation of sensitivity in an abstract interpretation framework. ACM Trans. Prog. Lang. Syst. 40, 3 (2018), 1–44.
[43]
Thomas N. Kipf and Max Welling. 2016. Semi-supervised classification with graph convolutional networks. arXiv preprint arXiv:1609.02907 (2016).
[44]
Yoonseok Ko, Hongki Lee, Julian Dolby, and Sukyoung Ryu. 2015. Practically tunable static analysis framework for large-scale JavaScript applications. In Proceedings of the International Conference on Automated Software Engineering. 541–551.
[45]
Yoonseok Ko, Xavier Rival, and Sukyoung Ryu. 2017. Weakly sensitive analysis for unbounded iteration over JavaScript objects. In Proceedings of the Asian Symposium on Programming Languages and Systems. Springer, 148–168.
[46]
Yoonseok Ko, Xavier Rival, and Sukyoung Ryu. 2019. Weakly sensitive analysis for JavaScript object-manipulating programs. Softw.: Pract. Exper. 49, 5 (2019), 840–884.
[47]
William Landi and Barbara G. Ryder. 1992. A safe approximate algorithm for interprocedural aliasing. In Proceedings of the Conference on Programming Language Design and Implementation, Vol. 27. 235–248.
[48]
James R. Larus and Paul N. Hilfinger. 1988. Detecting conflicts between structure accesses. In Proceedings of the Conference on Programming Language Design and Implementation, Vol. 23. 24–31.
[49]
Vincent Laviron and Francesco Logozzo. 2009. Refining abstract interpretation-based static analyses with hints. In Proceedings of the Asian Symposium on Programming Languages and Systems. 343–358.
[50]
Yue Li, Tian Tan, Anders Møller, and Yannis Smaragdakis. 2018. Precision-guided context sensitivity for pointer analysis. In Proceedings of the International Conference on Object-oriented Programming, Systems, Languages, and Applications, Vol. 2. 29.
[51]
Yue Li, Tian Tan, Anders Møller, and Yannis Smaragdakis. 2018. Scalability-first pointer analysis with self-tuning context-sensitivity. In Proceedings of the International Symposium on Foundations of Software Engineering. 129–140.
[52]
Yuanbo Li, Qirun Zhang, and Thomas Reps. 2020. Fast graph simplification for interleaved Dyck-reachability. In Proceedings of the Conference on Programming Language Design and Implementation. 780–793.
[53]
Percy Liang and Mayur Naik. 2011. Scaling abstraction refinement via pruning. In Proceedings of the Conference on Programming Language Design and Implementation. 590–601.
[54]
Percy Liang, Omer Tripp, and Mayur Naik. 2011. Learning minimal abstractions. In Proceedings of the Symposium on Principles of Programming Languages. 31–42.
[55]
Benjamin Livshits, Manu Sridharan, Yannis Smaragdakis, Ondřej Lhoták, J. Nelson Amaral, Bor-Yuh Evan Chang, Samuel Z. Guyer, Uday P. Khedker, Anders Møller, and Dimitrios Vardoulakis. 2015. In defense of soundiness: A manifesto. Commun. ACM 58, 2 (Feb. 2015), 44–46.
[56]
Jingbo Lu and Jingling Xue. 2019. Precision-preserving yet fast object-sensitive pointer analysis with partial context sensitivity. In Proceedings of the International Conference on Object-oriented Programming, Systems, Languages, and Applications.
[57]
Magnus Madsen, Benjamin Livshits, and Michael Fanning. 2013. Practical static analysis of JavaScript applications in the presence of frameworks and libraries. In Proceedings of the International Symposium on Foundations of Software Engineering. 499–509.
[58]
Ana Milanova, Atanas Rountev, and Barbara G. Ryder. 2005. Parameterized object sensitivity for points-to analysis for java. ACM Trans. Softw. Eng. Methodol. 14, 1 (Jan. 2005), 1–41.
[59]
Antoine Miné. 2006. The octagon abstract domain. Higher-order Symb. Computat. 19, 1 (2006), 31–100.
[60]
Kevin P Murphy. 2012. Machine Learning: A Probabilistic Perspective. The MIT Press.
[61]
Glenford J. Myers. 1976. The Art of Software Testing.
[62]
Mayur Naik, Hongseok Yang, Ghila Castelnuovo, and Mooly Sagiv. 2012. Abstractions from tests. In Proceedings of the Symposium on Principles of Programming Languages. 373–386.
[63]
Hakjoo Oh, Lucas Brutschy, and Kwangkeun Yi. 2011. Access analysis-based tight localization of abstract memories. In Proceedings of the International Conference on Verification, Model Checking, and Abstract Interpretation. 356–370.
[64]
Hakjoo Oh, Kihong Heo, Wonchan Lee, Woosuk Lee, and Kwangkeun Yi. 2012. Design and implementation of sparse global analyses for C-like languages. In Proceedings of the Conference on Programming Language Design and Implementation. 229–238.
[65]
Hakjoo Oh, Wonchan Lee, Kihong Heo, Hongseok Yang, and Kwangkeun Yi. 2014. Selective context-sensitivity guided by impact pre-analysis. In Proceedings of the Conference on Programming Language Design and Implementation. 475–484.
[66]
Hakjoo Oh, Wonchan Lee, Kihong Heo, Hongseok Yang, and Kwangkeun Yi. 2015. Selective x-sensitive analysis guided by impact pre-analysis. ACM Trans. Prog. Lang. Syst. 38, 2 (2015), 1–45.
[67]
Hakjoo Oh, Hongseok Yang, and Kwangkeun Yi. 2015. Learning a strategy for adapting a program analysis via Bayesian optimisation. In Proceedings of the International Conference on Object-oriented Programming, Systems, Languages, and Applications. 572–588.
[68]
Hakjoo Oh and Kwangkeun Yi. 2011. Access-based localization with bypassing. In Proceedings of the Asian Symposium on Programming Languages and Systems. 50–65.
[69]
Changhee Park and Sukyoung Ryu. 2015. Scalable and precise static analysis of JavaScript applications via loop-sensitivity. In Proceedings of the European Conference on Object-oriented Programming. 735–756.
[70]
Jihyeok Park. 2014. JavaScript API misuse detection by using typescript. In Proceedings of the Companion Publication of the 13th International Conference on Modularity (MODULARITY’14). 11–12.
[71]
Joonyoung Park, Alexander Jordan, and Sukyoung Ryu. 2019. Automatic modeling of opaque code for JavaScript static analysis. In Proceedings of the International Conference on Fundamental Approaches to Software Engineering. Springer, 43–60.
[72]
Joonyoung Park, Inho Lim, and Sukyoung Ryu. 2016. Battles with false positives in static analysis of JavaScript web applications in the wild. In Proceedings of the International Conference on Software Engineering Companion. 61–70.
[73]
J. Ross Quinlan. 1986. Induction of decision trees. Mach. Learn. 1, 1 (1986), 81–106.
[74]
J Ross Quinlan. 2014. C4.5: Programs for Machine Learning.
[75]
Girish Maskeri Rama, Raghavan Komondoor, and Himanshu Sharma. 2018. Refinement in object-sensitivity points-to analysis via slicing. In Proceedings of the International Conference on Object-oriented Programming, Systems, Languages, and Applications, Vol. 2. 27.
[76]
Ramanathan Ramu, Ganesha B. Upadhyaya, Hoan Anh Nguyen, and Hridesh Rajan. 2020. BCFA: Bespoke control flow analysis for CFA at scale. In Proceedings of the International Conference on Software Engineering. IEEE.
[77]
Thomas Reps. 1998. Program analysis via graph reachability. Inf. Softw. Technol. 40, 11 (Dec. 1998), 701–726.
[78]
Atanas Rountev and Satish Chandra. 2000. Off-line variable substitution for scaling points-to analysis. In Proceedings of the Conference on Programming Language Design and Implementation. 47–56.
[79]
Max Schäfer, Manu Sridharan, Julian Dolby, and Frank Tip. 2013. Dynamic determinacy analysis. In Proceedings of the Conference on Programming Language Design and Implementation. 165–174.
[80]
Bernhard Schölkopf, John C. Platt, John Shawe-Taylor, Alex J. Smola, and Robert C. Williamson. 2001. Estimating the support of a high-dimensional distribution. Neural Computat. 13, 7 (2001), 1443–1471.
[81]
Micha Sharir and Amir Pnueli. 1981. Two approaches to interprocedural data flow analysis. In Program Flow Analysis: Theory and Applications. Prentice-Hall.
[82]
Qingkai Shi, Xiao Xiao, Rongxin Wu, Jinguo Zhou, Gang Fan, and Charles Zhang. 2018. Pinpoint: Fast and precise sparse value flow analysis for million lines of code. In Proceedings of the Conference on Programming Language Design and Implementation. 693–706.
[83]
Gagandeep Singh, Markus Püschel, and Martin Vechev. 2018. Fast numerical program analysis with reinforcement learning. In Proceedings of the International Conference on Computer-aided Verification. Springer, 211–229.
[84]
Yannis Smaragdakis, George Balatsouras, and George Kastrinis. 2013. Set-based pre-processing for points-to analysis. In Proceedings of the International Conference on Object-oriented Programming, Systems, Languages, and Applications. 253–270.
[85]
Yannis Smaragdakis, George Kastrinis, and George Balatsouras. 2014. Introspective analysis: Context-sensitivity, across the board. In Proceedings of the Conference on Programming Language Design and Implementation. 485–495.
[86]
Thodoris Sotiropoulos and Benjamin Livshits. 2019. Static analysis for asynchronous JavaScript programs. In Proceedings of the European Conference on Object-oriented Programming. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik.
[87]
Johannes Späth, Karim Ali, and Eric Bodden. 2019. Context-, flow-, and field-sensitive data-flow analysis using synchronized pushdown systems. In Proceedings of the Symposium on Principles of Programming Languages, Vol. 3. 1–29.
[88]
Johannes Späth, Lisa Nguyen Quang Do, Karim Ali, and Eric Bodden. 2016. Boomerang: Demand-driven flow-and context-sensitive pointer analysis for java. In Proceedings of the European Conference on Object-oriented Programming. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik.
[89]
Manu Sridharan and Rastislav Bodík. 2006. Refinement-based context-sensitive points-to analysis for Java. In Proceedings of the Conference on Programming Language Design and Implementation. 387–400.
[90]
Manu Sridharan, Julian Dolby, Satish Chandra, Max Schäfer, and Frank Tip. 2012. Correlation tracking for points-to analysis of JavaScript. In Proceedings of the European Conference on Object-oriented Programming. Springer, 435–458.
[91]
Manu Sridharan, Denis Gopan, Lexin Shan, and Rastislav Bodík. 2005. Demand-driven points-to analysis for Java. In Proceedings of the International Conference on Object-oriented Programming, Systems, Languages, and Applications. 59–76.
[92]
Bjarne Steensgaard. 1996. Points-to analysis in almost linear time. In Proceedings of the 23rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL’96). 32–41.
[93]
Benno Stein, Benjamin Barslev Nielsen, Bor-Yuh Evan Chang, and Anders Møller. 2019. Static analysis with demand-driven value refinement. In Proceedings of the International Conference on Object-oriented Programming, Systems, Languages, and Applications, Vol. 3. 1–29.
[94]
Yulei Sui, Yue Li, and Jingling Xue. 2013. Query-directed adaptive heap cloning for optimizing compilers. In Proceedings of the International Symposium on Code Generation and Optimization. 1–11.
[95]
Yulei Sui and Jingling Xue. 2016. On-demand strong update analysis via value-flow refinement. In Proceedings of the International Symposium on Foundations of Software Engineering. 460–473.
[96]
Yulei Sui, Ding Ye, and Jingling Xue. 2012. Static memory leak detection using full-sparse value-flow analysis. In Proceedings of the International Symposium on Software Testing and Analysis. 254–264.
[97]
Yulei Sui, Ding Ye, and Jingling Xue. 2014. Detecting memory leaks statically with full-sparse value-flow analysis. IEEE Trans. Softw. Eng. 40, 2 (2014), 107–122.
[98]
Yulei Sui, Sen Ye, Jingling Xue, and Pen-Chung Yew. 2011. SPAS: Scalable path-sensitive pointer analysis on full-sparse SSA. In Proceedings of the Asian Symposium on Programming Languages and Systems. 155–171.
[99]
Richard S. Sutton and Andrew G. Barto. 2018. Reinforcement Learning: An Introduction. The MIT Press.
[100]
T. A. Corbi.1989. Program understanding: Challenge for the 1990s. IBM Syst. J. (1989), 294–306.
[101]
Tian Tan, Yue Li, and Jingling Xue. 2016. Making k-object-sensitive pointer analysis more precise with still k-limiting. In Proceedings of the International Static Analysis Symposium. 489–510.
[102]
Tian Tan, Yue Li, and Jingling Xue. 2017. Efficient and precise points-to analysis: Modeling the heap by merging equivalent automata. In Proceedings of the Conference on Programming Language Design and Implementation. 278–291.
[103]
Manas Thakur and V. Krishna Nandivada. 2019. Compare less, defer more: Scaling value-contexts based whole-program heap analyses. In Proceedings of the 28th International Conference on Compiler Construction. 135–146.
[104]
Manas Thakur and V. Krishna Nandivada. 2020. Mix your contexts well: Opportunities unleashed by recent advances in scaling context-sensitivity. In Proceedings of the 29th International Conference on Compiler Construction. 27–38.
[105]
John Toman and Dan Grossman. 2019. Concerto: A framework for combined concrete and abstract interpretation. In Proceedings of the Symposium on Principles of Programming Languages, Vol. 3. 1–29.
[106]
Jyothi Vedurada and V. Krishna Nandivada. 2019. Batch alias analysis. In Proceedings of the International Conference on Automated Software Engineering. IEEE, 936–948.
[107]
V. Vipindeep and Pankaj Jalote. 2005. Efficient static analysis with path pruning using coverage data. In Proceedings of the International Workshop on Dynamic Analysis. 1–6.
[108]
Christopher J. C. H. Watkins and Peter Dayan. 1992. Q-learning. Mach. Learn. 8, 3–4 (1992), 279–292.
[109]
Guannan Wei, Yuxuan Chen, and Tiark Rompf. 2019. Staged abstract interpreters: Fast and modular whole-program analysis via meta-programming. In Proceedings of the International Conference on Object-oriented Programming, Systems, Languages, and Applications, Vol. 3. 1–32.
[110]
Shiyi Wei and Barbara G. Ryder. 2013. Practical blended taint analysis for JavaScript. In Proceedings of the International Symposium on Software Testing and Analysis. 336–346.
[111]
Shiyi Wei and Barbara G. Ryder. 2014. State-sensitive points-to analysis for the dynamic behavior of JavaScript objects. In Proceedings of the European Conference on Object-oriented Programming. 1–26.
[112]
Shiyi Wei and Barbara G. Ryder. 2015. Adaptive context-sensitive analysis for JavaScript. In Proceedings of the European Conference on Object-oriented Programming. 712–734.
[113]
Shiyi Wei, Omer Tripp, Barbara G. Ryder, and Julian Dolby. 2016. Revamping JavaScript static analysis via localization and remediation of root causes of imprecision. In Proceedings of the International Symposium on Foundations of Software Engineering. 487–498.
[114]
John Whaley and Monica S. Lam. 2004. Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In Proceedings of the Conference on Programming Language Design and Implementation. 131–144.
[115]
Guoqing Xu, Atanas Rountev, and Manu Sridharan. 2009. Scaling CFL-reachability-based points-to analysis using context-sensitive must-not-alias analysis. In Proceedings of the European Conference on Object-oriented Programming. 98–122.
[116]
Hongtao Yu, Jingling Xue, Wei Huo, Xiaobing Feng, and Zhaoqing Zhang. 2010. Level by level: Making flow- and context-sensitive pointer analysis scalable for millions of lines of code. In Proceedings of the International Symposium on Code Generation and Optimization. 218–229.
[117]
Juan Zhai, Jianjun Huang, Shiqing Ma, Xiangyu Zhang, Lin Tan, Jianhua Zhao, and Feng Qin. 2016. Automatic model generation from documentation for Java API functions. In Proceedings of the International Conference on Software Engineering. IEEE, 380–391.
[118]
Qirun Zhang and Zhendong Su. 2017. Context-sensitive data-dependence analysis via linear conjunctive language reachability. In Proceedings of the Symposium on Principles of Programming Languages. 344–358.
[119]
Xin Zhang, Ravi Mangal, Radu Grigore, Mayur Naik, and Hongseok Yang. 2014. On abstraction refinement for program analyses in datalog. In Proceedings of the Conference on Programming Language Design and Implementation. 239–248.
[120]
Xin Zhang, Mayur Naik, and Hongseok Yang. 2013. Finding optimum abstractions in parametric dataflow analysis. In Proceedings of the Conference on Programming Language Design and Implementation. 365–376.
[121]
Zhuo Zhang, Wei You, Guanhong Tao, Guannan Wei, Yonghwi Kwon, and Xiangyu Zhang. 2019. BDA: Practical dependence analysis for binary executables by unbiased whole-program path sampling and per-path abstract interpretation. In Proceedings of the International Conference on Object-oriented Programming, Systems, Languages, and Applications, Vol. 3. 1–31.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Computing Surveys
ACM Computing Surveys  Volume 54, Issue 7
September 2022
778 pages
ISSN:0360-0300
EISSN:1557-7341
DOI:10.1145/3476825
Issue’s Table of Contents
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 ACM 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: 18 July 2021
Accepted: 01 April 2021
Revised: 01 March 2021
Received: 01 October 2019
Published in CSUR Volume 54, Issue 7

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Static analysis
  2. abstraction
  3. analysis techniques
  4. parametric analysis

Qualifiers

  • Research-article
  • Research
  • Refereed

Funding Sources

  • National Research Foundation of Korea (NRF)

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)175
  • Downloads (Last 6 weeks)17
Reflects downloads up to 25 Jan 2025

Other Metrics

Citations

Cited By

View all

View Options

Login options

Full Access

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

HTML Format

View this article in HTML Format.

HTML Format

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media