2016 · 27 citations · 22 references
ComputingComputer SciencePredictive AnalyticsProgramming LanguagesSoftware EngineeringControl-flow AnalysisData-flow AnalysisSoftware TestingStatic Code AnalysisSymbolic ExecutionAutomated Bug FindingConstraintsDynamic Program AnalysisProgram Trace AnalysisSymbolic Modeling
Python is a popular dynamic language that allows quick software development. However, Python program analysis engines are largely lacking. In this paper, we present a Python predictive analysis. It first collects the trace of an execution, and then encodes the trace and unexecuted branches to symbolic constraints. Symbolic variables are introduced to denote input values, their dynamic types, and attribute sets, to reason about their variations. Solving the constraints identifies bugs and their triggering inputs. Our evaluation shows that the technique is highly effective in analyzing real-world complex programs with a lot of dynamic features and external library calls, due to its sophisticated encoding design based on traces. It identifies 46 bugs from 11 real-world projects, with 16 new bugs. All reported bugs are true positives.
22
Patrice Godefroid, Nils Klarlund, Koushik Sen · ACM SIGPLAN Notices · 2005 · 2.1K citations
Patrice Godefroid, Nils Klarlund, Koushik Sen · 2005 · 1.5K citations
Program Analysis and Specialization for the C Programming Language
Lars Ole Andersen, Peter Lee · 2005 · 920 citations
Jalangi: a selective record-replay and dynamic analysis framework for JavaScript
Koushik Sen, Swaroop Kalasapur, Tasneem Brutch et al. · 2013 · 271 citations
A framework for automated testing of javascript web applications
Shay Artzi, Julian Dolby, Simon Holm Jensen et al. · 2011 · 206 citations