[Libreoffice-commits] dev-tools.git: 3 commits - esc-reporting/esc-analyze.py esc-reporting/esc-report.py
Xisco Fauli
anistenis at gmail.com
Wed Dec 21 12:28:16 UTC 2016
esc-reporting/esc-analyze.py | 79 +++++++++++----------
esc-reporting/esc-report.py | 156 ++++++++++++++++++++++++++++++++-----------
2 files changed, 158 insertions(+), 77 deletions(-)
New commits:
commit 392933ddca95e5abba1e09954ebbd8d906451cd0
Author: Xisco Fauli <anistenis at gmail.com>
Date: Wed Dec 21 13:26:54 2016 +0100
Update user name if we find it
diff --git a/esc-reporting/esc-analyze.py b/esc-reporting/esc-analyze.py
index 2b2863c..3aa3930 100755
--- a/esc-reporting/esc-analyze.py
+++ b/esc-reporting/esc-analyze.py
@@ -232,6 +232,9 @@ def util_check_mail(name, mail):
statList['people'][mail] = util_create_person_gerrit(name, mail)
if mail == '*DUMMY*':
statList['people'][mail]['licenseOK'] = True
+ else:
+ if name and name != '*UNKNOWN*' and statList['people'][mail]['name'] == '*UNKNOWN*':
+ statList['people'][mail]['name'] = name
return mail
commit c5603e2c153be14184c36d2d3694facb34bf331a
Author: Xisco Fauli <anistenis at gmail.com>
Date: Wed Dec 21 11:53:37 2016 +0100
Reintroduce report_qa part and only display 1 week
in the stats
diff --git a/esc-reporting/esc-report.py b/esc-reporting/esc-report.py
index cc24085..b08dae6 100755
--- a/esc-reporting/esc-report.py
+++ b/esc-reporting/esc-report.py
@@ -372,55 +372,133 @@ def report_ui():
def report_qa():
global statList, openhubData, gerritData, gitData, bugzillaData, cfg
- return
- tmpClist = sorted(statList['people'], key=lambda k: (statList['people'][k]['qa']['1month']['total']), reverse=True)
- top10list = []
- for i in tmpClist:
- if i != 'qa-admin at libreoffice.org' and i != 'libreoffice-commits at lists.freedesktop.org':
- x = {'mail': i, 'name': statList['people'][i]['name'],
- 'month' :statList['people'][i]['qa']['1month']['total'],
- 'year':statList['people'][i]['qa']['1year']['total']}
- top10list.append(x)
- if len(top10list) >= 10:
- break
fp = open('/tmp/esc_qa_report.txt', 'w', encoding='utf-8')
print('ESC QA report, generated {} based on stats.json from {}'.format(
datetime.datetime.now().strftime("%Y-%m-%d"), statList['addDate']), file=fp)
print("copy/paste to esc pad:\n"
- "* qa update (xisco)\n"
- " + Bugzilla statistics", file=fp)
-
- xRow = [{'db': 'qa', 'tag': 'ASSIGNED', 'text': 'ASSIGNED'},
- {'db': 'qa', 'tag': 'CLOSED', 'text': 'CLOSED'},
- {'db': 'qa', 'tag': 'NEEDINFO', 'text': 'NEEDINFO'},
- {'db': 'qa', 'tag': 'NEW', 'text': 'NEW'},
- {'db': 'qa', 'tag': 'PLEASETEST', 'text': 'PLEASETEST'},
- {'db': 'qa', 'tag': 'REOPENED', 'text': 'REOPENED'},
- {'db': 'qa', 'tag': 'RESOLVED', 'text': 'RESOLVED'},
- {'db': 'qa', 'tag': 'UNCONFIRMED', 'text': 'UNCONFIRMED'},
- {'db': 'qa', 'tag': 'VERIFIED', 'text': 'VERIFIED'},
- {'db': 'qa', 'tag': 'commented', 'text': 'commented'},
- {'db': 'qa', 'tag': 'total', 'text': 'total'}]
- print(util_build_matrix('BZ changes', xRow, None, statList), end='', file=fp)
- print(" + Distribution of people based on number of changes:", file=fp)
- xRow = [{'db': 'trendQA', 'tag': '1-5', 'text': '1-5'},
- {'db': 'trendQA', 'tag': '6-25', 'text': '6-25'},
- {'db': 'trendQA', 'tag': '26-50', 'text': '26-50'},
- {'db': 'trendQA', 'tag': '51-100', 'text': '51-100'},
- {'db': 'trendQA', 'tag': '100+', 'text': '100+'}]
- print(util_build_matrix('distribution', xRow, None, statList), end='', file=fp)
-
- print("\n + top 10 contributors:", file=fp)
- for i in range(0, 10):
- print(' {} made {} changes in 1 month, and {} changes in 1 year'.format(
- top10list[i]['mail'], top10list[i]['month'], top10list[i]['year']), file=fp)
+ "* qa update (xisco)\n", file=fp)
+
+ print(" + UNCONFIRMED: {} ( )\n"
+ " + enhancements: {} ( )\n"
+ " + needsUXEval: {} ( )\n"
+ " + haveBackTrace: {} ( )\n"
+ " + needsDevAdvice: {} ( )\n".format(
+ statList['data']['qa']['unconfirmed']['count'],
+ statList['data']['qa']['unconfirmed']['enhancement'],
+ statList['data']['qa']['unconfirmed']['needsUXEval'],
+ statList['data']['qa']['unconfirmed']['haveBacktrace'],
+ statList['data']['qa']['unconfirmed']['needsDevAdvice'],), file=fp)
+
+ reporters = sorted(statList['people'], key=lambda k: (statList['people'][k]['qa']['1week']['owner']), reverse=True)
+
+ print("\n + top 10 bugs reporters:", file=fp)
+ top10reporters = reporters[0:10]
+ max_width = 0
+ for i in top10reporters:
+ if statList['people'][i]['qa']['1week']['owner'] == 0:
+ break
+ max_width = max(max_width, len(statList['people'][i]['name']))
+
+ for index, item in enumerate(top10reporters):
+ if statList['people'][item]['qa']['1week']['owner'] == 0:
+ break
+ print(' {0:2d}. {1:{3}s} :{2:3d}'.format( index + 1,
+ statList['people'][item]['name'], statList['people'][item]['qa']['1week']['owner'],
+ max_width), file=fp)
+
+ fixers = sorted(statList['people'], key=lambda k: (statList['people'][k]['qa']['1week']['fixed']), reverse=True)
+
+ print("\n + top 10 bugs fixers:", file=fp)
+ top10fixers = fixers[0:10]
+ max_width = 0
+ for i in top10fixers:
+ if statList['people'][i]['qa']['1week']['fixed'] == 0:
+ break
+ max_width = max(max_width, len(statList['people'][i]['name']))
+
+ for index, item in enumerate(top10fixers):
+ if statList['people'][item]['qa']['1week']['fixed'] == 0:
+ break
+ print(' {0:2d}. {1:{3}s} :{2:3d}'.format( index + 1,
+ statList['people'][item]['name'], statList['people'][item]['qa']['1week']['fixed'],
+ max_width), file=fp)
+
+
+ bisected = sorted(statList['people'], key=lambda k: (statList['people'][k]['qa']['1week']['bisected']), reverse=True)
+
+ print("\n + Bisected done by:", file=fp)
+ top10bisected = bisected[0:10]
+ max_width = 0
+ for i in top10bisected:
+ if statList['people'][i]['qa']['1week']['bisected'] == 0:
+ break
+ max_width = max(max_width, len(statList['people'][i]['name']))
+
+ for index, item in enumerate(top10bisected):
+ if statList['people'][item]['qa']['1week']['bisected'] == 0:
+ break
+ print(' {0:2d}. {1:{3}s} :{2:3d}'.format( index + 1,
+ statList['people'][item]['name'], statList['people'][item]['qa']['1week']['bisected'],
+ max_width), file=fp)
+
+ bibisected = sorted(statList['people'], key=lambda k: (statList['people'][k]['qa']['1week']['bibisected']), reverse=True)
+
+ print("\n + Bibisected done by:", file=fp)
+ top10bibisected = bibisected[0:10]
+ max_width = 0
+ for i in top10bibisected:
+ if statList['people'][i]['qa']['1week']['bibisected'] == 0:
+ break
+ max_width = max(max_width, len(statList['people'][i]['name']))
+
+ for index, item in enumerate(top10bibisected):
+ if statList['people'][item]['qa']['1week']['bibisected'] == 0:
+ break
+ print(' {0:2d}. {1:{3}s} :{2:3d}'.format( index + 1,
+ statList['people'][item]['name'], statList['people'][item]['qa']['1week']['bibisected'],
+ max_width), file=fp)
+
+ regression = sorted(statList['people'], key=lambda k: (statList['people'][k]['qa']['1week']['regression']), reverse=True)
+
+ print("\n + Regression added by:", file=fp)
+ top10regression = regression[0:10]
+ max_width = 0
+ for i in top10regression:
+ if statList['people'][i]['qa']['1week']['regression'] == 0:
+ break
+ max_width = max(max_width, len(statList['people'][i]['name']))
+
+ for index, item in enumerate(top10regression):
+ if statList['people'][item]['qa']['1week']['regression'] == 0:
+ break
+ print(' {0:2d}. {1:{3}s} :{2:3d}'.format( index + 1,
+ statList['people'][item]['name'], statList['people'][item]['qa']['1week']['regression'],
+ max_width), file=fp)
+
+
+ backtrace = sorted(statList['people'], key=lambda k: (statList['people'][k]['qa']['1week']['backtrace']), reverse=True)
+
+ print("\n + Backtrace added by:", file=fp)
+ top10backtrace = backtrace[0:10]
+ max_width = 0
+ for i in top10backtrace:
+ if statList['people'][i]['qa']['1week']['backtrace'] == 0:
+ break
+ max_width = max(max_width, len(statList['people'][i]['name']))
+
+ for index, item in enumerate(top10backtrace):
+ if statList['people'][item]['qa']['1week']['backtrace'] == 0:
+ break
+ print(' {0:2d}. {1:{3}s} :{2:3d}'.format( index + 1,
+ statList['people'][item]['name'], statList['people'][item]['qa']['1week']['backtrace'],
+ max_width), file=fp)
+
fp.close()
return None
-
def report_myfunc():
global statList, openhubData, gerritData, gitData, bugzillaData, cfg
commit 52806f402ef87e98bebec13b6e13406197b47950
Author: Xisco Fauli <anistenis at gmail.com>
Date: Wed Dec 21 11:34:31 2016 +0100
Ignore meta and deletionrequest bugs in unconfirmed count
diff --git a/esc-reporting/esc-analyze.py b/esc-reporting/esc-analyze.py
index 17b9f15..2b2863c 100755
--- a/esc-reporting/esc-analyze.py
+++ b/esc-reporting/esc-analyze.py
@@ -417,44 +417,44 @@ def analyze_qa():
print("qa: analyze bugzilla", flush=True)
for key, row in bugzillaData['bugs'].items():
- email = util_check_mail(row['creator_detail']['real_name'], row['creator'])
- xDate = datetime.datetime.strptime(row['last_change_time'], "%Y-%m-%dT%H:%M:%SZ")
- creationDate = datetime.datetime.strptime(row['creation_time'], "%Y-%m-%dT%H:%M:%SZ")
- if xDate > cfg['cutDate']:
- continue
-
-
- if row['status'] == 'UNCONFIRMED':
- statList['data']['qa']['unconfirmed']['count'] += 1
- if 'needsUXEval' in row['keywords']:
- statList['data']['qa']['unconfirmed']['needsUXEval'] += 1
- if 'needsDevAdvice' in row['keywords']:
- statList['data']['qa']['unconfirmed']['needsDevAdvice'] += 1
- if 'haveBacktrace' in row['keywords']:
- statList['data']['qa']['unconfirmed']['haveBacktrace'] += 1
- if row['severity'] == 'enhancement':
- statList['data']['qa']['unconfirmed']['enhancement'] += 1
-
- util_build_period_stat(creationDate, email, 'qa', 'owner')
-
- for change in row['history']:
- email = util_check_mail('*UNKNOWN*', change['who'])
- xDate = datetime.datetime.strptime(change['when'], "%Y-%m-%dT%H:%M:%SZ")
- for entry in change['changes']:
- if entry['field_name'] == 'keywords':
- keywordsAdded = entry['added'].split(", ")
- for keyword in keywordsAdded:
- if keyword == 'bisected':
- util_build_period_stat(xDate, email, 'qa', 'bisected')
- if keyword == 'bibisected':
- util_build_period_stat(xDate, email, 'qa', 'bibisected')
- if keyword == 'regression':
- util_build_period_stat(xDate, email, 'qa', 'regression')
- if keyword == 'haveBacktrace':
- util_build_period_stat(xDate, email, 'qa', 'backtrace')
- elif entry['field_name'] == 'resolution':
- if entry['added'] == 'FIXED':
- util_build_period_stat(xDate, email, 'qa', 'fixed')
+ #Ignore META bugs and deletionrequest bugs.
+ if not row['summary'].startswith('[META]') \
+ and row['component'] != 'deletionrequest':
+ email = util_check_mail(row['creator_detail']['real_name'], row['creator'])
+ xDate = datetime.datetime.strptime(row['last_change_time'], "%Y-%m-%dT%H:%M:%SZ")
+ creationDate = datetime.datetime.strptime(row['creation_time'], "%Y-%m-%dT%H:%M:%SZ")
+
+ if row['status'] == 'UNCONFIRMED':
+ statList['data']['qa']['unconfirmed']['count'] += 1
+ if 'needsUXEval' in row['keywords']:
+ statList['data']['qa']['unconfirmed']['needsUXEval'] += 1
+ if 'needsDevAdvice' in row['keywords']:
+ statList['data']['qa']['unconfirmed']['needsDevAdvice'] += 1
+ if 'haveBacktrace' in row['keywords']:
+ statList['data']['qa']['unconfirmed']['haveBacktrace'] += 1
+ if row['severity'] == 'enhancement':
+ statList['data']['qa']['unconfirmed']['enhancement'] += 1
+
+ util_build_period_stat(creationDate, email, 'qa', 'owner')
+
+ for change in row['history']:
+ email = util_check_mail('*UNKNOWN*', change['who'])
+ xDate = datetime.datetime.strptime(change['when'], "%Y-%m-%dT%H:%M:%SZ")
+ for entry in change['changes']:
+ if entry['field_name'] == 'keywords':
+ keywordsAdded = entry['added'].split(", ")
+ for keyword in keywordsAdded:
+ if keyword == 'bisected':
+ util_build_period_stat(xDate, email, 'qa', 'bisected')
+ if keyword == 'bibisected':
+ util_build_period_stat(xDate, email, 'qa', 'bibisected')
+ if keyword == 'regression':
+ util_build_period_stat(xDate, email, 'qa', 'regression')
+ if keyword == 'haveBacktrace':
+ util_build_period_stat(xDate, email, 'qa', 'backtrace')
+ elif entry['field_name'] == 'resolution':
+ if entry['added'] == 'FIXED':
+ util_build_period_stat(xDate, email, 'qa', 'fixed')
def analyze_myfunc():
global cfg, statList, openhubData, bugzillaData, gerritData, gitData, licenceCompanyData, licencePersonalData
More information about the Libreoffice-commits
mailing list