{"action":"created","comment":{"url":"https://api.github.com/repos/Semmle/ql/pulls/comments/211202687","pull_request_review_id":147572709,"id":211202687,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMTIwMjY4Nw==","diff_hunk":"@@ -0,0 +1,434 @@\n+# QL Style Guide\r\n+\r\n+## Introduction\r\n+\r\n+This document describes how to format the QL code in this repository, covering aspects such as layout, white-space, naming and documentation. Adhering to consistent standards makes code easier to read and maintain. Of course, these are only guidelines, and can be overridden as the need arises on a case-by-case basis. Where existing code deviates from these guidelines, prefer consistency with the surrounding code.\r\n+\r\n+Words in *italic* are defined in the [Glossary](#glossary).\r\n+\r\n+## Indentation\r\n+1. *Always* use 2 spaces for indentation.\r\n+1. *Always* indent:\r\n+   - the *body* of a module, newtype, class or predicate,\r\n+   - the second and subsequent lines after a line break used to split a long line,\r\n+   - the *body* of a `from`, `where` or `select` clause where it spans multiple lines,\r\n+   - the *body* of a *quantifier* that spans multiple lines.\r\n+\r\n+\r\n+Examples:\r\n+\r\n+```ql\r\n+module Helpers {\r\n+  /** ... */\r\n+  class X ... {\r\n+    /** ... */\r\n+    int getNumberOfChildren () {\r\n+      result = count(int child |\r\n+        exists(this.getChild(child))\r\n+      )\r\n+    }\r\n+  }\r\n+}\r\n+```\r\n+\r\n+```ql\r\n+from Call c, string reason\r\n+where isDeprecated(c, reason)\r\n+select c, \"This call to '$@' is deprecated because \" + reason + \".\",\r\n+  c.getTarget(), c.getTarget().getName()\r\n+```\r\n+\r\n+## Line breaks\r\n+1. Use UNIX line endings.\r\n+1. Lines *must not* exceed 100 characters.\r\n+1. Long lines *should* be split with a line break, and the following lines *must* be indented one level until the next \"regular\" line break.\r\n+1. There *should* be a single blank line:\r\n+   - between the file documentation and the first `import`,\r\n+   - before each declaration, except for the first declaration in a *body*,\r\n+   - before the `from`-`where`-`select` section in a query file.\r\n+1. *Avoid* two or more adjacent blank lines.\r\n+1. There *must* be a new line after the *annotations* `cached`, `deprecated`, `pragma`, `language` and `bindingset`.\r\n+1. There *should not* be additional blank lines within a predicate.\r\n+1. There *may* be a new line:\r\n+   - immediately after the `from`, `where` or `select` keywords in a query,\r\n+   - immediately after `if`, `then`, or `else` keywords. The `then` and `else` parts *should* be consistent.\r\n+1. *Avoid* other line breaks in declarations, other than to break long lines.\r\n+1. When operands of *binary operators* span two lines, the operator *should* be placed at the end of the first line.\r\n+\r\n+Examples:\r\n+\r\n+```ql\r\n+cached\r\n+private int getNumberOfParameters() {\r\n+  ...\r\n+}\r\n+```\r\n+\r\n+```ql\r\n+predicate methodStats(string qualifiedName, string name,\r\n+  int numberOfParameters, int numberOfStatements, int numberOfExpressions,\r\n+  int linesOfCode, int nestingDepth, int numberOfBranches) {\r","path":"docs/ql-style-guide.md","position":70,"original_position":70,"commit_id":"c2ad56adce887df5fe858ca4083fedcbd0f1e724","original_commit_id":"68d8b66a1fe02bc4d8fdccb01464bfbca39e9947","user":{"login":"calumgrant","id":42069085,"node_id":"MDQ6VXNlcjQyMDY5MDg1","avatar_url":"https://avatars2.githubusercontent.com/u/42069085?v=4","gravatar_id":"","url":"https://api.github.com/users/calumgrant","html_url":"https://github.com/calumgrant","followers_url":"https://api.github.com/users/calumgrant/followers","following_url":"https://api.github.com/users/calumgrant/following{/other_user}","gists_url":"https://api.github.com/users/calumgrant/gists{/gist_id}","starred_url":"https://api.github.com/users/calumgrant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/calumgrant/subscriptions","organizations_url":"https://api.github.com/users/calumgrant/orgs","repos_url":"https://api.github.com/users/calumgrant/repos","events_url":"https://api.github.com/users/calumgrant/events{/privacy}","received_events_url":"https://api.github.com/users/calumgrant/received_events","type":"User","site_admin":false},"body":"I also prefer putting braces on their own line. However it seems we're outvoted. I've decided to defer discussion on this  -- we should avoid long list of arguments anyway.\r\n\r\nMy own preference is `) {` on its own line.","created_at":"2018-08-20T09:50:14Z","updated_at":"2018-08-20T09:50:14Z","html_url":"https://github.com/Semmle/ql/pull/64#discussion_r211202687","pull_request_url":"https://api.github.com/repos/Semmle/ql/pulls/64","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/Semmle/ql/pulls/comments/211202687"},"html":{"href":"https://github.com/Semmle/ql/pull/64#discussion_r211202687"},"pull_request":{"href":"https://api.github.com/repos/Semmle/ql/pulls/64"}},"in_reply_to_id":210670679},"pull_request":{"url":"https://api.github.com/repos/Semmle/ql/pulls/64","id":208863816,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA4ODYzODE2","html_url":"https://github.com/Semmle/ql/pull/64","diff_url":"https://github.com/Semmle/ql/pull/64.diff","patch_url":"https://github.com/Semmle/ql/pull/64.patch","issue_url":"https://api.github.com/repos/Semmle/ql/issues/64","number":64,"state":"open","locked":false,"title":"QL Style Guide","user":{"login":"calumgrant","id":42069085,"node_id":"MDQ6VXNlcjQyMDY5MDg1","avatar_url":"https://avatars2.githubusercontent.com/u/42069085?v=4","gravatar_id":"","url":"https://api.github.com/users/calumgrant","html_url":"https://github.com/calumgrant","followers_url":"https://api.github.com/users/calumgrant/followers","following_url":"https://api.github.com/users/calumgrant/following{/other_user}","gists_url":"https://api.github.com/users/calumgrant/gists{/gist_id}","starred_url":"https://api.github.com/users/calumgrant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/calumgrant/subscriptions","organizations_url":"https://api.github.com/users/calumgrant/orgs","repos_url":"https://api.github.com/users/calumgrant/repos","events_url":"https://api.github.com/users/calumgrant/events{/privacy}","received_events_url":"https://api.github.com/users/calumgrant/received_events","type":"User","site_admin":false},"body":"Here is the first version of the QL Style Guide. It is based on the Google document that we reviewed recently, and I have taken all of your comments on board. There are still some unresolved issues, for example how to indent long parameter lists, however I think that what we have here is useful enough to be published as-is, and we should definitely carry on discussing and making revisions to this document in the future.\r\n\r\nWe are all agreed that an auto-formatter for QL would be extremely useful.\r\n\r\nI have not put in a link from CONTRIBUTING.md as this might require everyone to re-sign the CLA yet again, however we do need to make this document more apparent somehow.","created_at":"2018-08-16T13:42:25Z","updated_at":"2018-08-20T09:50:14Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ef5f969f907f007e69653efa086a447fdd1ed900","assignee":null,"assignees":[],"requested_reviewers":[{"login":"pavgust","id":1101487,"node_id":"MDQ6VXNlcjExMDE0ODc=","avatar_url":"https://avatars1.githubusercontent.com/u/1101487?v=4","gravatar_id":"","url":"https://api.github.com/users/pavgust","html_url":"https://github.com/pavgust","followers_url":"https://api.github.com/users/pavgust/followers","following_url":"https://api.github.com/users/pavgust/following{/other_user}","gists_url":"https://api.github.com/users/pavgust/gists{/gist_id}","starred_url":"https://api.github.com/users/pavgust/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pavgust/subscriptions","organizations_url":"https://api.github.com/users/pavgust/orgs","repos_url":"https://api.github.com/users/pavgust/repos","events_url":"https://api.github.com/users/pavgust/events{/privacy}","received_events_url":"https://api.github.com/users/pavgust/received_events","type":"User","site_admin":false},{"login":"jonas-semmle","id":21035166,"node_id":"MDQ6VXNlcjIxMDM1MTY2","avatar_url":"https://avatars3.githubusercontent.com/u/21035166?v=4","gravatar_id":"","url":"https://api.github.com/users/jonas-semmle","html_url":"https://github.com/jonas-semmle","followers_url":"https://api.github.com/users/jonas-semmle/followers","following_url":"https://api.github.com/users/jonas-semmle/following{/other_user}","gists_url":"https://api.github.com/users/jonas-semmle/gists{/gist_id}","starred_url":"https://api.github.com/users/jonas-semmle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonas-semmle/subscriptions","organizations_url":"https://api.github.com/users/jonas-semmle/orgs","repos_url":"https://api.github.com/users/jonas-semmle/repos","events_url":"https://api.github.com/users/jonas-semmle/events{/privacy}","received_events_url":"https://api.github.com/users/jonas-semmle/received_events","type":"User","site_admin":false},{"login":"ian-semmle","id":22643163,"node_id":"MDQ6VXNlcjIyNjQzMTYz","avatar_url":"https://avatars3.githubusercontent.com/u/22643163?v=4","gravatar_id":"","url":"https://api.github.com/users/ian-semmle","html_url":"https://github.com/ian-semmle","followers_url":"https://api.github.com/users/ian-semmle/followers","following_url":"https://api.github.com/users/ian-semmle/following{/other_user}","gists_url":"https://api.github.com/users/ian-semmle/gists{/gist_id}","starred_url":"https://api.github.com/users/ian-semmle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ian-semmle/subscriptions","organizations_url":"https://api.github.com/users/ian-semmle/orgs","repos_url":"https://api.github.com/users/ian-semmle/repos","events_url":"https://api.github.com/users/ian-semmle/events{/privacy}","received_events_url":"https://api.github.com/users/ian-semmle/received_events","type":"User","site_admin":false},{"login":"dave-bartolomeo","id":42150477,"node_id":"MDQ6VXNlcjQyMTUwNDc3","avatar_url":"https://avatars0.githubusercontent.com/u/42150477?v=4","gravatar_id":"","url":"https://api.github.com/users/dave-bartolomeo","html_url":"https://github.com/dave-bartolomeo","followers_url":"https://api.github.com/users/dave-bartolomeo/followers","following_url":"https://api.github.com/users/dave-bartolomeo/following{/other_user}","gists_url":"https://api.github.com/users/dave-bartolomeo/gists{/gist_id}","starred_url":"https://api.github.com/users/dave-bartolomeo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dave-bartolomeo/subscriptions","organizations_url":"https://api.github.com/users/dave-bartolomeo/orgs","repos_url":"https://api.github.com/users/dave-bartolomeo/repos","events_url":"https://api.github.com/users/dave-bartolomeo/events{/privacy}","received_events_url":"https://api.github.com/users/dave-bartolomeo/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/Semmle/ql/pulls/64/commits","review_comments_url":"https://api.github.com/repos/Semmle/ql/pulls/64/comments","review_comment_url":"https://api.github.com/repos/Semmle/ql/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Semmle/ql/issues/64/comments","statuses_url":"https://api.github.com/repos/Semmle/ql/statuses/c2ad56adce887df5fe858ca4083fedcbd0f1e724","head":{"label":"calumgrant:ql-style-guide","ref":"ql-style-guide","sha":"c2ad56adce887df5fe858ca4083fedcbd0f1e724","user":{"login":"calumgrant","id":42069085,"node_id":"MDQ6VXNlcjQyMDY5MDg1","avatar_url":"https://avatars2.githubusercontent.com/u/42069085?v=4","gravatar_id":"","url":"https://api.github.com/users/calumgrant","html_url":"https://github.com/calumgrant","followers_url":"https://api.github.com/users/calumgrant/followers","following_url":"https://api.github.com/users/calumgrant/following{/other_user}","gists_url":"https://api.github.com/users/calumgrant/gists{/gist_id}","starred_url":"https://api.github.com/users/calumgrant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/calumgrant/subscriptions","organizations_url":"https://api.github.com/users/calumgrant/orgs","repos_url":"https://api.github.com/users/calumgrant/repos","events_url":"https://api.github.com/users/calumgrant/events{/privacy}","received_events_url":"https://api.github.com/users/calumgrant/received_events","type":"User","site_admin":false},"repo":{"id":143434552,"node_id":"MDEwOlJlcG9zaXRvcnkxNDM0MzQ1NTI=","name":"ql","full_name":"calumgrant/ql","owner":{"login":"calumgrant","id":42069085,"node_id":"MDQ6VXNlcjQyMDY5MDg1","avatar_url":"https://avatars2.githubusercontent.com/u/42069085?v=4","gravatar_id":"","url":"https://api.github.com/users/calumgrant","html_url":"https://github.com/calumgrant","followers_url":"https://api.github.com/users/calumgrant/followers","following_url":"https://api.github.com/users/calumgrant/following{/other_user}","gists_url":"https://api.github.com/users/calumgrant/gists{/gist_id}","starred_url":"https://api.github.com/users/calumgrant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/calumgrant/subscriptions","organizations_url":"https://api.github.com/users/calumgrant/orgs","repos_url":"https://api.github.com/users/calumgrant/repos","events_url":"https://api.github.com/users/calumgrant/events{/privacy}","received_events_url":"https://api.github.com/users/calumgrant/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/calumgrant/ql","description":null,"fork":true,"url":"https://api.github.com/repos/calumgrant/ql","forks_url":"https://api.github.com/repos/calumgrant/ql/forks","keys_url":"https://api.github.com/repos/calumgrant/ql/keys{/key_id}","collaborators_url":"https://api.github.com/repos/calumgrant/ql/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/calumgrant/ql/teams","hooks_url":"https://api.github.com/repos/calumgrant/ql/hooks","issue_events_url":"https://api.github.com/repos/calumgrant/ql/issues/events{/number}","events_url":"https://api.github.com/repos/calumgrant/ql/events","assignees_url":"https://api.github.com/repos/calumgrant/ql/assignees{/user}","branches_url":"https://api.github.com/repos/calumgrant/ql/branches{/branch}","tags_url":"https://api.github.com/repos/calumgrant/ql/tags","blobs_url":"https://api.github.com/repos/calumgrant/ql/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/calumgrant/ql/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/calumgrant/ql/git/refs{/sha}","trees_url":"https://api.github.com/repos/calumgrant/ql/git/trees{/sha}","statuses_url":"https://api.github.com/repos/calumgrant/ql/statuses/{sha}","languages_url":"https://api.github.com/repos/calumgrant/ql/languages","stargazers_url":"https://api.github.com/repos/calumgrant/ql/stargazers","contributors_url":"https://api.github.com/repos/calumgrant/ql/contributors","subscribers_url":"https://api.github.com/repos/calumgrant/ql/subscribers","subscription_url":"https://api.github.com/repos/calumgrant/ql/subscription","commits_url":"https://api.github.com/repos/calumgrant/ql/commits{/sha}","git_commits_url":"https://api.github.com/repos/calumgrant/ql/git/commits{/sha}","comments_url":"https://api.github.com/repos/calumgrant/ql/comments{/number}","issue_comment_url":"https://api.github.com/repos/calumgrant/ql/issues/comments{/number}","contents_url":"https://api.github.com/repos/calumgrant/ql/contents/{+path}","compare_url":"https://api.github.com/repos/calumgrant/ql/compare/{base}...{head}","merges_url":"https://api.github.com/repos/calumgrant/ql/merges","archive_url":"https://api.github.com/repos/calumgrant/ql/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/calumgrant/ql/downloads","issues_url":"https://api.github.com/repos/calumgrant/ql/issues{/number}","pulls_url":"https://api.github.com/repos/calumgrant/ql/pulls{/number}","milestones_url":"https://api.github.com/repos/calumgrant/ql/milestones{/number}","notifications_url":"https://api.github.com/repos/calumgrant/ql/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/calumgrant/ql/labels{/name}","releases_url":"https://api.github.com/repos/calumgrant/ql/releases{/id}","deployments_url":"https://api.github.com/repos/calumgrant/ql/deployments","created_at":"2018-08-03T14:02:43Z","updated_at":"2018-08-03T14:02:55Z","pushed_at":"2018-08-17T17:15:03Z","git_url":"git://github.com/calumgrant/ql.git","ssh_url":"git@github.com:calumgrant/ql.git","clone_url":"https://github.com/calumgrant/ql.git","svn_url":"https://github.com/calumgrant/ql","homepage":null,"size":5185,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Semmle:master","ref":"master","sha":"692f4161433c0f439dce48fcf6a0359442d8fe59","user":{"login":"Semmle","id":1101495,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMDE0OTU=","avatar_url":"https://avatars0.githubusercontent.com/u/1101495?v=4","gravatar_id":"","url":"https://api.github.com/users/Semmle","html_url":"https://github.com/Semmle","followers_url":"https://api.github.com/users/Semmle/followers","following_url":"https://api.github.com/users/Semmle/following{/other_user}","gists_url":"https://api.github.com/users/Semmle/gists{/gist_id}","starred_url":"https://api.github.com/users/Semmle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Semmle/subscriptions","organizations_url":"https://api.github.com/users/Semmle/orgs","repos_url":"https://api.github.com/users/Semmle/repos","events_url":"https://api.github.com/users/Semmle/events{/privacy}","received_events_url":"https://api.github.com/users/Semmle/received_events","type":"Organization","site_admin":false},"repo":{"id":143040428,"node_id":"MDEwOlJlcG9zaXRvcnkxNDMwNDA0Mjg=","name":"ql","full_name":"Semmle/ql","owner":{"login":"Semmle","id":1101495,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMDE0OTU=","avatar_url":"https://avatars0.githubusercontent.com/u/1101495?v=4","gravatar_id":"","url":"https://api.github.com/users/Semmle","html_url":"https://github.com/Semmle","followers_url":"https://api.github.com/users/Semmle/followers","following_url":"https://api.github.com/users/Semmle/following{/other_user}","gists_url":"https://api.github.com/users/Semmle/gists{/gist_id}","starred_url":"https://api.github.com/users/Semmle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Semmle/subscriptions","organizations_url":"https://api.github.com/users/Semmle/orgs","repos_url":"https://api.github.com/users/Semmle/repos","events_url":"https://api.github.com/users/Semmle/events{/privacy}","received_events_url":"https://api.github.com/users/Semmle/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Semmle/ql","description":null,"fork":false,"url":"https://api.github.com/repos/Semmle/ql","forks_url":"https://api.github.com/repos/Semmle/ql/forks","keys_url":"https://api.github.com/repos/Semmle/ql/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Semmle/ql/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Semmle/ql/teams","hooks_url":"https://api.github.com/repos/Semmle/ql/hooks","issue_events_url":"https://api.github.com/repos/Semmle/ql/issues/events{/number}","events_url":"https://api.github.com/repos/Semmle/ql/events","assignees_url":"https://api.github.com/repos/Semmle/ql/assignees{/user}","branches_url":"https://api.github.com/repos/Semmle/ql/branches{/branch}","tags_url":"https://api.github.com/repos/Semmle/ql/tags","blobs_url":"https://api.github.com/repos/Semmle/ql/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Semmle/ql/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Semmle/ql/git/refs{/sha}","trees_url":"https://api.github.com/repos/Semmle/ql/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Semmle/ql/statuses/{sha}","languages_url":"https://api.github.com/repos/Semmle/ql/languages","stargazers_url":"https://api.github.com/repos/Semmle/ql/stargazers","contributors_url":"https://api.github.com/repos/Semmle/ql/contributors","subscribers_url":"https://api.github.com/repos/Semmle/ql/subscribers","subscription_url":"https://api.github.com/repos/Semmle/ql/subscription","commits_url":"https://api.github.com/repos/Semmle/ql/commits{/sha}","git_commits_url":"https://api.github.com/repos/Semmle/ql/git/commits{/sha}","comments_url":"https://api.github.com/repos/Semmle/ql/comments{/number}","issue_comment_url":"https://api.github.com/repos/Semmle/ql/issues/comments{/number}","contents_url":"https://api.github.com/repos/Semmle/ql/contents/{+path}","compare_url":"https://api.github.com/repos/Semmle/ql/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Semmle/ql/merges","archive_url":"https://api.github.com/repos/Semmle/ql/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Semmle/ql/downloads","issues_url":"https://api.github.com/repos/Semmle/ql/issues{/number}","pulls_url":"https://api.github.com/repos/Semmle/ql/pulls{/number}","milestones_url":"https://api.github.com/repos/Semmle/ql/milestones{/number}","notifications_url":"https://api.github.com/repos/Semmle/ql/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Semmle/ql/labels{/name}","releases_url":"https://api.github.com/repos/Semmle/ql/releases{/id}","deployments_url":"https://api.github.com/repos/Semmle/ql/deployments","created_at":"2018-07-31T16:35:51Z","updated_at":"2018-08-20T07:15:46Z","pushed_at":"2018-08-20T07:39:29Z","git_url":"git://github.com/Semmle/ql.git","ssh_url":"git@github.com:Semmle/ql.git","clone_url":"https://github.com/Semmle/ql.git","svn_url":"https://github.com/Semmle/ql","homepage":null,"size":5281,"stargazers_count":21,"watchers_count":21,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":23,"mirror_url":null,"archived":false,"open_issues_count":17,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":23,"open_issues":17,"watchers":21,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Semmle/ql/pulls/64"},"html":{"href":"https://github.com/Semmle/ql/pull/64"},"issue":{"href":"https://api.github.com/repos/Semmle/ql/issues/64"},"comments":{"href":"https://api.github.com/repos/Semmle/ql/issues/64/comments"},"review_comments":{"href":"https://api.github.com/repos/Semmle/ql/pulls/64/comments"},"review_comment":{"href":"https://api.github.com/repos/Semmle/ql/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Semmle/ql/pulls/64/commits"},"statuses":{"href":"https://api.github.com/repos/Semmle/ql/statuses/c2ad56adce887df5fe858ca4083fedcbd0f1e724"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"calumgrant"}}