{"action":"created","comment":{"url":"https://api.github.com/repos/palantir/gradle-baseline/pulls/comments/170308223","pull_request_review_id":98981387,"id":170308223,"diff_hunk":"@@ -1,129 +1,154 @@\n-# Code Reviews\n-\n-![alt codeQuality](https://imgs.xkcd.com/comics/code_quality.png \"Code Quality\")\n+# Code reviews\n+\n+![XKCD Code Quality](https://imgs.xkcd.com/comics/code_quality.png)\n+[XKCD 'Code Quality', copied under CC BY-NC 2.5](https://xkcd.com/1513/)\n+\n+The Internet provides a wealth of material on code reviews: \n+[on the effect of code review on company culture](https://blog.fullstory.com/what-we-learned-from-google-code-reviews-arent-just-for-catching-bugs/),\n+[on formal security reviews](https://www.owasp.org/images/2/2e/OWASP_Code_Review_Guide-V1_1.pdf),\n+[shorter guides](https://github.com/thoughtbot/guides/tree/master/code-review),\n+[longer checklists](https://www.codeproject.com/Articles/524235/Codeplusreviewplusguidelines),\n+[humanized reviews](http://www.processimpact.com/articles/humanizing_reviews.html),\n+[reasons for doing code reviews in the first place](https://smartbear.com/learn/code-review/why-review-code/),\n+[best practices](https://smartbear.com/learn/code-review/best-practices-for-peer-code-review/),\n+[more best practices](https://www.atlassian.com/agile/software-development/code-reviews),\n+[statistics on code review effectiveness for catching bugs](https://blog.codinghorror.com/code-reviews-just-do-it/),\n+and [examples of code reviews gone wrong](https://blog.fogcreek.com/effective-code-reviews-9-tips-from-a-converted-skeptic/).\n+Oh, and of course there is are\n+[books](https://books.google.com/books/about/Peer_Reviews_in_Software.html?id=d7BQAAAAMAAJ),\n+too.  Long story short, this document presents Palantir's take on code reviews.\n+Organizations with deep cultural reluctance to peer reviews may want to consult\n+Karl E. Wiegers' excellent essay on [Humanizing Peer Reviews](http://www.processimpact.com/articles/humanizing_reviews.html) before trying to follow this guide.\n \n This guide covers the following topics:\n \n-- [What to Review](#what-to-review)\n-- [Preparing Code for Review](#preparing-code-for-review)\n-- [Writing Useful Commit Messages](#writing-useful-commit-messages)\n-- [Doing Code Reviews](#doing-code-reviews)\n-  - [Purpose](#purpose)\n-  - [Implementation](#implementation)\n-  - [Legibility & Style](#legibility-style)\n-  - [Maintainability](#maintainability)\n-  - [Review Comments: Concise and Actionable](#review-comments-concise-and-actionable)\n-- [Responding to Reviews](#responding-to-reviews)\n-- [Code Review Examples](#code-review-examples)\n-  - [Example: Inconsistent Naming](#example-inconsistent-naming)\n-  - [Example: Inconsistent Method Signatures](#example-inconsistent-method-signatures)\n-  - [Example: Code Style Violation](#example-code-style-violation)\n-  - [Example: Library Use](#example-library-use)\n-  - [Example: Potential Bug](#example-potential-bug)\n-\n-We do code reviews (CRs) to **ensure high code quality** and to **reduce the\n-number of bugs** we ship. High-quality code is **clean**, **correct**,\n-and **scalable**. In more detail, reviews serve several important\n-causes:\n-\n-- **Committers are motivated** subconsciously by the notion of a set\n+- [Motivation](#motivation)\n+- [What to review](#what-to-review)\n+- [Preparing code for review](#preparing-code-for-review)\n+- [Commit messages](#commit-messages)\n+- [Performing code reviews](#performing-code-reviews)\n+- [Responding to reviews](#responding-to-reviews)\n+- [Examples](#examples)\n+\n+\n+## Motivation\n+\n+Code reviews (CRs) improve code quality and have positive effects on team and company culture. In more detail:\n+\n+- **Committers are motivated** by the notion of a set\n   of reviewers who will look over the change request: the committer tends to\n   clean up loose ends, consolidate TODOs, and generally improve the commit.\n+  Recognition of coding expertise through peers is a source of pride \n+  for many programmers.\n \n-- **Sharing knowledge** helps development teams in at least three\n-  ways:\n+- **Sharing knowledge** helps development teams in several ways:\n \n   - A CR explicitly communicates added/altered/removed functionality to\n     team members who can subsequently build on the work done.\n \n   - The committer may use a technique or algorithm that reviewers can\n-    learn from.\n+    learn from. More generally, code reviews help [raise the quality bar across the organization](https://blog.fullstory.com/what-we-learned-from-google-code-reviews-arent-just-for-catching-bugs/).\n \n-  - Reviewers may possess knowledge about the code base that can help\n+  - Reviewers may possess knowledge about programming techniques or the code base that can help\n     improve or consolidate the change; for example, someone else may be\n     concurrently working on a similar feature or fix.\n \n+  - Positive Interaction and communication strengthens social bonds between\n+    team members.\n+\n - **Consistency** in a code base makes code easier to read and\n   understand, helps prevent bugs, and facilitates collaboration\n   between regular and migratory developer species.\n \n - **Legibility** of code fragments is hard to judge for the author\n-  whose brainchild it is, and easy to judge for a reviewer who does\n+  whose brain child it is, and easy to judge for a reviewer who does\n   not have the full context. Legible code is more reusable, bug-free,\n   and future-proof.\n \n - **Accidental errors** (e.g., typos) as well as **structural errors**\n-  (e.g., dead code, logic or algorithm bugs) are often much easier to\n-  spot for critical reviewers with an outside perspective. (Often,\n-  it's a rather satisfying sport to find bugs...)\n+  (e.g., dead code, logic or algorithm bugs, performance or architecture\n+  concerns) are often much easier to\n+  spot for critical reviewers with an outside perspective.\n+  (Finding other people's bugs is often a rather satisfying sport ...)\n+  Studies have found that even short and informal code reviews have significant\n+  [impact on code quality and bug frequency](https://blog.codinghorror.com/code-reviews-just-do-it/).\n+\n+- **Security reviews** are required in some environments. They are performed\n+  by application security engineers following industry-standard\n+  procedures and frameworks.\n \n-## What to Review\n+\n+## What to review\n \n There is no eternally true answer to this question and the right\n-approach should be agreed on by each development team; some teams prefer\n-to review *every* CR merged into the develop branch, while others will have a\n+approach should be agreed on by each development team. Some teams prefer\n+to review every change merged into the main branch, while others will have a\n \"triviality\" threshold under which a review is not required. The\n trade-off is between effective use of engineers' (both authors' and\n-reviewers') time and maintaining code quality.\n+reviewers') time and maintaining code quality. In certain regulatory environments,\n+code review may be required even for trivial changes.\n+\n+Code reviews are classless: being the most senior person on the team does not\n+imply that your code does not need review. In the extremely rare case your code\n+is actually flawless, less experienced team members can learn from you; in the\n+more common case they will point out bugs, suggest newer libraries or techniques,\n+or puzzle until they proudly find a more efficient or elegant implementation.\n \n-## Preparing Code for Review\n \n-It is the author's duty to submit CRs that are easy to review in order\n-not to waste the reviewers' time and motivation. A few guidelines:\n+## Preparing code for review\n \n-- **Scope and size:** Changes have a narrow, well-defined, self-contained\n-  scope that they cover exhaustively. For example, a CR may implement\n-  a new feature or fix a bug. Shorter CRs are preferred over\n-  longer CRs. If a CR makes substantive changes to more than ~5\n+It is the author's responsibility to submit CRs that are easy to review in order\n+not to waste the reviewers' time and motivation:\n+\n+- **Scope and size:** Changes should have a narrow, well-defined, self-contained\n+  scope that they cover exhaustively. For example, a change may implement\n+  a new feature or fix a bug. Shorter changes are preferred over\n+  longer ones. If a CR makes substantive changes to more than ~5\n   files, or took longer than 1-2 days to write, or would take more\n-  than 20mins to review, consider splitting it into multiple CRs that\n-  are each self-contained. For example, a developer can submit one CR that\n+  than 20 minutes to review, consider splitting it into multiple self-contained CRs.\n+  For example, a developer can submit one change that\n   defines the API for a new feature in terms of interfaces and\n-  documentation and a second CR that adds an implementation for\n+  documentation, and a second change that adds implementations for\n   those interfaces.\n \n   For features or code contributions that only make sense as one unit\n   but that are too large to fit into one reasonable CR, consider a\n-  multi-branch CR model: Create a main branch `feature/big-feature`\n+  stacked CR model: Create a main branch `feature/big-feature`\n   and a number of secondary branches -- e.g.,\n   `feature/big-feature-api`, `feature/big-feature-testing`, etc. --\n   that each encapsulate a subset of the functionality and that get\n   individually code-reviewed against the `feature/big-feature` branch.\n   Once all secondary branches are merged into `feature/big-feature`,\n-  create a CR for merging the latter into `develop`. The functional\n-  equivalent in Gerrit is a series of reviewed commits against a\n-  single `feature/big-feature` branch.\n+  create a CR for merging the latter into the main branch.\n \n - Only submit **complete**, **self-reviewed** (by diff), and **self-tested** CRs.\n-  In order to save reviewers' time, test the submitted changes (i.e., run your code),\n+  In order to save reviewers' time, test the submitted changes (i.e., run the test suite),\n   make sure they pass all builds as well as all tests and code quality\n-  checks -- both locally and on the build servers -- *before assigning\n+  checks -- both locally and on the CI servers -- *before assigning\n   reviewers*.\n \n-- **Refactoring CRs:** Refactoring CRs may *never* alter behavior;\n+- **Refactoring CRs:** Refactoring CRs should not alter behavior;\n   conversely, a behavior-changing CR should avoid refactoring and code\n   formatting changes. There are multiple good reasons for this:\n \n-  - Refactoring CRs are normally very large and will consequently be\n-    reviewed at a different depth. Unintended behavior changes can leak into\n-    the code base without anyone noticing.\n+  - Refactoring CRs often touch many lines and files and will consequently be\n+    [reviewed with less attention](https://smartbear.com/learn/code-review/best-practices-for-peer-code-review/).\n+    Unintended behavior changes can leak into the code base without anyone noticing.\n+\n+  - Large refactoring CRs break cherry-picking,\n+    rebasing, and other source control magic. It is very onerous to undo a\n+    behavior change that was introduced as part of a repository-wide\n+    refactoring commit.\n \n-  - Large refactoring CRs are not compatible with cherry-picking,\n-    rebasing, and other source control magic. It is very hard to undo a\n-    behavior change that was introduced as part of a refactoring commit.\n+  - Expensive human review-time should be spent on the program logic\n+    rather than file naming or code formatting.\n \n-  - Expensive, human review-time should be spent on the program logic\n-    rather than, say, its formatting or the import order. Style issues can be\n-    fixed prior to code reviews with tooling like\n-    [gradle-baseline](https://github.com/palantir/gradle-baseline).","path":"docs/best-practices/code-reviews/readme.md","position":210,"original_position":210,"commit_id":"a00bcffa6847cf6cb790c554a6f76ff1a0e50310","original_commit_id":"a00bcffa6847cf6cb790c554a6f76ff1a0e50310","user":{"login":"uschi2000","id":6528449,"avatar_url":"https://avatars3.githubusercontent.com/u/6528449?v=4","gravatar_id":"","url":"https://api.github.com/users/uschi2000","html_url":"https://github.com/uschi2000","followers_url":"https://api.github.com/users/uschi2000/followers","following_url":"https://api.github.com/users/uschi2000/following{/other_user}","gists_url":"https://api.github.com/users/uschi2000/gists{/gist_id}","starred_url":"https://api.github.com/users/uschi2000/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/uschi2000/subscriptions","organizations_url":"https://api.github.com/users/uschi2000/orgs","repos_url":"https://api.github.com/users/uschi2000/repos","events_url":"https://api.github.com/users/uschi2000/events{/privacy}","received_events_url":"https://api.github.com/users/uschi2000/received_events","type":"User","site_admin":false},"body":"added the tooling thing","created_at":"2018-02-23T17:03:07Z","updated_at":"2018-02-23T17:03:07Z","html_url":"https://github.com/palantir/gradle-baseline/pull/244#discussion_r170308223","pull_request_url":"https://api.github.com/repos/palantir/gradle-baseline/pulls/244","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/palantir/gradle-baseline/pulls/comments/170308223"},"html":{"href":"https://github.com/palantir/gradle-baseline/pull/244#discussion_r170308223"},"pull_request":{"href":"https://api.github.com/repos/palantir/gradle-baseline/pulls/244"}},"in_reply_to_id":170190163},"pull_request":{"url":"https://api.github.com/repos/palantir/gradle-baseline/pulls/244","id":170929472,"html_url":"https://github.com/palantir/gradle-baseline/pull/244","diff_url":"https://github.com/palantir/gradle-baseline/pull/244.diff","patch_url":"https://github.com/palantir/gradle-baseline/pull/244.patch","issue_url":"https://api.github.com/repos/palantir/gradle-baseline/issues/244","number":244,"state":"open","locked":false,"title":"Rework code review guide","user":{"login":"uschi2000","id":6528449,"avatar_url":"https://avatars3.githubusercontent.com/u/6528449?v=4","gravatar_id":"","url":"https://api.github.com/users/uschi2000","html_url":"https://github.com/uschi2000","followers_url":"https://api.github.com/users/uschi2000/followers","following_url":"https://api.github.com/users/uschi2000/following{/other_user}","gists_url":"https://api.github.com/users/uschi2000/gists{/gist_id}","starred_url":"https://api.github.com/users/uschi2000/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/uschi2000/subscriptions","organizations_url":"https://api.github.com/users/uschi2000/orgs","repos_url":"https://api.github.com/users/uschi2000/repos","events_url":"https://api.github.com/users/uschi2000/events{/privacy}","received_events_url":"https://api.github.com/users/uschi2000/received_events","type":"User","site_admin":false},"body":"@markelliot @adidahiya ","created_at":"2018-02-23T04:17:51Z","updated_at":"2018-02-23T17:03:07Z","closed_at":null,"merged_at":null,"merge_commit_sha":"da233f3507e7863ab005962e551df3aa8743ae76","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/palantir/gradle-baseline/pulls/244/commits","review_comments_url":"https://api.github.com/repos/palantir/gradle-baseline/pulls/244/comments","review_comment_url":"https://api.github.com/repos/palantir/gradle-baseline/pulls/comments{/number}","comments_url":"https://api.github.com/repos/palantir/gradle-baseline/issues/244/comments","statuses_url":"https://api.github.com/repos/palantir/gradle-baseline/statuses/a00bcffa6847cf6cb790c554a6f76ff1a0e50310","head":{"label":"palantir:rfink/code-review","ref":"rfink/code-review","sha":"a00bcffa6847cf6cb790c554a6f76ff1a0e50310","user":{"login":"palantir","id":303157,"avatar_url":"https://avatars0.githubusercontent.com/u/303157?v=4","gravatar_id":"","url":"https://api.github.com/users/palantir","html_url":"https://github.com/palantir","followers_url":"https://api.github.com/users/palantir/followers","following_url":"https://api.github.com/users/palantir/following{/other_user}","gists_url":"https://api.github.com/users/palantir/gists{/gist_id}","starred_url":"https://api.github.com/users/palantir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/palantir/subscriptions","organizations_url":"https://api.github.com/users/palantir/orgs","repos_url":"https://api.github.com/users/palantir/repos","events_url":"https://api.github.com/users/palantir/events{/privacy}","received_events_url":"https://api.github.com/users/palantir/received_events","type":"Organization","site_admin":false},"repo":{"id":39910458,"name":"gradle-baseline","full_name":"palantir/gradle-baseline","owner":{"login":"palantir","id":303157,"avatar_url":"https://avatars0.githubusercontent.com/u/303157?v=4","gravatar_id":"","url":"https://api.github.com/users/palantir","html_url":"https://github.com/palantir","followers_url":"https://api.github.com/users/palantir/followers","following_url":"https://api.github.com/users/palantir/following{/other_user}","gists_url":"https://api.github.com/users/palantir/gists{/gist_id}","starred_url":"https://api.github.com/users/palantir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/palantir/subscriptions","organizations_url":"https://api.github.com/users/palantir/orgs","repos_url":"https://api.github.com/users/palantir/repos","events_url":"https://api.github.com/users/palantir/events{/privacy}","received_events_url":"https://api.github.com/users/palantir/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/palantir/gradle-baseline","description":"A set of Gradle plugins that configure default code quality tools for developers.","fork":false,"url":"https://api.github.com/repos/palantir/gradle-baseline","forks_url":"https://api.github.com/repos/palantir/gradle-baseline/forks","keys_url":"https://api.github.com/repos/palantir/gradle-baseline/keys{/key_id}","collaborators_url":"https://api.github.com/repos/palantir/gradle-baseline/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/palantir/gradle-baseline/teams","hooks_url":"https://api.github.com/repos/palantir/gradle-baseline/hooks","issue_events_url":"https://api.github.com/repos/palantir/gradle-baseline/issues/events{/number}","events_url":"https://api.github.com/repos/palantir/gradle-baseline/events","assignees_url":"https://api.github.com/repos/palantir/gradle-baseline/assignees{/user}","branches_url":"https://api.github.com/repos/palantir/gradle-baseline/branches{/branch}","tags_url":"https://api.github.com/repos/palantir/gradle-baseline/tags","blobs_url":"https://api.github.com/repos/palantir/gradle-baseline/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/palantir/gradle-baseline/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/palantir/gradle-baseline/git/refs{/sha}","trees_url":"https://api.github.com/repos/palantir/gradle-baseline/git/trees{/sha}","statuses_url":"https://api.github.com/repos/palantir/gradle-baseline/statuses/{sha}","languages_url":"https://api.github.com/repos/palantir/gradle-baseline/languages","stargazers_url":"https://api.github.com/repos/palantir/gradle-baseline/stargazers","contributors_url":"https://api.github.com/repos/palantir/gradle-baseline/contributors","subscribers_url":"https://api.github.com/repos/palantir/gradle-baseline/subscribers","subscription_url":"https://api.github.com/repos/palantir/gradle-baseline/subscription","commits_url":"https://api.github.com/repos/palantir/gradle-baseline/commits{/sha}","git_commits_url":"https://api.github.com/repos/palantir/gradle-baseline/git/commits{/sha}","comments_url":"https://api.github.com/repos/palantir/gradle-baseline/comments{/number}","issue_comment_url":"https://api.github.com/repos/palantir/gradle-baseline/issues/comments{/number}","contents_url":"https://api.github.com/repos/palantir/gradle-baseline/contents/{+path}","compare_url":"https://api.github.com/repos/palantir/gradle-baseline/compare/{base}...{head}","merges_url":"https://api.github.com/repos/palantir/gradle-baseline/merges","archive_url":"https://api.github.com/repos/palantir/gradle-baseline/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/palantir/gradle-baseline/downloads","issues_url":"https://api.github.com/repos/palantir/gradle-baseline/issues{/number}","pulls_url":"https://api.github.com/repos/palantir/gradle-baseline/pulls{/number}","milestones_url":"https://api.github.com/repos/palantir/gradle-baseline/milestones{/number}","notifications_url":"https://api.github.com/repos/palantir/gradle-baseline/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/palantir/gradle-baseline/labels{/name}","releases_url":"https://api.github.com/repos/palantir/gradle-baseline/releases{/id}","deployments_url":"https://api.github.com/repos/palantir/gradle-baseline/deployments","created_at":"2015-07-29T18:49:11Z","updated_at":"2018-02-10T10:44:38Z","pushed_at":"2018-02-23T04:17:52Z","git_url":"git://github.com/palantir/gradle-baseline.git","ssh_url":"git@github.com:palantir/gradle-baseline.git","clone_url":"https://github.com/palantir/gradle-baseline.git","svn_url":"https://github.com/palantir/gradle-baseline","homepage":null,"size":640,"stargazers_count":46,"watchers_count":46,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":42,"mirror_url":null,"archived":false,"open_issues_count":40,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":42,"open_issues":40,"watchers":46,"default_branch":"develop"}},"base":{"label":"palantir:develop","ref":"develop","sha":"cd8072f853a8294177311a5876a08dcc623d13bb","user":{"login":"palantir","id":303157,"avatar_url":"https://avatars0.githubusercontent.com/u/303157?v=4","gravatar_id":"","url":"https://api.github.com/users/palantir","html_url":"https://github.com/palantir","followers_url":"https://api.github.com/users/palantir/followers","following_url":"https://api.github.com/users/palantir/following{/other_user}","gists_url":"https://api.github.com/users/palantir/gists{/gist_id}","starred_url":"https://api.github.com/users/palantir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/palantir/subscriptions","organizations_url":"https://api.github.com/users/palantir/orgs","repos_url":"https://api.github.com/users/palantir/repos","events_url":"https://api.github.com/users/palantir/events{/privacy}","received_events_url":"https://api.github.com/users/palantir/received_events","type":"Organization","site_admin":false},"repo":{"id":39910458,"name":"gradle-baseline","full_name":"palantir/gradle-baseline","owner":{"login":"palantir","id":303157,"avatar_url":"https://avatars0.githubusercontent.com/u/303157?v=4","gravatar_id":"","url":"https://api.github.com/users/palantir","html_url":"https://github.com/palantir","followers_url":"https://api.github.com/users/palantir/followers","following_url":"https://api.github.com/users/palantir/following{/other_user}","gists_url":"https://api.github.com/users/palantir/gists{/gist_id}","starred_url":"https://api.github.com/users/palantir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/palantir/subscriptions","organizations_url":"https://api.github.com/users/palantir/orgs","repos_url":"https://api.github.com/users/palantir/repos","events_url":"https://api.github.com/users/palantir/events{/privacy}","received_events_url":"https://api.github.com/users/palantir/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/palantir/gradle-baseline","description":"A set of Gradle plugins that configure default code quality tools for developers.","fork":false,"url":"https://api.github.com/repos/palantir/gradle-baseline","forks_url":"https://api.github.com/repos/palantir/gradle-baseline/forks","keys_url":"https://api.github.com/repos/palantir/gradle-baseline/keys{/key_id}","collaborators_url":"https://api.github.com/repos/palantir/gradle-baseline/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/palantir/gradle-baseline/teams","hooks_url":"https://api.github.com/repos/palantir/gradle-baseline/hooks","issue_events_url":"https://api.github.com/repos/palantir/gradle-baseline/issues/events{/number}","events_url":"https://api.github.com/repos/palantir/gradle-baseline/events","assignees_url":"https://api.github.com/repos/palantir/gradle-baseline/assignees{/user}","branches_url":"https://api.github.com/repos/palantir/gradle-baseline/branches{/branch}","tags_url":"https://api.github.com/repos/palantir/gradle-baseline/tags","blobs_url":"https://api.github.com/repos/palantir/gradle-baseline/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/palantir/gradle-baseline/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/palantir/gradle-baseline/git/refs{/sha}","trees_url":"https://api.github.com/repos/palantir/gradle-baseline/git/trees{/sha}","statuses_url":"https://api.github.com/repos/palantir/gradle-baseline/statuses/{sha}","languages_url":"https://api.github.com/repos/palantir/gradle-baseline/languages","stargazers_url":"https://api.github.com/repos/palantir/gradle-baseline/stargazers","contributors_url":"https://api.github.com/repos/palantir/gradle-baseline/contributors","subscribers_url":"https://api.github.com/repos/palantir/gradle-baseline/subscribers","subscription_url":"https://api.github.com/repos/palantir/gradle-baseline/subscription","commits_url":"https://api.github.com/repos/palantir/gradle-baseline/commits{/sha}","git_commits_url":"https://api.github.com/repos/palantir/gradle-baseline/git/commits{/sha}","comments_url":"https://api.github.com/repos/palantir/gradle-baseline/comments{/number}","issue_comment_url":"https://api.github.com/repos/palantir/gradle-baseline/issues/comments{/number}","contents_url":"https://api.github.com/repos/palantir/gradle-baseline/contents/{+path}","compare_url":"https://api.github.com/repos/palantir/gradle-baseline/compare/{base}...{head}","merges_url":"https://api.github.com/repos/palantir/gradle-baseline/merges","archive_url":"https://api.github.com/repos/palantir/gradle-baseline/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/palantir/gradle-baseline/downloads","issues_url":"https://api.github.com/repos/palantir/gradle-baseline/issues{/number}","pulls_url":"https://api.github.com/repos/palantir/gradle-baseline/pulls{/number}","milestones_url":"https://api.github.com/repos/palantir/gradle-baseline/milestones{/number}","notifications_url":"https://api.github.com/repos/palantir/gradle-baseline/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/palantir/gradle-baseline/labels{/name}","releases_url":"https://api.github.com/repos/palantir/gradle-baseline/releases{/id}","deployments_url":"https://api.github.com/repos/palantir/gradle-baseline/deployments","created_at":"2015-07-29T18:49:11Z","updated_at":"2018-02-10T10:44:38Z","pushed_at":"2018-02-23T04:17:52Z","git_url":"git://github.com/palantir/gradle-baseline.git","ssh_url":"git@github.com:palantir/gradle-baseline.git","clone_url":"https://github.com/palantir/gradle-baseline.git","svn_url":"https://github.com/palantir/gradle-baseline","homepage":null,"size":640,"stargazers_count":46,"watchers_count":46,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":42,"mirror_url":null,"archived":false,"open_issues_count":40,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":42,"open_issues":40,"watchers":46,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/palantir/gradle-baseline/pulls/244"},"html":{"href":"https://github.com/palantir/gradle-baseline/pull/244"},"issue":{"href":"https://api.github.com/repos/palantir/gradle-baseline/issues/244"},"comments":{"href":"https://api.github.com/repos/palantir/gradle-baseline/issues/244/comments"},"review_comments":{"href":"https://api.github.com/repos/palantir/gradle-baseline/pulls/244/comments"},"review_comment":{"href":"https://api.github.com/repos/palantir/gradle-baseline/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/palantir/gradle-baseline/pulls/244/commits"},"statuses":{"href":"https://api.github.com/repos/palantir/gradle-baseline/statuses/a00bcffa6847cf6cb790c554a6f76ff1a0e50310"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"uschi2000"}}