@@ -295,12 +295,18 @@ func (couples *CouplesAnalysis) Deserialize(pbmessage []byte) (interface{}, erro
295
295
reversedPeopleDict : message .PeopleCouples .Index ,
296
296
}
297
297
for i , files := range message .PeopleFiles {
298
- result .FilesLines [i ] = int (message .FilesLines [i ])
299
298
result .PeopleFiles [i ] = make ([]int , len (files .Files ))
300
299
for j , val := range files .Files {
301
300
result.PeopleFiles [i ][j ] = int (val )
302
301
}
303
302
}
303
+ if len (message .FileCouples .Index ) != len (message .FilesLines ) {
304
+ log .Panicf ("Couples PB message integrity violation: file_couples (%d) != file_lines (%d)" ,
305
+ len (message .FileCouples .Index ), len (message .FilesLines ))
306
+ }
307
+ for i , v := range message .FilesLines {
308
+ result .FilesLines [i ] = int (v )
309
+ }
304
310
convertCSR := func (dest []map [int ]int64 , src * pb.CompressedSparseRowMatrix ) {
305
311
for indptr := range src .Indptr {
306
312
if indptr == 0 {
@@ -323,9 +329,9 @@ func (couples *CouplesAnalysis) MergeResults(r1, r2 interface{}, c1, c2 *core.Co
323
329
cr2 := r2 .(CouplesResult )
324
330
merged := CouplesResult {}
325
331
var people , files map [string ][3 ]int
326
- people , merged . reversedPeopleDict = identity.Detector {}. MergeReversedDicts (
327
- cr1 .reversedPeopleDict , cr2 .reversedPeopleDict )
328
- files , merged .Files = identity. Detector {} .MergeReversedDicts (cr1 .Files , cr2 .Files )
332
+ id : = identity.Detector {}
333
+ people , merged . reversedPeopleDict = id . MergeReversedDicts ( cr1 .reversedPeopleDict , cr2 .reversedPeopleDict )
334
+ files , merged .Files = id .MergeReversedDicts (cr1 .Files , cr2 .Files )
329
335
merged .FilesLines = make ([]int , len (merged .Files ))
330
336
for i , name := range merged .Files {
331
337
idxs := files [name ]
@@ -364,8 +370,7 @@ func (couples *CouplesAnalysis) MergeResults(r1, r2 interface{}, c1, c2 *core.Co
364
370
sort .Ints (merged .PeopleFiles [i ])
365
371
}
366
372
merged .PeopleMatrix = make ([]map [int ]int64 , len (merged .reversedPeopleDict )+ 1 )
367
- addPeople := func (peopleMatrix []map [int ]int64 , reversedPeopleDict []string ,
368
- reversedFilesDict []string ) {
373
+ addPeople := func (peopleMatrix []map [int ]int64 , reversedPeopleDict []string ) {
369
374
for pi , pc := range peopleMatrix {
370
375
var idx int
371
376
if pi < len (reversedPeopleDict ) {
@@ -378,13 +383,19 @@ func (couples *CouplesAnalysis) MergeResults(r1, r2 interface{}, c1, c2 *core.Co
378
383
m = map [int ]int64 {}
379
384
merged .PeopleMatrix [idx ] = m
380
385
}
381
- for file , val := range pc {
382
- m [files [reversedFilesDict [file ]][0 ]] += val
386
+ for otherDev , val := range pc {
387
+ var otherIdx int
388
+ if otherDev < len (reversedPeopleDict ) {
389
+ otherIdx = people [reversedPeopleDict [otherDev ]][0 ]
390
+ } else {
391
+ otherIdx = len (merged .reversedPeopleDict )
392
+ }
393
+ m [otherIdx ] += val
383
394
}
384
395
}
385
396
}
386
- addPeople (cr1 .PeopleMatrix , cr1 .reversedPeopleDict , cr1 . Files )
387
- addPeople (cr2 .PeopleMatrix , cr2 .reversedPeopleDict , cr2 . Files )
397
+ addPeople (cr1 .PeopleMatrix , cr1 .reversedPeopleDict )
398
+ addPeople (cr2 .PeopleMatrix , cr2 .reversedPeopleDict )
388
399
merged .FilesMatrix = make ([]map [int ]int64 , len (merged .Files ))
389
400
addFiles := func (filesMatrix []map [int ]int64 , reversedFilesDict []string ) {
390
401
for fi , fc := range filesMatrix {
0 commit comments