Patents Assigned to Semmle Limited
  • Patent number: 9547478
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for performing hierarchical dependency analysis using disjoint-or trees. One of the methods includes receiving, from a user, a request to remove a node from a hierarchy, wherein the hierarchy is a directed graph having nodes and links, wherein each node in the hierarchy represents a software element in the project and each directed link in the hierarchy connects a corresponding pair of nodes and represents containment of a child software element represented by a first node of the pair by a parent software element represented by a second node of the pair. If a parent element of a disjoint-or tree corresponds to a parent node of the removed node, a union of dependencies for the removed node is determined. The union of dependencies is then subtracted from the parent element and from every ancestor element of the parent element.
    Type: Grant
    Filed: September 30, 2015
    Date of Patent: January 17, 2017
    Assignee: Semmle Limited
    Inventor: Joshua George Hale
  • Patent number: 9529836
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for managing disjoint-or trees. One of the methods includes determining that a disjoint-or tree occupies more memory than a maximum memory limit. One or more elements of the disjoint-or tree are selected for removal. If a particular leaf element selected for removal has a parent element with a status indicator of complete, data of the particular leaf element is added to a compound leaf element, the compound leaf element being a child element of the parent element and having data associated with the particular leaf element and one or more other sibling leaf elements. The particular leaf element is then removed from the disjoint-or tree without propagating changes associated with removing the particular leaf element to all the ancestors of the particular leaf element.
    Type: Grant
    Filed: September 30, 2015
    Date of Patent: December 27, 2016
    Assignee: Semmle Limited
    Inventor: Joshua George Hale
  • Patent number: 9507591
    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 snapshot S of a code base of source code and a different snapshot T of the code base. Data representing first violations in the snapshot S and second violations in the snapshot T is received. Pairs of matching violations are determined using performing two or more matching processes, including performing a first matching process, the first matching process determining first pairs of matching violations according to a first matching algorithm and performing a second matching process, the second matching process determining second pairs of matching violations according to a second matching algorithm from violations not matched by the first matching process. The first pairs of matching violations and the second pairs of matching violations are included in the determined pairs of matching violations.
    Type: Grant
    Filed: January 5, 2016
    Date of Patent: November 29, 2016
    Assignee: Semmle Limited
    Inventors: Anders Starcke Henriksen, Arthur Baars, Pavel Avgustinov, Julian Tibble, Max Schaefer, Oege de Moor
  • Patent number: 9507694
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for generating normalized analysis artifacts for a source code base. One of the methods includes receiving a request to perform an analysis of a collection of source code files in a particular file system, wherein each source code file in the particular file system has a respective associated original file path. One or more normalized analysis artifacts are generated for the collection of source code files, including applying a file path transformation function to the original file path of each source code file referenced by the analysis artifacts to generate a normalized file path for the source code file, wherein each reference in the normalized analysis artifacts to a particular source code file uses the normalized file path for the particular source code file instead of the original file path for the particular source code file.
    Type: Grant
    Filed: October 30, 2015
    Date of Patent: November 29, 2016
    Assignee: Semmle Limited
    Inventors: Julian Tibble, Pavel Avgustinov
  • Patent number: 9507590
    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 9, 2014
    Date of Patent: November 29, 2016
    Assignee: Semmle Limited
    Inventors: Anders Starcke Henriksen, Ricardo Pescuma Domenecci
  • Patent number: 9489182
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for transparently instrumenting a build system. One of the methods includes setting, in an execution environment of a computer system, a first environment variable that specifies a custom agent to be executed in the execution environment. A request by the system to create a virtual machine using a default create VM function is intercepted by a custom create VM function. The custom create VM function removes the first environment variable from the execution environment, and the custom create VM function executes the default create VM function to invoke a VM having the custom agent without the execution environment having the first environment variable being set.
    Type: Grant
    Filed: November 20, 2015
    Date of Patent: November 8, 2016
    Assignee: Semmle Limited
    Inventor: Peter Cawley
  • Patent number: 9477445
    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: October 25, 2016
    Assignee: Semmle Limited
    Inventors: Joshua George Hale, Luke James Cartey
  • Patent number: 9417985
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for distributing analysis tasks and attribution tasks. One of the methods includes receiving data representing a plurality of snapshots of a code base, wherein each snapshot comprises source code files, wherein one or more snapshots have a parent snapshot in the code base according to a revision graph of snapshots in the code base. An attribution set is generated from the plurality of snapshots, the attribution set having a target set of attributable snapshots to be attributed and a support set of all parent snapshots of all snapshots in the target set. An attribution task is distributed for the attribution set to a particular worker node of a plurality of worker nodes.
    Type: Grant
    Filed: November 13, 2015
    Date of Patent: August 16, 2016
    Assignee: Semmle Limited
    Inventors: Arthur Baars, Anders Starcke Henriksen, Max Schaefer
  • Patent number: 9418111
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for expressing and evaluating aggregation functions, including aggregation functions in the context of recursive aggregates, in data languages that implement fixed point semantics. One of the methods includes receiving input specifying, explicitly or implicitly, an aggregation function agg having an input type and an output type, a relation s that has a domain and a range and that represents one or more entities to be aggregated over, and a relation t that is a relation from the range of s to the input type of the aggregation function agg; and evaluating an aggregation construct agg* to calculate a relation between the domain of s and the output type of the aggregation function agg according to agg*(s,t)={(m,agg(n))|?d:(m,d)?s,n??{|t(y)|y?s(m)|}}.
    Type: Grant
    Filed: April 6, 2015
    Date of Patent: August 16, 2016
    Assignee: Semmle Limited
    Inventor: Oege de Moor
  • Patent number: 9411557
    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 user-specified model architecture of software elements in a project, wherein the model architecture is a hierarchy graph having leaf nodes that represent user-selected portions of the project, and one or more non-leaf nodes, wherein each non-leaf node is a parent node of a user-specified group of leaf nodes, non-leaf nodes, or both. An aggregated dependency graph is generated from the user-specified model architecture. A presentation is generated of the aggregated dependency graph for the model architecture, wherein the presentation displays aggregated dependencies between the user-selected nodes of the model architecture.
    Type: Grant
    Filed: September 30, 2015
    Date of Patent: August 9, 2016
    Assignee: Semmle Limited
    Inventors: Luke James Cartey, Joshua George Hale
  • Patent number: 9411707
    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: September 30, 2015
    Date of Patent: August 9, 2016
    Assignee: Semmle Limited
    Inventors: Joshua George Hale, Luke James Cartey
  • Patent number: 9411578
    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 snapshot S of a code base of source code and a different snapshot T of the code base. Data representing first violations in the snapshot S and second violations in the snapshot T is received. Pairs of matching violations are determined using performing two or more matching processes, including performing a first matching process, the first matching process determining first pairs of matching violations according to a first matching algorithm and performing a second matching process, the second matching process determining second pairs of matching violations according to a second matching algorithm from violations not matched by the first matching process. The first pairs of matching violations and the second pairs of matching violations are included in the determined pairs of matching violations.
    Type: Grant
    Filed: July 8, 2015
    Date of Patent: August 9, 2016
    Assignee: Semmle Limited
    Inventors: Anders Starcke Henriksen, Arthur Baars, Pavel Avgustinov, Julian Tibble, Max Schaefer, Oege de Moor
  • Patent number: 9411706
    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 determining that a cycle exists in the aggregated dependency graph, determining which of the links in the cycle has a lowest weight, and adding a first link in the cycle having the lowest weight to a set of candidate removable links. The links in the set of candidate removable links are classified as candidate removable links, and a user interface presentation is provided that presents the aggregated dependency graph and which visually distinguishes removable links from other links in the aggregated dependency graph.
    Type: Grant
    Filed: September 30, 2015
    Date of Patent: August 9, 2016
    Assignee: Semmle Limited
    Inventor: Sebastiaan Johannes van Schaik
  • Patent number: 9305279
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for ranking developers. One of the methods includes obtaining data representing a plurality of developer actions for a developer, obtaining a net violation baseline for the code base, wherein the net violation baseline represents a measure of violation introductions compared to violation removals by a typical high-productivity developer of the code base, obtaining a developer action baseline for the code base, the developer action baseline representing a number of developer actions for the typical high-productivity developer of the code base. A net violation value and a developer action value are computed for the developer. A score is computed for developer including comparing the sum of the net violation value and the net violation baseline to the sum of the developer action value and the developer action baseline. The developer is ranked relative to other developers by the score.
    Type: Grant
    Filed: November 6, 2014
    Date of Patent: April 5, 2016
    Assignee: Semmle Limited
    Inventor: Galen Menzel
  • Patent number: 9262157
    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 snapshot S of a code base of source code and a different snapshot T of the code base. Data representing first violations in the snapshot S and second violations in the snapshot T is received. Pairs of matching violations are determined using performing two or more matching processes, including performing a first matching process, the first matching process determining first pairs of matching violations according to a first matching algorithm and performing a second matching process, the second matching process determining second pairs of matching violations according to a second matching algorithm from violations not matched by the first matching process. The first pairs of matching violations and the second pairs of matching violations are included in the determined pairs of matching violations.
    Type: Grant
    Filed: April 24, 2015
    Date of Patent: February 16, 2016
    Assignee: Semmle Limited
    Inventors: Anders Starcke Henriksen, Arthur Baars, Pavel Avgustinov, Julian Tibble, Max Schaefer, Oege de Moor
  • Patent number: 9262132
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for displaying updated static analysis results within an integrated development environment (IDE) using incremental build information. One of the methods includes receiving, by a static analysis plug-in of an integrated development environment (IDE) application installed on a user device, incremental build information. A plurality of extraction commands are generated from the incremental build information, and source code is extracted from the one or more source code files according to the plurality of generated extraction commands. Updated static analysis results are generated and presented to a user within the IDE.
    Type: Grant
    Filed: April 13, 2015
    Date of Patent: February 16, 2016
    Assignee: Semmle Limited
    Inventor: John Alexander Lugton
  • Patent number: 9110737
    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: May 30, 2014
    Date of Patent: August 18, 2015
    Assignee: Semmle Limited
    Inventors: Julian Tibble, Pavel Avgustinov, Peter Cawley
  • Patent number: 9015193
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for expressing and evaluating aggregation functions, including aggregation functions in the context of recursive aggregates, in data languages that implement fixed point semantics. One of the methods includes receiving input specifying, explicitly or implicitly, an aggregation function agg having an input type and an output type, a relation s that has a domain and a range and that represents one or more entities to be aggregated over, and a relation t that is a relation from the range of s to the input type of the aggregation function agg; and evaluating an aggregation construct agg* to calculate a relation between the domain of s and the output type of the aggregation function agg according to agg*(s, t)={(m, agg(n))|?d: (m,d)?s,n??{|t(y)|y?s(m)|}}.
    Type: Grant
    Filed: May 30, 2014
    Date of Patent: April 21, 2015
    Assignee: Semmle Limited
    Inventor: Oege de Moor
  • Patent number: 8595213
    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: July 15, 2011
    Date of Patent: November 26, 2013
    Assignee: Semmle Limited
    Inventors: Max Schaefer, Oege de Moor
  • Patent number: 8554782
    Abstract: A novel system, computer readable storage medium and method for creating re-usable queries over complex data including hierarchies, trees and graphs is described. This is achieved by an object-oriented query language, where a class is a logical property of a data item, and inheritance is implication between such properties. Virtual method calls execute all relevant method implementations in most specific classes. Expressions can be multi-valued, thus avoiding the need for naming intermediate results. All constructs closely follow the syntax of mainstream object-oriented languages like Java.
    Type: Grant
    Filed: March 19, 2012
    Date of Patent: October 8, 2013
    Assignee: Semmle Limited
    Inventors: Mathieu Verbaere, Oege De Moor, Elnar Hajiyev