diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:06:44 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:06:44 +0000 |
commit | ed5640d8b587fbcfed7dd7967f3de04b37a76f26 (patch) | |
tree | 7a5f7c6c9d02226d7471cb3cc8fbbf631b415303 /bin/compare-crashreport-stats.py | |
parent | Initial commit. (diff) | |
download | libreoffice-ed5640d8b587fbcfed7dd7967f3de04b37a76f26.tar.xz libreoffice-ed5640d8b587fbcfed7dd7967f3de04b37a76f26.zip |
Adding upstream version 4:7.4.7.upstream/4%7.4.7upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'bin/compare-crashreport-stats.py')
-rwxr-xr-x | bin/compare-crashreport-stats.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/bin/compare-crashreport-stats.py b/bin/compare-crashreport-stats.py new file mode 100755 index 000000000..26db30c24 --- /dev/null +++ b/bin/compare-crashreport-stats.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python3 + +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# Use this script to compare the crashreport stats of two different versions of LibreOffice. +# Usage sample: ./compare-crashreport-stats.py --old 7.2.0.4 --new 7.2.1.2 + +import requests +from bs4 import BeautifulSoup +import argparse +import sys + +def parse_url(url): + crashReports = {} + html_text = requests.get(url).text + soup = BeautifulSoup(html_text, 'html.parser') + + table = soup.find("table", {"id": "data-table"}).tbody + for tr in table.find_all("tr"): + td_list = tr.find_all("td") + crashName = td_list[0].a.text.strip() + crashNumber = int(td_list[1].text.strip()) + crashReports[crashName] = crashNumber + + return crashReports + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + + parser.add_argument('--old', action='store', dest="old", required=True) + parser.add_argument('--new', action="store", dest="new", required=True) + + results = parser.parse_args() + + oldVersion = parse_url( + "https://crashreport.libreoffice.org/stats/version/" + results.old + "?limit=1000&days=30") + newVersion = parse_url( + "https://crashreport.libreoffice.org/stats/version/" + results.new + "?limit=1000&days=30") + + print(str(len(oldVersion)) + " crash reports in version " + results.old) + print(str(len(newVersion)) + " crash reports in version " + results.new) + print() + + print("===== Fixed Reports =====") + fixedReports = set(oldVersion.keys()) - set(newVersion.keys()) + for k, v in sorted(oldVersion.items(), key=lambda item: item[1], reverse=True): + # Ignore rare reports + if v >= 20 and k in fixedReports: + print(str(v) + " " + k) + + print() + print("===== Newly introduced Reports =====") + newReports = set(newVersion.keys()) - set(oldVersion.keys()) + for k, v in sorted(newVersion.items(), key=lambda item: item[1], reverse=True): + # Ignore rare reports + if v >= 20 and k in newReports: + print(str(v) + " " + k) + print() |