Patents Assigned to Semmle Limited
  • Patent number: 9684492
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for automatically determining configuration properties of a compiler. One of the methods includes determining that an executable of the newly created process is a compiler called by the build system to compile source code of a source code file. In response to the determining, a plurality of configuration properties of the compiler called by the build system are determined, the configuration properties including first properties of a plurality of built-in functions of the compiler, second properties of a plurality of built-in types of the compiler, or both. A compiler emulator is configured to emulate the behavior of the compiler called by the build system using the determined configuration properties. Access to the source code is provided to the compiler emulator configured using the determined configuration properties.
    Type: Grant
    Filed: September 28, 2015
    Date of Patent: June 20, 2017
    Assignee: Semmle Limited
    Inventor: Peter Cawley
  • Patent number: 9678721
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for generated aggregated dependencies between software elements in a code base. One of the methods includes receiving a request to generate implicit dependencies introduced by remote procedure calls in a project. A registration of a remote procedure call is identified, wherein the registration of the remote procedure call specifies a target function and a name for the remote procedure call. An invocation of the remote procedure call using the name for the remote procedure call is identified, wherein the invocation occurs in a source software element of the project. A definition of the target function of the remote procedure call is identified, wherein the target function is defined in a target software element of the project. A new dependency is generated, the new dependency being a dependency from the source software element to the target software element.
    Type: Grant
    Filed: April 4, 2016
    Date of Patent: June 13, 2017
    Assignee: Semmle Limited
    Inventors: Joshua George Hale, Luke James Cartey
  • Patent number: 9678720
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for generated aggregated dependencies between software elements in a code base. One of the methods includes receiving a request to generate implicit dependencies introduced by remote procedure calls in a project. A registration of a remote procedure call is identified, wherein the registration of the remote procedure call specifies a target function and a name for the remote procedure call. An invocation of the remote procedure call using the name for the remote procedure call is identified, wherein the invocation occurs in a source software element of the project. A definition of the target function of the remote procedure call is identified, wherein the target function is defined in a target software element of the project. A new dependency is generated, the new dependency being a dependency from the source software element to the target software element.
    Type: Grant
    Filed: April 4, 2016
    Date of Patent: June 13, 2017
    Assignee: Semmle Limited
    Inventors: Joshua George Hale, Luke James Cartey
  • Patent number: 9672015
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for automatically determining configuration properties of a compiler. One of the methods includes determining that an executable of the newly created process is a compiler called by the build system to compile source code of a source code file. In response to the determining, a plurality of configuration properties of the compiler called by the build system are determined, the configuration properties including first properties of a plurality of built-in functions of the compiler, second properties of a plurality of built-in types of the compiler, or both. A compiler emulator is configured to emulate the behavior of the compiler called by the build system using the determined configuration properties. Access to the source code is provided to the compiler emulator configured using the determined configuration properties.
    Type: Grant
    Filed: September 29, 2015
    Date of Patent: June 6, 2017
    Assignee: Semmle Limited
    Inventor: Peter Cawley
  • Patent number: 9658839
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for generated aggregated dependencies between software elements in a code base. One of the methods includes processing selected software elements as represented by a raw dependency graph and a hierarchy graph to generate data representing an aggregated dependency graph, the aggregated dependency graph having nodes representing the selected software elements and aggregated dependencies between one or more of the selected software elements, wherein each aggregated dependency between a pair of the selected software elements represents that a first software element of the pair, or a descendant of the first software element according to the hierarchy graph, depends, according to the raw dependency graph, on a second software element of the pair or a descendant of the second software element according to the hierarchy graph. The data representing the aggregated dependency graph is provided in response to the request.
    Type: Grant
    Filed: June 6, 2016
    Date of Patent: May 23, 2017
    Assignee: Semmle Limited
    Inventors: Joshua George Hale, Luke James Cartey, Geoffrey White
  • Patent number: 9652226
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for matching and attributing code violations. One of the methods includes receiving a plurality of snapshots of a code base, including data representing a revision graph of the snapshots of the code base and data representing respective violations in each of the plurality of snapshots. A plurality of transitively matched violations in the code base are generated, wherein each transitively matched violation represents a respective sequence of matching violations from a first violation of a first snapshot to a second violation of a second snapshot, wherein each transitively matched violation identifies a respective first violation representing an initial occurrence of a coding defect in the code base and a respective second violation representing a last occurrence of the coding defect in the code base.
    Type: Grant
    Filed: December 29, 2015
    Date of Patent: May 16, 2017
    Assignee: Semmle Limited
    Inventors: Anders Starcke Henriksen, Ricardo Pescuma Domenecci
  • Patent number: 9652359
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for generating natural keys for software annotations. One of the methods includes receiving a source code representation of a collection of source code, the source code having an annotation attached to a particular source code element in the source code. An index is generated for the annotation, the index representing a position of the annotation in an order of all annotations attached to the particular source code element. A natural key is generated for the annotation including combining a key of the particular source code element and the index for the annotation. A data entry is generated for the annotation, the data entry having the natural key for the annotation.
    Type: Grant
    Filed: October 27, 2016
    Date of Patent: May 16, 2017
    Assignee: Semmle Limited
    Inventors: Alexander Spoon, Julian Tibble
  • Patent number: 9652358
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for generating widened types for static analysis. One of the methods includes receiving an output generated by a program parser for a source code file, wherein the output identifies a respective original type for each of one or more source code elements in the source code file. A respective widened type name is generated for each of one or more source code elements in the output, the widened type name being different from an original type name of the original type of the source code element. Static analysis are generated results for the source code file, wherein the static analysis results reference each source code element of the one or more source code elements by a respective widened type name for the source code element instead of by a respective original type name of the source code element.
    Type: Grant
    Filed: May 25, 2016
    Date of Patent: May 16, 2017
    Assignee: Semmle Limited
    Inventor: Alexander Spoon
  • Patent number: 9645817
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for computing a contextual ranking for a developer. One of the methods includes computing a predicted violation value for each developer in a context group. An actual violation value is computed for each developer in the context group. A score for each developer in the context group is computed, wherein the score represents a distance between the actual violation value for the developer and the predicted violation value for the developer. A contextual ranking is generated of the plurality of developers in the context group based on the score for each developer in the context group.
    Type: Grant
    Filed: September 27, 2016
    Date of Patent: May 9, 2017
    Assignee: Semmle Limited
    Inventor: Sebastiaan Johannes van Schaik
  • Patent number: 9645804
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for extracting source code. One of the methods includes receiving, by a newly created process, a request to execute code of an executable file in the newly created process, wherein the request specifies a parameter. The newly created process loads a process interception library. Library initialization code of the process interception library determines whether the parameter should be intercepted. In response to determining that the parameter should be intercepted, the parameter is provided to another process.
    Type: Grant
    Filed: November 8, 2016
    Date of Patent: May 9, 2017
    Assignee: Semmle Limited
    Inventors: Julian Tibble, Pavel Avgustinov, Peter Cawley
  • Patent number: 9639352
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for generating widened types for computing measures of rework normalized churn. One of the methods includes determining a plurality of commit chains for a software developer. Respective measures of rework churn occurring in each commit chain are calculated. An overall rework factor is computed for the developer using the respective measures of rework churn for each commit chain in the plurality of commit chains for the developer. A measure of rework normalized churn is computed for the developer including adjusting the initial measure of churn by the overall rework factor. Productivity of the developer is quantified relative to one or more other developers using the measure of rework normalized churn for the developer.
    Type: Grant
    Filed: October 12, 2016
    Date of Patent: May 2, 2017
    Assignee: Semmle Limited
    Inventors: Sebastiaan Johannes van Schaik, Stephen Philip Buckley, Yorck Huenke
  • Patent number: 9639351
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for matching and attributing code violations. One of the methods includes receiving a plurality of snapshots of a code base, including data representing a revision graph of the snapshots of the code base and data representing respective violations in each of the plurality of snapshots. A plurality of transitively matched violations in the code base are generated, wherein each transitively matched violation represents a respective sequence of matching violations from a first violation of a first snapshot to a second violation of a second snapshot, wherein each transitively matched violation identifies a respective first violation representing an initial occurrence of a coding defect in the code base and a respective second violation representing a last occurrence of the coding defect in the code base.
    Type: Grant
    Filed: December 29, 2015
    Date of Patent: May 2, 2017
    Assignee: Semmle Limited
    Inventors: Anders Starcke Henriksen, Ricardo Pescuma Domenecci
  • Patent number: 9639353
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for evaluating source code developers. One of the methods includes receiving, from a user, a request for a user interface presentation representing an overall performance metric versus a second metric attributed to each responsible entity of a plurality of responsible entities that contributed source code to a project. A user interface presentation is generated, wherein each responsible entity is represented by a graphical element at a position in a display area, the position of the element having one coordinate corresponding to the first measure of the overall contributions contributed by the responsible entity and another coordinate corresponding to the second measure of the second metric attributed to the responsible entity.
    Type: Grant
    Filed: September 19, 2016
    Date of Patent: May 2, 2017
    Assignee: Semmle Limited
    Inventors: Anders Starcke Henriksen, Galen Menzel
  • Patent number: 9632760
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for using tiered arrays to represent aggregated software dependencies. One of the methods includes receiving a request to generate a range of contiguous indexes having non-default values represented by a tiered array, wherein each non-default element of each tier is a reference to a catalog at a lower tier except for a bottom-most tier of the tiered array that stores non-default values. After descending one or more tiers to identify a first index that (i) is greater than or equal to the start index and (ii) has a non-default value, a system ascends one or more tiers in the tiered array and subsequently descends again to identify a second index that is a last index in a contiguous sequence of indexes having non-default values from the first index up to and including the second index.
    Type: Grant
    Filed: May 2, 2016
    Date of Patent: April 25, 2017
    Assignee: Semmle Limited
    Inventor: Joshua George Hale
  • Patent number: 9633078
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for generating identifiers for tuples of recursively defined relations. One of the methods includes selecting one or more of the recursively defined relations to evaluate. Respective keys are computed for each tuple of any new tuples computed during recursive evaluation. For each key that occurs in a cache of keys, obtaining a tuple for the key from the cache and adding the obtained tuple to a new relation. For each key that does not occur in the cache of keys, generating a new identifier for the key, and adding, to a new relation for each key of each tuple of any keys that do not occur in the cache of keys for a relation, a new tuple comprising (1) elements of the tuple and (2) the new identifier for the key.
    Type: Grant
    Filed: September 30, 2016
    Date of Patent: April 25, 2017
    Assignee: Semmle Limited
    Inventors: Alexander Eyers-Taylor, Max Schaefer
  • Patent number: 9619224
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for aggregating source code metric values. One of the methods includes obtaining data representing a directed graph, wherein one or more nodes of the graph are associated with a respective set of one or more metric instances, wherein each set of metric instances for each node includes all metric instances occurring in sets of any node descendant from the node in the graph, wherein each metric instance identifies a location in a source code base, and wherein each metric instance has a respective metric value, a respective identifier, and a respective attribute type. An attribute value is computed for a first node in the graph from the respective metric value of each metric instance in a first set of metric instances associated with the first node.
    Type: Grant
    Filed: July 8, 2015
    Date of Patent: April 11, 2017
    Assignee: Semmle Limited
    Inventors: Julian Tibble, Pavel Avgustinov, Yorck Huenke, Arthur Baars
  • Patent number: 9612850
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for extracting source code. One of the methods includes receiving, by a newly created process, a request to execute code of an executable file in the newly created process, wherein the request specifies a parameter. The newly created process loads a process interception library. Library initialization code of the process interception library determines whether the parameter should be intercepted. In response to determining that the parameter should be intercepted, the parameter is provided to another process.
    Type: Grant
    Filed: July 8, 2015
    Date of Patent: April 4, 2017
    Assignee: Semmle Limited
    Inventors: Julian Tibble, Pavel Avgustinov, Peter Cawley
  • Patent number: 9569341
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for assigning levels of priority to selected source code functions. One of the methods includes for each selected function, a respective associated first set of functions reachable from the selected function by at most N steps, and a respective associated second set of functions that are each reachable from the selected function by more than N steps and less than M steps are computed. A first partition having all selected functions whose respective associated first set of functions has at least one of the subject functions is computed. A second partition having selected functions not in the first partition and whose respective associated second set of functions has at least one of the subject functions is computed. Selected functions belonging to the first partition are assigned a higher priority than selected functions belonging to the second partition.
    Type: Grant
    Filed: May 25, 2016
    Date of Patent: February 14, 2017
    Assignee: Semmle Limited
    Inventor: Sebastiaan Johannes van Schaik
  • Patent number: 9552276
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for generated aggregated dependencies between software elements in a code base. One of the methods includes receiving a query that defines a dependency between the software elements in a project. Searching a database to identify matching source software elements having the one or more source attributes and target software elements having the one or more target attributes of the query. Identifying pairs of matching source software elements and matching target software elements having the specified relationship, and generating, for each pair of matching source software elements and matching target software elements having the specified relationship, a new dependency in a raw dependency graph, the new dependency being a dependency from a source software element of the pair to the target software element of the pair.
    Type: Grant
    Filed: March 17, 2016
    Date of Patent: January 24, 2017
    Assignee: Semmle Limited
    Inventors: Joshua George Hale, Luke James Cartey, Geoffrey White
  • Patent number: RE46380
    Abstract: What is disclosed are a novel system and method for inferring types of database queries. In one embodiment a program and associated database schema that includes a type hierarchy is accessed. The program includes query operations to a database that contains relations described by a database schema. Types are inferred from definitions in the program by replacing each database relationship in the program by the types in the database schema. A new program is generated with the types that have been inferred with the new program only accessing unary relations in the database. In another embodiment, testing of each of the types that have been inferred is performed for type emptiness. In response to type emptiness being found for a type that have been inferred, a variety of different operations are performing including removing the type, providing a notification regarding the emptiness found for the type, and more.
    Type: Grant
    Filed: November 25, 2015
    Date of Patent: April 25, 2017
    Assignee: Semmle Limited
    Inventors: Max Schaefer, Oege de Moor