Patents by Inventor Joshua George Hale

Joshua George Hale has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Patent number: 9830478
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for receiving an encrypted version of an obfuscated stack trace representing an error generated by error handling code of obfuscated code executed by a user device, the obfuscated stack trace having obfuscated code element names corresponding to deobfuscated code element names in a deobfuscated version of the code; decrypting the encrypted stack trace to generate an obfuscated stack trace; receiving an encrypted obfuscation log that maps obfuscated code element names of the obfuscated code executed by the user device to deobfuscated code element names in the deobfuscated version of the code; decrypting the encrypted obfuscation log to generate a decrypted obfuscation log; and generating a deobfuscated stack trace using the decrypted obfuscation log, the deobfuscated stack trace having deobfuscated code element names.
    Type: Grant
    Filed: July 20, 2015
    Date of Patent: November 28, 2017
    Assignee: Semmle Limited
    Inventor: Joshua George Hale
  • 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: 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: 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
  • Publication number: 20170090890
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for computing virtual compositions. One of the methods includes receiving a request to compute a virtual disjunction over three or more tiered arrays. Respective ranges of contiguously set indexes in the arrays are repeatedly compared until the end of all of the arrays is reached, including, on each iteration, determining a smallest start index n0 among current ranges of the arrays, wherein the smallest start index n0 is the first set index in a range [n0,n1], determining whether any of other arrays have overlapping ranges that extend the range [n0,n1] in the virtual conjunction, updating n1 for each other array having an overlapping range that extends the current range, outputting the range [n0,n1] the updated value for n1, and determining a next range starting at or after n1+2 for each of the arrays.
    Type: Application
    Filed: September 30, 2015
    Publication date: March 30, 2017
    Inventor: Joshua George Hale
  • Publication number: 20170090876
    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: Application
    Filed: April 4, 2016
    Publication date: March 30, 2017
    Inventors: Joshua George Hale, Luke James Cartey
  • Publication number: 20170090888
    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: Application
    Filed: May 2, 2016
    Publication date: March 30, 2017
    Inventor: Joshua George Hale
  • Publication number: 20170090889
    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: Application
    Filed: June 6, 2016
    Publication date: March 30, 2017
    Inventors: Joshua George Hale, Luke James Cartey, Geoffrey White
  • Publication number: 20170090877
    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: Application
    Filed: April 4, 2016
    Publication date: March 30, 2017
    Inventors: Joshua George Hale, Luke James Cartey
  • 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: 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: 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: 9411556
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for inlining software dependencies. One of the methods includes receiving data representing dependencies between software elements in a project, wherein the plurality of software elements includes a first software element that includes a usage of a template parameterized by a type, a second software element that is or occurs within a definition of the template, and a third software element. If the dependencies include a first dependency of the first software element on the second software element, and a second dependency of the second software element on the third software element, the second dependency is removed and a new dependency is generated of (i) the first software element on (ii) the third software element.
    Type: Grant
    Filed: September 30, 2015
    Date of Patent: August 9, 2016
    Inventors: Peter Cawley, Joshua George Hale, Luke James Cartey, Geoffrey White
  • 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: 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: 9372670
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for relocating template dependencies. One of the methods includes determining that dependencies in a dependency graph include a first dependency of a first node representing the first software element that includes a usage of a template parameterized by a type on a second node representing a second software element that is or occurs within a definition of the template, and a second dependency of the second node representing second software element on a third node representing the third software element that defines the type. In response, the dependency graph is modified including generating a new node in the dependency graph, the new node representing the instantiation of the template with the type, adding a new first dependency from the first node to the new node, and adding a new second dependency from the new node to the third node.
    Type: Grant
    Filed: September 30, 2015
    Date of Patent: June 21, 2016
    Inventors: Luke James Cartey, Joshua George Hale, Geoffrey White
  • Patent number: 9367425
    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for using disjoint-or trees to cache aggregated dependencies. One of the methods includes receiving a request to compute a set of software dependencies inbound to or outbound from a node or any descendant of the node in a hierarchy of software elements in a software project. If the node of the hierarchy is important enough to cache in the disjoint-or tree, a new element is generated in the disjoint-or tree corresponding to the node. A set of dependencies for the new element is computed as a union of one or more sets of dependencies associated with the node and any descendants of the node in the hierarchy, and the computed set of dependencies are associated with the new element in the disjoint-or tree corresponding to the node.
    Type: Grant
    Filed: September 30, 2015
    Date of Patent: June 14, 2016
    Inventor: Joshua George Hale
  • Patent number: 9361077
    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: September 30, 2015
    Date of Patent: June 7, 2016
    Inventors: Joshua George Hale, Luke James Cartey, Geoffrey White