You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by ab...@apache.org on 2023/02/10 04:56:47 UTC

[incubator-devlake] branch main updated: test(sonarqube): add issue and issue code block (#4378)

This is an automated email from the ASF dual-hosted git repository.

abeizn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/main by this push:
     new a945c040a test(sonarqube): add issue and issue code block (#4378)
a945c040a is described below

commit a945c040a6c9f650b12e57b4bcda82a523c4954d
Author: Warren Chen <yi...@merico.dev>
AuthorDate: Fri Feb 10 12:56:43 2023 +0800

    test(sonarqube): add issue and issue code block (#4378)
---
 backend/plugins/sonarqube/e2e/issue_test.go        |  81 +++++++++++
 .../e2e/raw_tables/_raw_sonarqube_issues.csv       |   7 +
 .../_tool_sonarqube_issue_code_blocks.csv          | 160 +++++++++++++++++++++
 .../e2e/snapshot_tables/_tool_sonarqube_issues.csv |   7 +
 .../e2e/snapshot_tables/issue_code_blocks.csv      |   8 ++
 .../sonarqube/e2e/snapshot_tables/issues.csv       |   4 +
 .../sonarqube/tasks/issue_code_blocks_convertor.go |   2 +-
 7 files changed, 268 insertions(+), 1 deletion(-)

diff --git a/backend/plugins/sonarqube/e2e/issue_test.go b/backend/plugins/sonarqube/e2e/issue_test.go
new file mode 100644
index 000000000..08f4c4951
--- /dev/null
+++ b/backend/plugins/sonarqube/e2e/issue_test.go
@@ -0,0 +1,81 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+    http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package e2e
+
+import (
+	"testing"
+
+	"github.com/apache/incubator-devlake/core/models/common"
+	"github.com/apache/incubator-devlake/core/models/domainlayer/securitytesting"
+	"github.com/apache/incubator-devlake/helpers/e2ehelper"
+	"github.com/apache/incubator-devlake/plugins/sonarqube/impl"
+	"github.com/apache/incubator-devlake/plugins/sonarqube/models"
+	"github.com/apache/incubator-devlake/plugins/sonarqube/tasks"
+)
+
+func TestSonarqubeIssueDataFlow(t *testing.T) {
+
+	var sonarqube impl.Sonarqube
+	dataflowTester := e2ehelper.NewDataFlowTester(t, "sonarqube", sonarqube)
+
+	// import raw data table
+	dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_sonarqube_issues.csv",
+		"_raw_sonarqube_issues")
+
+	// Standard data
+	taskData := &tasks.SonarqubeTaskData{
+		Options: &tasks.SonarqubeOptions{
+			ConnectionId: 1,
+			ProjectKey:   "f5a50c63-2e8f-4107-9014-853f6f467757",
+		},
+	}
+	// Interfered data
+	taskData2 := &tasks.SonarqubeTaskData{
+		Options: &tasks.SonarqubeOptions{
+			ConnectionId: 2,
+			ProjectKey:   "testWarrenEtcd",
+		},
+	}
+
+	// verify extraction
+	dataflowTester.FlushTabler(&models.SonarqubeIssue{})
+	dataflowTester.FlushTabler(&models.SonarqubeIssueCodeBlock{})
+	dataflowTester.Subtask(tasks.ExtractIssuesMeta, taskData)
+
+	dataflowTester.Subtask(tasks.ExtractIssuesMeta, taskData2)
+	dataflowTester.VerifyTableWithOptions(&models.SonarqubeIssue{}, e2ehelper.TableOptions{
+		CSVRelPath:  "./snapshot_tables/_tool_sonarqube_issues.csv",
+		IgnoreTypes: []interface{}{common.NoPKModel{}},
+	})
+	dataflowTester.VerifyTableWithOptions(&models.SonarqubeIssueCodeBlock{}, e2ehelper.TableOptions{
+		CSVRelPath:  "./snapshot_tables/_tool_sonarqube_issue_code_blocks.csv",
+		IgnoreTypes: []interface{}{common.NoPKModel{}},
+	})
+
+	// verify convertor
+	dataflowTester.FlushTabler(&securitytesting.StIssue{})
+	dataflowTester.FlushTabler(&securitytesting.StIssueCodeBlock{})
+	dataflowTester.Subtask(tasks.ConvertIssuesMeta, taskData)
+	dataflowTester.VerifyTableWithOptions(&securitytesting.StIssue{}, e2ehelper.TableOptions{
+		CSVRelPath:  "./snapshot_tables/issues.csv",
+		IgnoreTypes: []interface{}{common.NoPKModel{}},
+	})
+	dataflowTester.Subtask(tasks.ConvertIssueCodeBlocksMeta, taskData)
+	dataflowTester.VerifyTableWithOptions(&securitytesting.StIssueCodeBlock{}, e2ehelper.TableOptions{
+		CSVRelPath:  "./snapshot_tables/issue_code_blocks.csv",
+		IgnoreTypes: []interface{}{common.NoPKModel{}},
+	})
+}
diff --git a/backend/plugins/sonarqube/e2e/raw_tables/_raw_sonarqube_issues.csv b/backend/plugins/sonarqube/e2e/raw_tables/_raw_sonarqube_issues.csv
new file mode 100644
index 000000000..020f54178
--- /dev/null
+++ b/backend/plugins/sonarqube/e2e/raw_tables/_raw_sonarqube_issues.csv
@@ -0,0 +1,7 @@
+"id","params","data","url","input","created_at"
+71606,"{""connectionId"":2,""ProjectKey"":""testWarrenEtcd""}","{""key"":""AYYrCDQwCVdTZLqEeJtw"",""rule"":""go:S3776"",""severity"":""CRITICAL"",""component"":""testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go"",""project"":""testWarrenEtcd"",""line"":174,""hash"":""4b568473b2815c6fdf0ed4a6d0083517"",""textRange"":{""startLine"":174,""endLine"":174,""startOffset"":18,""endOffset"":38},""flows"":[{""locations"":[{""component"":""testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go"",""textRa [...]
+71607,"{""connectionId"":2,""ProjectKey"":""testWarrenEtcd""}","{""key"":""AYYrCDQwCVdTZLqEeJtx"",""rule"":""go:S3776"",""severity"":""CRITICAL"",""component"":""testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go"",""project"":""testWarrenEtcd"",""line"":394,""hash"":""5757b656ecd68cade0c4ffbee99d2cf0"",""textRange"":{""startLine"":394,""endLine"":394,""startOffset"":18,""endOffset"":27},""flows"":[{""locations"":[{""component"":""testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go"",""textRa [...]
+71608,"{""connectionId"":2,""ProjectKey"":""testWarrenEtcd""}","{""key"":""AYYrCDQwCVdTZLqEeJty"",""rule"":""go:S3776"",""severity"":""CRITICAL"",""component"":""testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go"",""project"":""testWarrenEtcd"",""line"":830,""hash"":""cea1920565d72b55451cd8145aa6e6fb"",""textRange"":{""startLine"":830,""endLine"":830,""startOffset"":19,""endOffset"":28},""flows"":[{""locations"":[{""component"":""testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go"",""textRa [...]
+92853,"{""connectionId"":1,""ProjectKey"":""f5a50c63-2e8f-4107-9014-853f6f467757""}","{""key"":""AYUwBbCC46XwcL-YZOTH"",""rule"":""java:S5993"",""severity"":""MAJOR"",""component"":""f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/FeatureDictionary.java"",""project"":""f5a50c63-2e8f-4107-9014-853f6f467757"",""line"":24,""hash"":""cb21cfee164b0548717edfe840aea8a2"",""textRange"":{""startLine"":24,""endLine"":24,""startOffset"":2,""endOffset"":8},""fl [...]
+92888,"{""connectionId"":1,""ProjectKey"":""f5a50c63-2e8f-4107-9014-853f6f467757""}","{""key"":""AYUwBbGD46XwcL-YZOUu"",""rule"":""java:S3824"",""severity"":""MAJOR"",""component"":""f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java"",""project"":""f5a50c63-2e8f-4107-9014-853f6f467757"",""line"":171,""hash"":""136741d9bacea2c123cc5a81be33aa4b"",""textRange"":{""startLine"":171,""endLine"":171,""startOffset"":25,""endOffset"":49},""flows"":[{ [...]
+92889,"{""connectionId"":1,""ProjectKey"":""f5a50c63-2e8f-4107-9014-853f6f467757""}","{""key"":""AYUwBbGD46XwcL-YZOUv"",""rule"":""java:S3824"",""severity"":""MAJOR"",""component"":""f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java"",""project"":""f5a50c63-2e8f-4107-9014-853f6f467757"",""line"":182,""hash"":""fbe0119b6af3a6db83bfd6fdb9a6833b"",""textRange"":{""startLine"":182,""endLine"":182,""startOffset"":33,""endOffset"":56},""flows"":[{ [...]
diff --git a/backend/plugins/sonarqube/e2e/snapshot_tables/_tool_sonarqube_issue_code_blocks.csv b/backend/plugins/sonarqube/e2e/snapshot_tables/_tool_sonarqube_issue_code_blocks.csv
new file mode 100644
index 000000000..9f005b53e
--- /dev/null
+++ b/backend/plugins/sonarqube/e2e/snapshot_tables/_tool_sonarqube_issue_code_blocks.csv
@@ -0,0 +1,160 @@
+connection_id,id,issue_key,component,start_line,end_line,start_offset,end_offset,msg
+1,6d35f8c9e0c1ce2e95e8386fdfd976cbd5d68de958285101fd21356360860f08,AYUwBbGD46XwcL-YZOUv,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java,183,183,8,22,Implies 'output' can be null.
+1,80ca0546dc21f656a373527df464efe074a306b5ca441cc96d92bac0853f142e,AYUwBbGD46XwcL-YZOUu,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java,172,172,8,22,Implies 'output' can be null.
+1,88fe8ed882e5438658656ff984a44bb4ab716a45f6d4c81650cbbc7bc9191d1d,AYUwBbCC46XwcL-YZOTH,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/FeatureDictionary.java,17,17,7,15,"This class is ""abstract""."
+1,89c3dbfaf707c841c723e364d451c7b90b640fce873848a7b402949bec83db45,AYUwBbGD46XwcL-YZOUv,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java,185,185,6,23,'Map.put()' is invoked with same key.
+1,a8e9126930c50bc4b2198f0a8e5f525594cdf49d7e8c0ff44f3252a450e4bb5c,AYUwBbGD46XwcL-YZOUu,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java,174,174,6,24,'Map.put()' is invoked with same key.
+1,bfafb9def80ba309af3aa6b3a9e653905bf02861e0ec762edff0378061cc471b,AYUwBbGD46XwcL-YZOUu,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java,171,171,25,43,'Map.get()' is invoked.
+1,d06c8ec1c90c895af02bc25c9343d31722af728f66243c8e84cfb711fa678d4f,AYUwBbGD46XwcL-YZOUv,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java,182,182,33,50,'Map.get()' is invoked.
+2,00943b23afdd8c8e62f638341055a23920fa047e974e4af87ded88754476e484,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,788,788,3,5,+3 (incl 2 for nesting)
+2,01743e081dc475521d3278ff2c931f262e84f244ae57da4fa5c3d4c9910bae0d,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,654,654,3,6,+3 (incl 2 for nesting)
+2,04d484fbc4bfaed66d12ed541930c6a15cbb166c3bbff9fe02e8b3bc7f3b88ba,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,734,734,4,6,+4 (incl 3 for nesting)
+2,08deee1571fc4683be0237e1216d660123f06365c40e488b15eeee01dfa183b8,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,559,559,3,5,+3 (incl 2 for nesting)
+2,094bd2ee8ce922873612d664ca17d67afbf00bfb760151cd2ae54b2e381db5f4,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,900,900,3,5,+3 (incl 2 for nesting)
+2,095cf36891549dabc9728e7ae5d82a12a8f08c7c112074430908b38577de49d6,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,864,864,3,6,+3 (incl 2 for nesting)
+2,0cd1645be847544e4e6206791df1452cb35d006087c51265ed71a5ad510c43f1,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,768,768,3,5,+3 (incl 2 for nesting)
+2,0d196fc8c157308322e740532cf08f77a8f618ec9efc1567a39bd1559e90712f,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,526,526,3,5,+3 (incl 2 for nesting)
+2,110496b10c827a242cb82e7dc1a083b1e329e1792e41b3e1524cca19e95f956e,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,615,615,4,6,+4 (incl 3 for nesting)
+2,14af070c39d89843baa82941d245d42f2ca1a29c29c0a03ce44d5f8bea32c255,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,511,511,3,6,+3 (incl 2 for nesting)
+2,19422a072b596b33a32b2f4c4747fe39f8cedf35dbf4f1ef1073660177a68ebd,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,814,814,3,5,+3 (incl 2 for nesting)
+2,1a050a9f6e200cc42cfb97eade36dc0a5cb8de6d4324f98a012b3cf9e7b8be5e,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,246,246,1,3,+1
+2,1aa45360f61102b017eb9cf9d411aa104dc94f7f3262c46069e9803787bfdfa9,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,489,489,4,6,+4 (incl 3 for nesting)
+2,1c162496e27748e7c88226219ece39083b240b0c35090412f323605c9a9d9273,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,567,567,4,6,+4 (incl 3 for nesting)
+2,1d6a96b739773ff21eb0113fb19f729c479d0c7bf16880c01f37b3c8e22d9697,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,585,585,3,5,+3 (incl 2 for nesting)
+2,1e9333e707c10abff67bac3777f14bc3f67a648a818b132b3b026a67eb021310,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,475,475,3,5,+3 (incl 2 for nesting)
+2,1ea764a0a149766a434a35487103d2fe30d1c8497fe1e1cc4e17238528f5b871,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,483,483,4,6,+4 (incl 3 for nesting)
+2,1f890cdf9ecfecb25d3a884fe2b185c1b518a8ed6386debf9a2bae253c33feb1,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,248,248,2,4,+2 (incl 1 for nesting)
+2,21cdb052985762b5548d1e0678cafa4325e95c9c7d0a040a5b60c383576cfc19,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,494,494,3,5,+3 (incl 2 for nesting)
+2,21e2b0bf3f68222e22a81c6aeb5cd9e7c298a4d686adaa178ea0e34e121bc2c8,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,645,645,4,6,+4 (incl 3 for nesting)
+2,229f164a51d5ac7c22a7ef5a81f296901592ddb6d10d4f9e31328dcd851ade10,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,879,879,3,5,+3 (incl 2 for nesting)
+2,2410949fc2bf298bf99428bd8bded72b905dd18d771e148020d38de26290a5e7,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,591,591,3,5,+3 (incl 2 for nesting)
+2,26564bd8c3a92e88e00eca013f04564631ed051234c85ff16ef09e3e7d8a1861,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,674,674,3,6,+3 (incl 2 for nesting)
+2,27372d105daefc5049bdd998ad8d2b7b7070faa765e4a67184c2e5487a62de1c,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,543,543,3,6,+3 (incl 2 for nesting)
+2,298b92fb0ae54e4775a9128824a0ef631f7e4546b7149088545cba6fd6b3fcb0,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,227,227,3,7,+1
+2,2ac45d68ebe3a90c8cbf5bdecb11f932d8f324956ff59d4f01322448992697b8,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,693,693,3,6,+3 (incl 2 for nesting)
+2,2b158073141d931ca225594303426a7360a49f1575386a07bd1fc395226adf1e,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,723,723,4,6,+4 (incl 3 for nesting)
+2,2b8dfec8670c4e5ce29204307a85ad755c7f219800a5a842f95bf498454a64e0,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,887,887,4,6,+4 (incl 3 for nesting)
+2,2bef144b865c86fbba277dfb93aa10f2475e3f67c09e5282e04122ea0b105af6,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,530,530,3,5,+3 (incl 2 for nesting)
+2,2e1dd71111fc819e12dc895d7e5bdd2d2464c8975e4d9cd60689e5db54155589,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,858,858,2,8,+2 (incl 1 for nesting)
+2,2fe0b292a5da70aa8648138b1a6e6a9ce7ac9e4a95a13ba9788d8de340e7299f,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,424,424,3,5,+3 (incl 2 for nesting)
+2,31d3e46bb41b8f33a5e1fa18d14fc74afcfd4f3db4a2a99a0a5a93a30d09c83c,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,614,614,3,6,+3 (incl 2 for nesting)
+2,341fccdf5ccf3481b2f429f956ba8910d505e8b6ec9e57925ff8c8d39b32973c,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,684,684,4,6,+4 (incl 3 for nesting)
+2,36a3f522e7b58cdbffc7a7f5702fdfc74f7d53765274ec58da184fc1f951c191,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,596,596,4,6,+4 (incl 3 for nesting)
+2,3bae0a595556e70f627b4268933dc73f63ad7886e1f62e3b47c30d4332b126db,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,438,438,4,6,+4 (incl 3 for nesting)
+2,406aa8e41a945e84956026a5d6ab90ac28656c791c990eb23e3f7cf400cb0976,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,893,893,4,6,+4 (incl 3 for nesting)
+2,415a8a300fac98b9a2db2ce1c5a29ce75245509a0f76fcc7faf950d419054266,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,855,855,2,4,+2 (incl 1 for nesting)
+2,415f5935ed4dd7933a851aafe7aa8ac7e7836179a6cd51d2189ffd518627effa,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,198,198,3,7,+1
+2,41ddb8481682d2b96182d4f36e1c60490061352bd099a4555acdb66e2e2419b3,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,544,544,4,6,+4 (incl 3 for nesting)
+2,439206e2fc3714f6ebe14fcfc64426de2babe39986e7d5225d824c140c6596fd,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,846,846,3,5,+3 (incl 2 for nesting)
+2,44852f0a61be16760618ffe04ace3b7a884c758b95c85fd4f080bfafbfebad34,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,573,573,4,6,+4 (incl 3 for nesting)
+2,46802304222a373e8f4227750d29ceb5f3f9532ada0c2eb3b9d8e3ac79eca1c0,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,811,811,3,5,+3 (incl 2 for nesting)
+2,49d2c657e88dcdf9bf7111e285b54b46f9a121938d4ea34795b94dcf3143d4ac,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,533,533,3,5,+3 (incl 2 for nesting)
+2,4a9e0d81a9534f159a72bbd57a78cce8afd2bb8ed558edb368041507fd6065be,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,717,717,4,6,+4 (incl 3 for nesting)
+2,4cbfcdf05e90541e3ce5f3eb9736e7a8f0a055c48020b82bda9962417b97bac9,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,564,564,4,6,+4 (incl 3 for nesting)
+2,4cc17c51736475a3757213b5468acaea005a3708aea10755c9923ce7964f9329,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,595,595,3,6,+3 (incl 2 for nesting)
+2,4d644485c07c42490777f3d096c369a3fe8f2ea0bd4175e6849f987c464dac4d,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,480,480,4,6,+4 (incl 3 for nesting)
+2,4d9256dfddc893d9404666bcd8a2da42005aa28184099f62a60b3c713b5f5350,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,469,469,3,5,+3 (incl 2 for nesting)
+2,523962a7792dca7233d306b6c9a1b50fa1948997b2a9e13e20cbb88c0b87cead,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,776,776,4,6,+4 (incl 3 for nesting)
+2,5333f1081a524214f68bd9d84185e5ad4716a27395c55fece71969c1bdd918d4,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,631,631,3,5,+3 (incl 2 for nesting)
+2,5448c457cb9587e39d79e47598452b75e7aa7609fdc6b0a013afc8d74f41ebb9,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,498,498,3,5,+3 (incl 2 for nesting)
+2,5644bcf6b29e256823a80e18ad99cd01b1b846081d65c8bc938389709a51cf60,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,754,754,4,6,+4 (incl 3 for nesting)
+2,567f97136eda935d356eb9f4583287846f62905e0034259ea8731f6b9207467e,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,836,836,2,5,+2 (incl 1 for nesting)
+2,56ccf253be764aa3f529825533afd32c104e6b56718e8b8a3137ca7730827e1d,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,479,479,3,6,+3 (incl 2 for nesting)
+2,575eecaff8714764c7607a15fd60e8196357e75a592c9471e23b9ad8a943b588,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,675,675,4,6,+4 (incl 3 for nesting)
+2,5bcb1ad20c2af669992efd0c925debe7074666f8513c8c73be8579c8e4356378,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,763,763,4,6,+4 (incl 3 for nesting)
+2,5d998f1998eb34cca17db7cb1c0e11885f8e577c29528cc410b4189d3ab7fb1a,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,743,743,4,6,+4 (incl 3 for nesting)
+2,61e35d487e7c193cff05b0bc9e6eeec3a20b570825d8042511a0ca9da629786b,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,209,209,1,3,+1
+2,634486d6cb950d0aab8fb555beee8f6e70fdc4fab98cd87a84bd5f38b5504765,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,422,422,2,8,+2 (incl 1 for nesting)
+2,64b76f387855f3fe6c4554261f130ddd630a6b011270cd480affe9068658a997,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,610,610,3,5,+3 (incl 2 for nesting)
+2,65590afaf3de5299bb2705184308719534b63f9940f25a5448a649ad57504a93,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,737,737,4,6,+4 (incl 3 for nesting)
+2,686b329df22eb61041a44351a6b1ef77b187d76c571d31a80dec5c3da22df8ae,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,639,639,4,6,+4 (incl 3 for nesting)
+2,68d6526f1be9ed3413e72c5522529f51ce84f7cc4c5f11df7677bc46d1830834,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,250,250,4,8,+1
+2,694af76b739a437502fcf88c8136719783ca8bce76dafe5548718aa046f52d12,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,501,501,3,5,+3 (incl 2 for nesting)
+2,6a9e3bc13617eea49a0ba72f8167ab59be7c5d618eeba71d3415299019089b62,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,238,238,3,7,+1
+2,6c6585aa280603ff09296d37ef02549dba73d117bcfb7ec074967741a6c30f63,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,903,903,3,5,+3 (incl 2 for nesting)
+2,720b119d47f097742b0d0941a2c177b01386f27ad6b52ea5fc7273c31e5eb140,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,451,451,4,6,+4 (incl 3 for nesting)
+2,7255d318d0d693aec8bf517d6ae94890a9c033bdb9398c19601d4f6cf5b163e5,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,694,694,4,6,+4 (incl 3 for nesting)
+2,733f85fdf128e4a31f28675f25a7919993dcfcd7c66ca88adce76866d8f2bf84,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,837,837,3,5,+3 (incl 2 for nesting)
+2,76d1a1b935e5c7260cb719deb69cb1895fa5758830cb407ddde077f5d210c1d2,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,512,512,4,6,+4 (incl 3 for nesting)
+2,776348b0458573f0d6c6ba09e8724038de2f515c419e87eae4d78396e16a17bf,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,416,416,2,4,+2 (incl 1 for nesting)
+2,795ce6a646444ce0a20250d3130f2165001604209b9b5320cc2073f57f949c75,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,664,664,4,6,+4 (incl 3 for nesting)
+2,7adacdd96ad3c81edb42eb6ddb73db39ba043b5369f2f05638ac8c65db12d79d,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,404,404,3,5,+3 (incl 2 for nesting)
+2,7c0013a911373d48dc81433fc4822ef57e8dd8a049b9360c12c4b01eb85a225b,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,833,833,1,4,+1
+2,7c8e3f985cfa9379d749615c8902cb6c71ddca75d20d6df082a7dbe55f59a39f,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,749,749,3,5,+3 (incl 2 for nesting)
+2,7c9648afcb68b4dae2b58dc93d7c98b848bf9f0ee0d13934c072aa93a9934a81,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,914,914,1,3,+1
+2,7d5bcb2df191588899991a91d065f0ce55716e358645edf4853e41d751a69df9,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,713,713,3,6,+3 (incl 2 for nesting)
+2,7dd3eab53492652b828c8c038c81cf6f704d95eeeb485eea423d337c8970b233,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,658,658,4,6,+4 (incl 3 for nesting)
+2,820f4f1ebb184d6daaae0046eae971b768aa6c42f940c07d7c0f3ea67101935b,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,466,466,3,5,+3 (incl 2 for nesting)
+2,82b02c04f32d452a2f2246fdeb6695c642c6a80c8389f13449895ce0b542cd67,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,757,757,4,6,+4 (incl 3 for nesting)
+2,854c6a5bf832642b55ab1f513e8ae443dc53a8abe773272dd645329c2eace0c3,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,448,448,4,6,+4 (incl 3 for nesting)
+2,85672e5be89720c9f1c3e893dcebb88447f78d515b5cce069ed8becba2798218,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,782,782,4,6,+4 (incl 3 for nesting)
+2,8578be7d68452bc05813dd57995f01cd1d1eb87b5d397f73dc03594f74a9d0e6,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,860,860,3,5,+3 (incl 2 for nesting)
+2,89e0f581ece252a8b12df6e2273ce6a6d58640c7454c431d3a06a3e8bf464d17,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,825,825,1,3,+1
+2,8a31a51f796c54cc2cb388aed0f9104d7eb892a89075e5f306404fe466d96434,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,636,636,4,6,+4 (incl 3 for nesting)
+2,8f4ce13a78e4c9b922f615aad99fc3511d30d66d44af35b698c75b666222dc8c,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,703,703,4,6,+4 (incl 3 for nesting)
+2,907925d60dae5b5cbbabc5a63ebe656661e211db7371c8ec1162b41031502753,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,217,217,1,3,+1
+2,90dec41c493e4b5bc677d251f490d87616f928de48513e3e9463c778d2b15993,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,883,883,3,6,+3 (incl 2 for nesting)
+2,931ff03f22d700f3164c4ffc665c3ee70bc51cd8fa53e3d47a49a9b9ba3b23c4,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,772,772,3,6,+3 (incl 2 for nesting)
+2,94078c2d24ac48b8411ee41b4a8545504afdaef358e74a29b05391e2a95f2932,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,605,605,4,6,+4 (incl 3 for nesting)
+2,9457000f15578414f851465670837d336c7310ecb95fdcedea369ce3a6e6b96d,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,236,236,1,3,+1
+2,96117cbc1bd76dc61fdd2d5f62e4d48e4859a0bf0056b607f3e05a107755d9e7,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,578,578,3,5,+3 (incl 2 for nesting)
+2,96cb70ad9a7e3307dcb6c000fc9c59d282b594b67de843ef5c073789b856376f,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,211,211,3,7,+1
+2,97324c0c26adcd1a104a5b6f4e50b3740d8e648bbf418d380228965b33e3fc5a,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,397,397,1,4,+1
+2,973ae9d4c7f6067c6399f7b4be67c1a50ee3d9cdf6894125d4fb88e15f4c8035,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,868,868,4,6,+4 (incl 3 for nesting)
+2,9a787bb7387337b8de325bcc654bfe19e6adbae72cc8ec2077baac2ea9572a3b,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,714,714,4,6,+4 (incl 3 for nesting)
+2,9b462dc48edd5f627f019e638210c668e9c5b7637149c5b8cee00d0bcf4d2cd6,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,874,874,4,6,+4 (incl 3 for nesting)
+2,9bc76924b03de6b5b74faf3c4c557fff0c3ae50a674e93d9ef7a8394651ba1eb,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,547,547,4,6,+4 (incl 3 for nesting)
+2,9ce36e1b5e032d322c01503d5deed2b4b67a75669efab15ff9d978f036ac88d0,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,906,906,3,5,+3 (incl 2 for nesting)
+2,9eb6cdc8427e30ec0733d52997deed9c130fb90ad3ac09972869fb361fc09b0e,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,903,903,19,21,+1
+2,a0de72bb7466ee4ebc4393bc0479308c348d5754cc884f0609ba09b4860cc03e,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,618,618,4,6,+4 (incl 3 for nesting)
+2,a15c380a2d4cb2656114bd0d59f17fda1116ce77733f75a5820ebe2cebf14358,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,428,428,3,6,+3 (incl 2 for nesting)
+2,a16d527d5fcf3127c68810ef8f97c46e435bd18370eeed4c43ea18ba285d77f7,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,447,447,3,6,+3 (incl 2 for nesting)
+2,a18d5631c21aba49cf6dc44663b75ef35143aabf5d51f545bf7871d433533db5,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,650,650,3,5,+3 (incl 2 for nesting)
+2,a2cd780e6c4bab98d8d0a60a05f31b00e65ddc38f6acbf607b58b4d4830714a8,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,792,792,3,6,+3 (incl 2 for nesting)
+2,a2f0517c48bb25b1360745bc9469c7540740225e9231d9771111b2fc27dd770c,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,265,265,1,3,+1
+2,a563c971b055d5aceced13b7ac75617ffbf6db4baa6cf27cd3fcdfd248688e32,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,185,185,2,4,+2 (incl 1 for nesting)
+2,a72b5be1ab9c9022a569078889f7982410c7b6769699eeb219447f6759e170c6,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,796,796,4,6,+4 (incl 3 for nesting)
+2,a9b644793f1623a593dee58682629a3b4ce27dd510cbcd46f3d3dc1b6f939825,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,401,401,3,5,+3 (incl 2 for nesting)
+2,abef9a701ace9b93dc6eca9414f33cb446fffa4017ebeed38772a53cd97f0eed,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,187,187,4,8,+1
+2,ac587640251573851a3b8677f64d7a7dd440e6fae004cdcd9581fe54a56585f1,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,852,852,2,4,+2 (incl 1 for nesting)
+2,ad5f3b1beb576f6b65bceec48da786b07a9bfcd2f64b3f476a29adf89fcc3a5a,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,802,802,4,6,+4 (incl 3 for nesting)
+2,afc81eb6fba9b20e8384664f31329d1453b6e2882327acab7de2c05ff48209b0,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,521,521,4,6,+4 (incl 3 for nesting)
+2,b05df43117ab946bf25fac081de464cd5934dc03133d491847fcde82939d7256,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,507,507,3,5,+3 (incl 2 for nesting)
+2,b1de8f6e1edc2248110c916fdd9c389c2802bf4f09d76ea21097b7c435d8578c,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,817,817,3,5,+3 (incl 2 for nesting)
+2,b3c0c2543a0c2ce02dc71efae58aa94d62dfa5b4edf887aff815c74aee849bbb,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,773,773,4,6,+4 (incl 3 for nesting)
+2,b54dc6c494d1cd2ed3e2462659744445615dd64332b630eddc4ba16c3791f472,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,539,539,3,5,+3 (incl 2 for nesting)
+2,b7369c469dbe10242c64180e8ddff5f6793ee643486bedbd291cea2957c10c85,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,462,462,3,5,+3 (incl 2 for nesting)
+2,ba4b28985883f63fee449dd3c92c91c5f7c4d5c018c145ab1b2f531c701649c0,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,655,655,4,6,+4 (incl 3 for nesting)
+2,bca8d08b8d292b42548cf055c67a2793087cf1b0e3eb2b6c29600e770e17d79d,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,884,884,4,6,+4 (incl 3 for nesting)
+2,bce5c503ace5f5d4d61035fa6a150b5a44070a3dd3edc43860a79b02bab4b6af,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,515,515,4,6,+4 (incl 3 for nesting)
+2,bef7e917ee3e43677959e3eb14309fcace9533734a839d1a7a81637b919d1868,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,814,814,19,21,+1
+2,bfe10ec2b8a5d2cd560040a6792879ec107d9361401f58c887c99ee359666cf0,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,457,457,4,6,+4 (incl 3 for nesting)
+2,c0fa0d774aa5670f66d77f29a4dc148d277a4373c6acc286df1b65fa727e00f7,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,670,670,3,5,+3 (incl 2 for nesting)
+2,c1eec9eee8a75b4ed70b8cf7f68a27a00b9c0a4d916e9285767fc797e57b39cd,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,563,563,3,6,+3 (incl 2 for nesting)
+2,c2438c6694a705084a805c460b3c1d62711fbbef5996354e9dbda475260cd81a,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,635,635,3,6,+3 (incl 2 for nesting)
+2,ca07a842c24177e4c4483f93f91d37662ec5fecfeb62c8bcb0dcc8db0c16ba43,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,179,179,1,3,+1
+2,cc1a1e7a5d042aa0f6efa3f7675f293e5fe8fe10887485fa60fa1ee01bf51f26,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,697,697,4,6,+4 (incl 3 for nesting)
+2,cc4c988861de6dce47f67b908733721c61069229e802991eac330d1cdd370cc1,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,410,410,3,5,+3 (incl 2 for nesting)
+2,cf91ad2ce1af9bd9394085566b6b5caba408c58eb2ee3f907bce6818839d3e92,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,733,733,3,6,+3 (incl 2 for nesting)
+2,d336ca230978908856f6c14633b96f2bd44076e8ef666d6d7355a5700cec8c27,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,196,196,1,3,+1
+2,d7081ae72c18dca785846bf304bf3d89a4940e5d2e565c297f85e6f6614c301f,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,624,624,4,6,+4 (incl 3 for nesting)
+2,d936afac1068f4988e93f01c2757dafc9ab1754519b5d43d51d4ba266f923657,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,689,689,3,5,+3 (incl 2 for nesting)
+2,db04857892c8b4fbf272cb498013c12eb5c4b77c12c7f33cd8443af507301984,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,183,183,1,3,+1
+2,dffbdacd78170be5fd2aeee52878a5a3112bbe67ac534106f88d223146aae712,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,429,429,4,6,+4 (incl 3 for nesting)
+2,e1e197e43d0cbd955dd9dd6fc5a53034643a28bb1ab6418e4bf84e7d8e309c2e,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,582,582,3,5,+3 (incl 2 for nesting)
+2,e68c7162e2673030ab55573a2e29131e5d0a77451e44c544364128e60b685de5,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,865,865,4,6,+4 (incl 3 for nesting)
+2,e68ef2b61a6fc0f66c8f83d3310ca01162423ce473752da48f42cd32e14e9b88,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,400,400,2,5,+2 (incl 1 for nesting)
+2,e80692c6fdc23e90c2190a91e83274135570cfd2a138ac9e4bca188657c078f6,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,553,553,4,6,+4 (incl 3 for nesting)
+2,eb50a03697586e0a864bbbe4a99e073aaa7b428ec9546dedd74379d30641d4a0,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,419,419,2,4,+2 (incl 1 for nesting)
+2,f0c221157edc75b187358f2ccccc42d931ec80df5b2ab794e60dc8902b511627,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,753,753,3,6,+3 (incl 2 for nesting)
+2,f29de37cb1bd273692d0e314ba31de54a051d89530117952224bd707c1ca42bc,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,729,729,3,5,+3 (incl 2 for nesting)
+2,f3b7948c53a15df7ab45ffc47b33966e0b6a4cbeab3c0ce6a04006553c5f677e,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,599,599,4,6,+4 (incl 3 for nesting)
+2,f568e6b1df30d3a286d58fc4e0771583206245c12f55138a2d0341d14646b91d,AYYrCDQwCVdTZLqEeJty,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,840,840,3,5,+3 (incl 2 for nesting)
+2,f69c319392db95de538c95d40c178ecb6fa724cb1c97e0a3c9b574fc6ba9e4f9,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,219,219,3,7,+1
+2,fa3106a6ef37a09d21159fd7805660e16e3ae67129d2c602ea822c851a8aeafe,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,709,709,3,5,+3 (incl 2 for nesting)
+2,fc3a61db9db385287bd9bf92f6abc9c620eae30e804f31e9fad9985ffc3b2348,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,678,678,4,6,+4 (incl 3 for nesting)
+2,fc738f5444ee74a111e9d7396cd81599cb52e09f211fc7eac466588cfc6083a3,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,793,793,4,6,+4 (incl 3 for nesting)
+2,fc7cb482acdc8e984bf86844cbe5afafe69d2c9d19c2d6e2adc6b9c6b38f61f8,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,432,432,4,6,+4 (incl 3 for nesting)
+2,fc9df5a77627155706d90c99507df8e6eec8d636973c5963f322438b3675967f,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,267,267,3,7,+1
+2,fe1242968d3a294fedc3de0cf5ec88ef5144492b50974b53a15fa5a7914f83e1,AYYrCDQwCVdTZLqEeJtx,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,443,443,3,5,+3 (incl 2 for nesting)
+2,ff32556cb95ac1cec48b3505ec226b491d9f43a05e1b9fb528693c512266f92b,AYYrCDQwCVdTZLqEeJtw,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,225,225,1,3,+1
diff --git a/backend/plugins/sonarqube/e2e/snapshot_tables/_tool_sonarqube_issues.csv b/backend/plugins/sonarqube/e2e/snapshot_tables/_tool_sonarqube_issues.csv
new file mode 100644
index 000000000..2b5680e4f
--- /dev/null
+++ b/backend/plugins/sonarqube/e2e/snapshot_tables/_tool_sonarqube_issues.csv
@@ -0,0 +1,7 @@
+connection_id,issue_key,rule,severity,component,project_key,line,status,message,debt,effort,author,hash,tags,type,scope,start_line,end_line,start_offset,end_offset,creation_date,update_date
+1,AYUwBbCC46XwcL-YZOTH,java:S5993,MAJOR,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/FeatureDictionary.java,f5a50c63-2e8f-4107-9014-853f6f467757,24,OPEN,"Change the visibility of this constructor to ""protected"".",2min,2min,hector.yee@airbnb.com,cb21cfee164b0548717edfe840aea8a2,design,CODE_SMELL,MAIN,24,24,2,8,2015-05-12T19:22:15.000+00:00,2022-12-20T14:50:30.000+00:00
+1,AYUwBbGD46XwcL-YZOUu,java:S3824,MAJOR,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java,f5a50c63-2e8f-4107-9014-853f6f467757,171,OPEN,"Replace this ""Map.get()"" and condition with a call to ""Map.computeIfAbsent()"".",10min,10min,hector.yee@airbnb.com,136741d9bacea2c123cc5a81be33aa4b,java8,CODE_SMELL,MAIN,171,171,25,49,2015-05-12T19:22:15.000+00:00,2022-12-20T14:50:30.000+00:00
+1,AYUwBbGD46XwcL-YZOUv,java:S3824,MAJOR,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java,f5a50c63-2e8f-4107-9014-853f6f467757,182,OPEN,"Replace this ""Map.get()"" and condition with a call to ""Map.computeIfAbsent()"".",10min,10min,hector.yee@airbnb.com,fbe0119b6af3a6db83bfd6fdb9a6833b,java8,CODE_SMELL,MAIN,182,182,33,56,2015-05-12T19:22:15.000+00:00,2022-12-20T14:50:30.000+00:00
+2,AYYrCDQwCVdTZLqEeJtw,go:S3776,CRITICAL,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,testWarrenEtcd,174,OPEN,Refactor this method to reduce its Cognitive Complexity from 21 to the 15 allowed.,11min,11min,,4b568473b2815c6fdf0ed4a6d0083517,brain-overload,CODE_SMELL,MAIN,174,174,18,38,2023-02-07T08:39:18.000+00:00,2023-02-07T08:39:18.000+00:00
+2,AYYrCDQwCVdTZLqEeJtx,go:S3776,CRITICAL,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,testWarrenEtcd,394,OPEN,Refactor this method to reduce its Cognitive Complexity from 371 to the 15 allowed.,6h1min,6h1min,,5757b656ecd68cade0c4ffbee99d2cf0,brain-overload,CODE_SMELL,MAIN,394,394,18,27,2023-02-07T08:39:18.000+00:00,2023-02-07T08:39:18.000+00:00
+2,AYYrCDQwCVdTZLqEeJty,go:S3776,CRITICAL,testWarrenEtcd:api/etcdserverpb/etcdserver.pb.go,testWarrenEtcd,830,OPEN,Refactor this method to reduce its Cognitive Complexity from 65 to the 15 allowed.,55min,55min,,cea1920565d72b55451cd8145aa6e6fb,brain-overload,CODE_SMELL,MAIN,830,830,19,28,2023-02-07T08:39:18.000+00:00,2023-02-07T08:39:18.000+00:00
diff --git a/backend/plugins/sonarqube/e2e/snapshot_tables/issue_code_blocks.csv b/backend/plugins/sonarqube/e2e/snapshot_tables/issue_code_blocks.csv
new file mode 100644
index 000000000..a80c676df
--- /dev/null
+++ b/backend/plugins/sonarqube/e2e/snapshot_tables/issue_code_blocks.csv
@@ -0,0 +1,8 @@
+id,issue_key,component,start_line,end_line,start_offset,end_offset,msg
+sonarqube:SonarqubeIssueCodeBlock:1:6d35f8c9e0c1ce2e95e8386fdfd976cbd5d68de958285101fd21356360860f08,sonarqube:SonarqubeIssue:1:AYUwBbGD46XwcL-YZOUv,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java,182,182,33,56,Implies 'output' can be null.
+sonarqube:SonarqubeIssueCodeBlock:1:80ca0546dc21f656a373527df464efe074a306b5ca441cc96d92bac0853f142e,sonarqube:SonarqubeIssue:1:AYUwBbGD46XwcL-YZOUu,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java,171,171,25,49,Implies 'output' can be null.
+sonarqube:SonarqubeIssueCodeBlock:1:88fe8ed882e5438658656ff984a44bb4ab716a45f6d4c81650cbbc7bc9191d1d,sonarqube:SonarqubeIssue:1:AYUwBbCC46XwcL-YZOTH,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/FeatureDictionary.java,24,24,2,8,"This class is ""abstract""."
+sonarqube:SonarqubeIssueCodeBlock:1:89c3dbfaf707c841c723e364d451c7b90b640fce873848a7b402949bec83db45,sonarqube:SonarqubeIssue:1:AYUwBbGD46XwcL-YZOUv,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java,182,182,33,56,'Map.put()' is invoked with same key.
+sonarqube:SonarqubeIssueCodeBlock:1:a8e9126930c50bc4b2198f0a8e5f525594cdf49d7e8c0ff44f3252a450e4bb5c,sonarqube:SonarqubeIssue:1:AYUwBbGD46XwcL-YZOUu,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java,171,171,25,49,'Map.put()' is invoked with same key.
+sonarqube:SonarqubeIssueCodeBlock:1:bfafb9def80ba309af3aa6b3a9e653905bf02861e0ec762edff0378061cc471b,sonarqube:SonarqubeIssue:1:AYUwBbGD46XwcL-YZOUu,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java,171,171,25,49,'Map.get()' is invoked.
+sonarqube:SonarqubeIssueCodeBlock:1:d06c8ec1c90c895af02bc25c9343d31722af728f66243c8e84cfb711fa678d4f,sonarqube:SonarqubeIssue:1:AYUwBbGD46XwcL-YZOUv,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java,182,182,33,56,'Map.get()' is invoked.
diff --git a/backend/plugins/sonarqube/e2e/snapshot_tables/issues.csv b/backend/plugins/sonarqube/e2e/snapshot_tables/issues.csv
new file mode 100644
index 000000000..1069cafb4
--- /dev/null
+++ b/backend/plugins/sonarqube/e2e/snapshot_tables/issues.csv
@@ -0,0 +1,4 @@
+id,rule,severity,component,project_key,line,status,message,debt,effort,commit_author_email,assignee,hash,tags,type,scope,start_line,end_line,start_offset,end_offset,vulnerability_probability,security_category,creation_date,update_date
+sonarqube:SonarqubeIssue:1:AYUwBbCC46XwcL-YZOTH,java:S5993,MAJOR,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/FeatureDictionary.java,sonarqube:SonarqubeProject:1:f5a50c63-2e8f-4107-9014-853f6f467757,24,OPEN,"Change the visibility of this constructor to ""protected"".",2min,2min,hector.yee@airbnb.com,,cb21cfee164b0548717edfe840aea8a2,design,CODE_SMELL,MAIN,24,24,2,8,,,2015-05-12T19:22:15.000+00:00,2022-12-20T14:50:30.000+00:00
+sonarqube:SonarqubeIssue:1:AYUwBbGD46XwcL-YZOUu,java:S3824,MAJOR,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java,sonarqube:SonarqubeProject:1:f5a50c63-2e8f-4107-9014-853f6f467757,171,OPEN,"Replace this ""Map.get()"" and condition with a call to ""Map.computeIfAbsent()"".",10min,10min,hector.yee@airbnb.com,,136741d9bacea2c123cc5a81be33aa4b,java8,CODE_SMELL,MAIN,171,171,25,49,,,2015-05-12T19:22:15.000+00:00,2022-12-20T14:50:30.000+00:00
+sonarqube:SonarqubeIssue:1:AYUwBbGD46XwcL-YZOUv,java:S3824,MAJOR,f5a50c63-2e8f-4107-9014-853f6f467757:core/src/main/java/com/airbnb/aerosolve/core/util/Util.java,sonarqube:SonarqubeProject:1:f5a50c63-2e8f-4107-9014-853f6f467757,182,OPEN,"Replace this ""Map.get()"" and condition with a call to ""Map.computeIfAbsent()"".",10min,10min,hector.yee@airbnb.com,,fbe0119b6af3a6db83bfd6fdb9a6833b,java8,CODE_SMELL,MAIN,182,182,33,56,,,2015-05-12T19:22:15.000+00:00,2022-12-20T14:50:30.000+00:00
diff --git a/backend/plugins/sonarqube/tasks/issue_code_blocks_convertor.go b/backend/plugins/sonarqube/tasks/issue_code_blocks_convertor.go
index f2175feef..615b1ccc5 100644
--- a/backend/plugins/sonarqube/tasks/issue_code_blocks_convertor.go
+++ b/backend/plugins/sonarqube/tasks/issue_code_blocks_convertor.go
@@ -37,7 +37,7 @@ func ConvertIssueCodeBlocks(taskCtx plugin.SubTaskContext) errors.Error {
 
 	cursor, err := db.Cursor(
 		dal.From("_tool_sonarqube_issue_code_blocks icb"),
-		dal.Join("left join _tool_sonarqube_issues i on i.project_key = icb.issue_key"),
+		dal.Join("left join _tool_sonarqube_issues i on i.issue_key = icb.issue_key"),
 		dal.Where("icb.connection_id = ? and project_key = ?", data.Options.ConnectionId, data.Options.ProjectKey))
 	if err != nil {
 		return err