Review Article

A Survey of Automatic Software Vulnerability Detection, Program Repair, and Defect Prediction Techniques

Table 1

Summary of deep learning technologies on automatic vulnerability detection, automatic program patching, and automatic defect prediction.

ā€‰Method typeAdvantageDisadvantage

Automatic vulnerability detectionCode similarity-based vulnerability detectionSource code-based detects multiple clone types; binary code-based achieves higher detection accuracyFalse negative rate high (source); analytical complexity (binary)
Code pattern-based vulnerability detectionStatic method achieves higher code; coverage dynamic method detects fasterLack run-time information (static); low code coverage (dynamic)

Automatic program patchingGrammar-based program patchingToken-based method error analysis; simple text-based method generates higher quality patchesPoor patches interpretability (token); unacceptable program behavior (tex)
Semantic-based program patchingStatic method achieves good repair effect dynamic method and accurately captures program behaviorLimited type of repair (static); high cost (dynamic)

Automatic defect predictionWithin-project defect predictionEnd-to-end implementation, accurate prediction of defective program modulesPoor expansion
Crossproject defect predictionEffectively integrates dataset resources to better promote new project development practicesExcessive code feature extraction granularity
Just-in-time defect predictionEarlier identifies faulty modules and fine-grained analysis, efficiently identifies the number of defectsLack of extensive training data to train the model