self.author = LookupStoreHacker('Unknown hacker', 'unknown@hacker.net')
self.email = 'unknown@hacker.net'
self.sobs = [ ]
+ self.revs = [ ]
self.reviews = [ ]
self.acks = [ ]
self.testers = [ ]
def addacker (self, reviewer):
self.acks.append (reviewer)
+ self.reviews.append (reviewer)
def addtester (self, tester):
self.testers.append (tester)
m = patterns['reviewed-by'].match (Line)
if m:
email = database.RemapEmail (m.group (2))
- p.addreviewer (LookupStoreHacker(m.group (1), email))
+ reviewer = LookupStoreHacker(m.group (1), email)
+ p.addreviewer (reviewer)
+ if reviewer != p.author:
+ p.revs.append ((email, LookupStoreHacker(m.group (1), m.group (2))))
continue
# Acked-by:
m = patterns['acked-by'].match (Line)
if m:
email = database.RemapEmail (m.group (2))
- p.addacker (LookupStoreHacker(m.group (1), email))
+ acker = LookupStoreHacker(m.group (1), email)
+ p.addacker (acker)
+ if acker != p.author:
+ p.revs.append ((email, LookupStoreHacker(m.group (1), m.group (2))))
continue
# Tested-by:
m = patterns['tested-by'].match (Line)
for sobemail, sobber in p.sobs:
empl = sobber.emailemployer (sobemail, p.date)
empl.AddSOB()
+ for revmail, reviewer in p.revs:
+ empl = reviewer.emailemployer (revmail, p.date)
+ empl.AddReview()
if not p.merge:
p.author.addpatch (p)
for hacker in p.reviews:
hacker.addreview (p)
for hacker in p.acks:
- # An ACK also counts as a review
- # (but there is no easy way to not double count, if there are both)
hacker.addacked (p)
- hacker.addreview (p)
for hacker in p.testers:
hacker.addtested (p)
for hacker in p.reports:
if count >= ListCount:
break
EndReport ()
+
+def CompareEReviews (e1, e2):
+ return e2.reviews - e1.reviews
+
+def ReportByEReviews (elist):
+ elist.sort (CompareEReviews)
+ totalreviews = 0
+ for e in elist:
+ totalreviews += e.reviews
+ count = 0
+ BeginReport ('Employers with the most Reviews and ACKs (total %d)' % totalreviews)
+ for e in elist:
+ if e.reviews > 0:
+ ReportLine (e.name, e.reviews, (e.reviews*100.0)/totalreviews)
+ count += 1
+ if count >= ListCount:
+ break
+ EndReport ()
+
def CompareHackers (e1, e2):
return len (e2.hackers) - len (e1.hackers)
ReportByPCEmpl (elist, cscount)
ReportByELChanged (elist, totalchanged)
ReportByESOBs (elist)
+ ReportByEReviews (elist)
ReportByEHackers (elist)
#