US 11,983,091 B2
Adaptively generated program model
Julian Thome, Esch-sur-Alzette (LU); Isaac Dawson, Yokohama (JP); James Johnson, Sammamish, WA (US); Zach Rice, Riverside, IL (US); Daniel Searles, Spearfish, SD (US); Lucas Charles, Portland, OR (US); Mark Art, San Francisco, CA (US); Taylor McCaslin, Bozeman, MT (US); Thomas Woodham, Greer, SC (US); and Todd Stadelhofer, Portland, OR (US)
Assigned to GitLab B.V., Amsterdam (NL)
Filed by GitLab B.V., Amsterdam (NL)
Filed on Mar. 25, 2022, as Appl. No. 17/705,190.
Prior Publication US 2023/0305942 A1, Sep. 28, 2023
Int. Cl. G06F 9/44 (2018.01); G06F 8/71 (2018.01); G06F 11/36 (2006.01)
CPC G06F 11/3608 (2013.01) [G06F 8/71 (2013.01)] 18 Claims
OG exemplary drawing
 
1. A system for adaptively generating a program model, comprising:
one or more processors; and
memory operatively coupled to the one or more processors, the memory comprising instructions that, when executed by the one or more processors, cause the one or more processors to:
receive source code of a program to be tested for code issues;
receive a set of predefined patterns to be tested in the source code;
generate feature configuration data by determining a set of features corresponding to the received set of predefined patterns;
identify a set of program models by selecting, for each feature in the set of features, one or more program models from a plurality of program models that are needed to evaluate the feature;
build a dynamic program model based on the identified set of program models, wherein the dynamic program model is adapted to resolve each of the patterns included in the received set of predefined patterns; and
test the source code for code issues by extracting from the dynamic program model instances of each of the set of predefined patterns,
wherein the instructions that cause the one or more processors to identify the set of program models comprise instructions that, when executed by the one or more processors, cause the one or more processors to:
receive model lookup data indicating predefined relationships between a plurality of features and respective program models that are optimized to satisfy the plurality of features;
perform, for each feature in the set of features, a model lookup operation using the received model lookup data to identify a corresponding program model that is optimized for satisfying the feature; and
identify the set of program models based on the model lookup operation performed for each feature in the set of features.