A system comprising: one or more processors and a memory; one or more modules, wherein the one or more modules are configured to be executed by the one or more processors to perform actions that: obtain historical data of changes made to at least one source code file; extract change features from the historical data, the change features including a bug density, an addition factor and a deletion factor; apply a time weight to each of the change features, the time weight based on a time changes were made to the at least one source code file; extract complexity features from the at least one source code file, the complexity features including counts of a plurality of programming elements in the at least one source code file; associate a label with each of a plurality of feature vectors, a feature vector including the weighted change features and the complexity features, wherein the label classifies the feature vector as having a software bug or not having a software bug, wherein the label is based on comments in a commit record indicating a reason for a change; and train a classifier machine learning model on the plurality of feature vectors and labels to predict a likelihood that a source code file will have a software bug. one or more processors and a memory; one or more modules, wherein the one or more modules are configured to be executed by the one or more processors to perform actions that: obtain historical data of changes made to at least one source code file; extract change features from the historical data, the change features including a bug density, an addition factor and a deletion factor; apply a time weight to each of the change features, the time weight based on a time changes were made to the at least one source code file; extract complexity features from the at least one source code file, the complexity features including counts of a plurality of programming elements in the at least one source code file; associate a label with each of a plurality of feature vectors, a feature vector including the weighted change features and the complexity features, wherein the label classifies the feature vector as having a software bug or not having a software bug, wherein the label is based on comments in a commit record indicating a reason for a change; and train a classifier machine learning model on the plurality of feature vectors and labels to predict a likelihood that a source code file will have a software bug. obtain historical data of changes made to at least one source code file; extract change features from the historical data, the change features including a bug density, an addition factor and a deletion factor; apply a time weight to each of the change features, the time weight based on a time changes were made to the at least one source code file; extract complexity features from the at least one source code file, the complexity features including counts of a plurality of programming elements in the at least one source code file; associate a label with each of a plurality of feature vectors, a feature vector including the weighted change features and the complexity features, wherein the label classifies the feature vector as having a software bug or not having a software bug, wherein the label is based on comments in a commit record indicating a reason for a change; and train a classifier machine learning model on the plurality of feature vectors and labels to predict a likelihood that a source code file will have a software bug.