110 lines
6.2 KiB
HTML
110 lines
6.2 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>覆盖率分析报告</title>
|
||
<style>:root{--bg:#f5f6f8;--card:#fff;--text:#1f2937;--muted:#6b7280;--border:#e5e7eb;--primary:#2563eb;--green:#22c55e;--red:#ef4444;--yellow:#eab308}
|
||
*{box-sizing:border-box;margin:0;padding:0}
|
||
body{font-family:-apple-system,'Segoe UI','Microsoft YaHei',sans-serif;background:var(--bg);color:var(--text);padding:24px;max-width:1200px;margin:0 auto;line-height:1.5}
|
||
.nav{display:flex;gap:8px;background:var(--card);border:1px solid var(--border);border-radius:8px;padding:10px 14px;margin-bottom:16px}
|
||
.nav a{color:var(--muted);text-decoration:none;padding:4px 10px;border-radius:6px;font-size:13px}
|
||
.nav a:hover{background:#f0f4ff;color:var(--primary)}
|
||
.nav a.active{background:var(--primary);color:#fff}
|
||
.page-header{margin-bottom:20px}
|
||
.page-header h1{font-size:22px;margin-bottom:8px}
|
||
.meta{display:flex;flex-wrap:wrap;gap:16px;color:var(--muted);font-size:13px}
|
||
.meta .badge{font-weight:600;padding:2px 8px;border-radius:20px;font-size:12px}
|
||
.badge.ok{background:#dcfce7;color:#15803d}
|
||
.badge.bad{background:#fee2e2;color:#b91c1c}
|
||
.card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:20px;margin-bottom:16px}
|
||
.card h2{font-size:16px;margin-bottom:12px}
|
||
.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;padding:16px}
|
||
.summary-card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:20px;text-align:center}
|
||
.summary-card .num{font-size:36px;font-weight:700}
|
||
.summary-card .label{font-size:14px;color:var(--muted);margin:6px 0}
|
||
.summary-card .sub{font-size:12px;color:var(--muted)}
|
||
.num.ok{color:var(--green)}.num.warn{color:var(--yellow)}.num.bad{color:var(--red)}
|
||
table.grid{width:100%;border-collapse:collapse;font-size:13px}
|
||
table.grid th,table.grid td{border-bottom:1px solid var(--border);padding:8px 10px;text-align:left}
|
||
table.grid th{background:#f9fafb;color:var(--muted);font-weight:600}
|
||
table.grid tr:hover td{background:#fafbff}
|
||
.mono{font-family:Consolas,'Courier New',monospace;font-size:12px}
|
||
.link{color:var(--primary);text-decoration:none}
|
||
.link:hover{text-decoration:underline}
|
||
.check-list{list-style:none}
|
||
.check-list li{padding:6px 0;font-size:14px}
|
||
.check-list li.ok{color:var(--green)}
|
||
.check-list li.bad{color:var(--red)}
|
||
.bar-wrap{position:relative;min-width:120px;background:#f3f4f6;border-radius:4px;height:18px;overflow:hidden}
|
||
.bar{height:100%;border-radius:4px}
|
||
.bar-txt{position:absolute;top:0;right:6px;font-size:11px;color:#374151;line-height:18px;font-weight:600}
|
||
.legend{float:right;font-size:12px;color:var(--muted);font-weight:400}
|
||
.lg{display:inline-block;padding:2px 8px;border-radius:4px;margin-left:8px}
|
||
.lg.covered{background:#dcfce7;color:#15803d}
|
||
.lg.partial{background:#fef9c3;color:#a16207}
|
||
.lg.missed{background:#fee2e2;color:#b91c1c}
|
||
pre.code{font-family:Consolas,'Courier New',monospace;font-size:12px;line-height:1.55;overflow-x:auto;background:#0f172a;color:#e2e8f0;border-radius:8px;padding:14px}
|
||
.code .cl{display:block;padding:0 8px;border-radius:3px;border-left:3px solid transparent}
|
||
.code .cl.covered{background:rgba(34,197,94,.12);border-left-color:#22c55e}
|
||
.code .cl.partial{background:rgba(234,179,8,.12);border-left-color:#eab308}
|
||
.code .cl.missed{background:rgba(239,68,68,.18);border-left-color:#ef4444}
|
||
.code .ln{color:#64748b;user-select:none}
|
||
.code .mark{color:#94a3b8;user-select:none;width:14px;display:inline-block}
|
||
.code .cl.missed .mark{color:#ef4444}
|
||
.code .cl.covered .mark{color:#22c55e}
|
||
.note{color:var(--muted);font-size:13px;padding:8px 0}
|
||
.footer{text-align:center;color:var(--muted);font-size:12px;padding:16px 0}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<nav class="nav">
|
||
<a class="active" href="index.html">总览</a>
|
||
<a class="" href="by-author.html">提交人维度</a>
|
||
<a href="summary.json" target="_blank">summary.json</a>
|
||
</nav>
|
||
<header class="page-header">
|
||
<h1>覆盖率分析报告</h1>
|
||
<div class="meta">
|
||
<span>项目:D:/bestpay-srdcloud/ft-pay-core</span>
|
||
<span>分支:develop</span>
|
||
<span>commit:a1b2c3d</span>
|
||
<span>耗时:45s</span>
|
||
<span><span class="badge ok">✓ 通过</span></span>
|
||
</div>
|
||
</header>
|
||
<section class="card summary-cards">
|
||
<div class="summary-card">
|
||
<div class="num ok">99.41%</div>
|
||
<div class="label">单元测试通过率(目标 100%)</div>
|
||
<div class="sub">通过 2036 / 总数 2048,失败 0,错误 0</div>
|
||
</div>
|
||
<div class="summary-card">
|
||
<div class="num warn">70.27%</div>
|
||
<div class="label">行覆盖率(目标 80%)</div>
|
||
<div class="sub">已覆盖 130 / 185 行</div>
|
||
</div>
|
||
<div class="summary-card">
|
||
<div class="num warn">70.45%</div>
|
||
<div class="label">方法覆盖率</div>
|
||
<div class="sub">已覆盖 31 / 44 方法</div>
|
||
</div>
|
||
</section>
|
||
<section class="card">
|
||
<h2>阈值校验</h2>
|
||
<ul class="check-list"><li class="ok">全量测试通过率与行覆盖率均满足阈值要求</li></ul>
|
||
</section>
|
||
<section class="card">
|
||
<h2>包级覆盖率 <a class="link" href="by-author.html">查看提交人维度 →</a></h2>
|
||
<table class="grid">
|
||
<thead><tr><th>包</th><th>类数</th><th>行覆盖</th><th>行覆盖率</th><th>方法覆盖</th><th>方法覆盖率</th></tr></thead>
|
||
<tbody>
|
||
<tr><td class="mono">com/bestpay/pay/order</td><td>2</td><td>100 / 125</td><td><div class="bar-wrap"><div class="bar" style="width:80.00%;background:#22c55e"></div><span class="bar-txt">80.00%</span></div></td><td>25 / 30</td><td><div class="bar-wrap"><div class="bar" style="width:83.33%;background:#22c55e"></div><span class="bar-txt">83.33%</span></div></td></tr>
|
||
<tr><td class="mono">com/bestpay/pay/refund</td><td>1</td><td>30 / 60</td><td><div class="bar-wrap"><div class="bar" style="width:50.00%;background:#eab308"></div><span class="bar-txt">50.00%</span></div></td><td>6 / 14</td><td><div class="bar-wrap"><div class="bar" style="width:42.86%;background:#ef4444"></div><span class="bar-txt">42.86%</span></div></td></tr>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
<footer class="footer">由 coverage-report-plugin 生成</footer>
|
||
</body>
|
||
</html>
|