• 分析处理html文件的代码


    def Del_Dr(self, htmlpath, dirlist, ret, filetype, *kwargs):

        '''
        该函数的目的是为了修改html页面的内容,主要是对index中的覆盖率,类,新增行数等内容修改,去掉非增量的相关内容
        :param htmlpath:要修改的html文件的路径
        :param dirlist:html页面要保留的类名列表或文件
        :param ret:ret
        :param diff_results:diff文件过滤的字典
        :param filetype:需要修改的类型(root指文件根目录,package指包目录下,file指文件类型)
        '''
        with open(htmlpath, 'r') as e:
            html_doc = "".join(e.readlines())
        soup = BeautifulSoup(html_doc, 'lxml')
        a_list = soup.select("a")  # 获取html页面所有的a标签
        for a_s in a_list:
            a_s_text = a_s.text.strip(" ").strip(" ").strip(" ")  # 循环获取a标签的text属性并过滤掉 和空格
            if filetype == "file":
                a_s_text = a_s_text.split("(")[0]
            if str(a_s_text) not in dirlist and a_s.parent.parent.name == "tr":  # 如果text不等于要保留的类名,则直接删除该节点所属的tr标签
                a_s.parent.parent.extract()
        del_td = soup.find_all("tr")[0].find_all("td")[1:]
        for td in del_td:
            td.extract()
    //上面这一部分主要是去掉已经覆盖的类名的的相关内容,只保留未覆盖的类的相关信息
     
        # 新增td行Add lines
        new_tr = soup.new_tag("td")
        new_tr.string = "Add lines"
        soup.thead.tr.append(new_tr)
        new_tr.attrs = {'class''sortable'}
        # 新增td行Overlay lines
        overlay_tr = soup.new_tag("td")
        overlay_tr.string = "Overlay lines"
        soup.thead.tr.append(overlay_tr)
        overlay_tr.attrs = {'class''sortable'}
        # 新增td行Coverage
        coverage_tr = soup.new_tag("td")
        coverage_tr.string = "Coverage"
        soup.thead.tr.append(coverage_tr)
        coverage_tr.attrs = {'class''sortable'}
     
    //在报告上方加入了统计表格字段
     
        pack_tr_list = soup.find_all("tbody")[0].find_all("tr")  # 获取tbody中tr组成的列表
        for tpack in pack_tr_list:  # 删除tbody中tr中除类名或文件名的其他列
            for pa_td in tpack.find_all("td")[1:]:
                pa_td.extract()
        tfoot_list = soup.find_all("tfoot")[0].find_all("td")[1:]  # 删除tfoot中除Total外的其他列
        for tfoot in tfoot_list:
            tfoot.extract()
        for npack in pack_tr_list:
            pack_name = npack.find_all("a")[0].string.strip(" ").strip(" ").strip(" ")
            addlines = 0
            covlines = 0
            if filetype == "package":  # 如果是包名下的index.html文件做如下处理
                addlines = ret[pack_name]['new']
                covlines = ret[pack_name]['cover']
            elif filetype == "root":
                for k, v in enumerate(ret[pack_name]):
                    addlines += ret[pack_name][v]['new']
                    covlines += ret[pack_name][v]['cover']
            elif filetype == "file":
                pack_void_name = pack_name.split("(")[0]
                filename, diff_dict = kwargs
                filename_new_list = filename.split("src/main/java/")[-1].split("/")
                filename_new = ".".join(filename_new_list[:-1])
                class_name = filename_new_list[-1].split(".")[0]
                if filename in diff_dict.keys() and class_name in ret[filename_new].keys():
                    void_lines_list = diff_dict[filename]['diff_voids'][pack_void_name]
                    new_line_list = list(
                        set(ret[filename_new][class_name]['new_lines']).intersection(set(void_lines_list)))
                    cover_line_list = list(
                        set(ret[filename_new][class_name]['cover_lines']).intersection(set(void_lines_list)))
                    addlines = len(new_line_list)
                    covlines = len(cover_line_list)
            if addlines == 0:
                coverage = '{:.2%}'.format(0)
            else:
                coverage = '{:.2%}'.format(covlines / addlines)  # 覆盖率
            addlines_tr = soup.new_tag("td")
            if addlines:
                addlines_tr.string = "%s" % addlines
                npack.append(addlines_tr)
                covlines_tr = soup.new_tag("td")
                covlines_tr.string = "%s" % covlines
                npack.append(covlines_tr)
                coverage_tr = soup.new_tag("td")
                coverage_tr.string = "%s" % coverage
                npack.append(coverage_tr)
            else:
                npack.extract()
        # 重新生成index.html页面
        html_path_new = htmlpath + "_bat"
        with open(html_path_new, 'w+') as f:
            f.write(HTMLParser.HTMLParser().unescape(soup.prettify()))
        os.remove(htmlpath)
        os.rename(html_path_new, htmlpath)
  • 相关阅读:
    solr学习四(关于性能的杂知识)
    solr学习三(测试类,含普通与ExtractingRequestHandler测试)
    solr学习二(ExtractingRequestHandler)
    solr学习一(一大堆的学习资料)
    ElasticSearch 5.0 简介
    solrcloud配置中文分词器ik
    SolrCloud6.3 单机、集群、内置jetty、tomcat搭建、对collection操作
    Solr6.2.0 + zookeeper 集群配置
    03: MySQL基本操作
    02: MySQL的安装与基本配置
  • 原文地址:https://www.cnblogs.com/wozhangdale1/p/12665227.html
Copyright © 2020-2023  润新知