From 9594ccb290e1c8d0d3031c0004b76aa46383581f Mon Sep 17 00:00:00 2001 From: licihua Date: Sun, 25 Apr 2021 20:21:28 +0800 Subject: [PATCH] Refactoring code for issue_report --- advisors/issue_report.py | 138 +++++++++++++++------------------------ command/issue_report | 6 +- 2 files changed, 57 insertions(+), 87 deletions(-) diff --git a/advisors/issue_report.py b/advisors/issue_report.py index 5c7df267..409fc0de 100755 --- a/advisors/issue_report.py +++ b/advisors/issue_report.py @@ -1,15 +1,28 @@ #!/usr/bin/env python3 - +# ****************************************************************************** +# Copyright (c) Huawei Technologies Co., Ltd. 2020-2021. All rights reserved. +# licensed under the Mulan PSL v2. +# You can use this software according to the terms and conditions of the Mulan PSL v2. +# You may obtain a copy of Mulan PSL v2 at: +# http://license.coscl.org.cn/MulanPSL2 +# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR +# PURPOSE. +# See the Mulan PSL v2 for more details. +# +# ******************************************************************************/ """ -Description:generate issue report +This is a simple script to get issue report for openEuler. """ -# pylint: disable=inconsistent-return-statements # pylint: disable=broad-except # pylint: disable=no-else-return # pylint: disable=too-many-locals -import copy +# pylint: disable=too-many-statements + import os import sys +import argparse +import copy import json import pandas as pd import requests @@ -18,15 +31,15 @@ FILE_NAME = sys.argv[0] CMD_INPUT_ARGS = sys.argv[1:] -def _to_markdown(df: pd.DataFrame, index=False): - cols = list(df.columns) +def _to_markdown(data_frame: pd.DataFrame, index=False): + cols = list(data_frame.columns) if index: cols.insert(0, "index") title = "|" + "|".join(str(col) for col in cols) + "|\n" under_title = "|" + "---|" * len(cols) + "\n" content = "" - for idx, row in df.iterrows(): + for idx, row in data_frame.iterrows(): curr_row = list(str(r) for r in row) if index: curr_row.insert(0, str(idx)) @@ -34,47 +47,6 @@ def _to_markdown(df: pd.DataFrame, index=False): return title + under_title + content -def parse_args(name, input_args): - """ - 解析输入的参数 - Args: - name: 运行文件名 - input_args: 解析出来的参数 - - Returns: - issue_params, cve_params, output_path - """ - split_index = 0 - if "-milestone" not in input_args or "-branch" not in input_args: - print( - "usage: {} [-milestone [Required parameters]] [-branch [Required parameters]] " - "[-outpath [Optional parameters]]".format(name) - ) - return - if "-outpath" not in input_args and ( - "/" in input_args[-1] or "\\" in input_args[-1] - ): - print( - "Missing -outpath \n" - "usage: {} [-milestone [Required parameters]] [-branch [Required parameters]] " - "[-outpath [Optional parameters]]".format(name) - ) - return - for index, con in enumerate(input_args): - if con == "-branch": - split_index = index - issue_params = input_args[1:split_index] - cve_params = ( - input_args[split_index + 1 : len(input_args) - 2] - if "-outpath" in input_args - else input_args[split_index + 1 :] - ) - output_path = input_args[-1] if "-outpath" in input_args else "./" - if not os.path.exists(output_path): - print("The output path is illegal, please re-enter!") - return - return issue_params, cve_params, output_path - def build_request_parameters(issue_params, cve_params): """ @@ -128,13 +100,13 @@ def query_issue_response(parameters_issue): ) except Exception as error: print(error) - return None + return '' + response_issue_string = '' if response_issue.status_code == 200: response_issue_string = response_issue.json()["data"] - return response_issue_string else: print(response_issue.status_code) - return [] + return response_issue_string def query_cve_response(parameters_cve): @@ -155,13 +127,13 @@ def query_cve_response(parameters_cve): ) except Exception as error: print(error) - return None + return '' + response_cve_string = '' if response_cve.status_code == 200: response_cve_string = response_cve.json()["data"] - return response_cve_string else: print(response_cve.status_code) - return [] + return response_cve_string # pylint: disable=unused-variable @@ -212,6 +184,7 @@ def generate_csv(issue_sources, cve_sources, output_path): closed_at.append(response.get("closed_at", "暂无相应信息")) progress.append(response.get("plan_start_at", "暂无相应信息")) version.append(response.get("milestone", "暂无相应信息")) + for response in cve_sources: issue_id.append(response.get("issue_id", "暂无相应信息")) issue_type.append(response.get("type")) @@ -246,7 +219,9 @@ def generate_csv(issue_sources, cve_sources, output_path): dataframe.to_csv(output_path + "/Issue管理报告.csv", index=False, encoding="utf_8_sig") -def generate_md(issue_sources, cve_sources, output_path): +def generate_md(issue_sources, + cve_sources, + output_path): """ 将获取的issue数据按模板输出MD文件 Args: @@ -294,15 +269,7 @@ def generate_md(issue_sources, cve_sources, output_path): dataframe_fixed_issue = pd.DataFrame( {"Issue": fixed_issue_id, "概述": fixed_issue_title, "所属版本": fixed_version} ) - - count = 0 - for col in dataframe_fixed_issue: - if count < 5: - print(col) - - count += 1 dataframe_fixed_issue_str = _to_markdown(dataframe_fixed_issue) - dataframe_todo_issue = pd.DataFrame( { "Issue": todo_issue_id, @@ -312,7 +279,6 @@ def generate_md(issue_sources, cve_sources, output_path): } ) - dataframe_todo_issue_str = _to_markdown(dataframe_todo_issue) cve_id = [] @@ -358,28 +324,32 @@ def generate_md(issue_sources, cve_sources, output_path): # pylint: disable=broad-except -def main(): +def issue_report(): """ Function main program Returns: """ - try: - issue_params, cve_params, output_path = parse_args(FILE_NAME, CMD_INPUT_ARGS) - except Exception as error: - print(error) - else: - parameters_issues, parameters_cves = build_request_parameters( - issue_params, cve_params - ) - issue_con, cve_con = [], [] - for parameters_issue in parameters_issues: - issue_con.extend(query_issue_response(parameters_issue)) - for parameters_cve in parameters_cves: - cve_con.extend(query_cve_response(parameters_cve)) - filter_cve_con = filter_cve_content(cve_con) - generate_csv(issue_con, filter_cve_con, output_path) - generate_md(issue_con, filter_cve_con, output_path) - - -main() + pars = argparse.ArgumentParser() + pars.add_argument("-m", "--milestone", type=str, nargs='+', required=True, + help="openEuler milestone info") + pars.add_argument("-b", "--branch", type=str, nargs='+', required=True, + help="openEuler branch info") + pars.add_argument("-o", "--outpath", type=str, default='.', help="output path for output") + args = pars.parse_args() + if not os.path.exists(args.outpath): + print("ERROR:The output path is illegal, please re-enter!", args.outpath) + return + parameters_issues, parameters_cves = build_request_parameters(args.milestone, args.branch) + issue_con, cve_con = [], [] + for parameters_issue in parameters_issues: + issue_con.extend(query_issue_response(parameters_issue)) + for parameters_cve in parameters_cves: + cve_con.extend(query_cve_response(parameters_cve)) + filter_cve_con = filter_cve_content(cve_con) + generate_csv(issue_con, filter_cve_con, args.outpath) + generate_md(issue_con, filter_cve_con, args.outpath) + + +if __name__ == '__main__': + issue_report() diff --git a/command/issue_report b/command/issue_report index fe290974..1a072e26 100755 --- a/command/issue_report +++ b/command/issue_report @@ -1,6 +1,6 @@ #!/usr/bin/env python3 #****************************************************************************** -# Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved. +# Copyright (c) Huawei Technologies Co., Ltd. 2020-2021. All rights reserved. # licensed under the Mulan PSL v2. # You can use this software according to the terms and conditions of the Mulan PSL v2. # You may obtain a copy of Mulan PSL v2 at: @@ -14,12 +14,12 @@ """ This is an automatic script for create issue report for openEuler """ -from advisors.issue_report import main +from advisors.issue_report import issue_report if __name__ == '__main__': try: - main() + issue_report() except Exception as error: print("WARNING: Command execution error") print(error.message) -- Gitee