单测覆盖率插件提交到远程
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
<!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="" href="index.html">总览</a>
|
||||
<a class="active" 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>邮箱:zhangsan@bestpay.com</span>
|
||||
<span>行覆盖率:40.00%</span>
|
||||
<span>贡献行:5</span>
|
||||
<span>已覆盖行:2</span>
|
||||
<span>提交记录:3</span>
|
||||
</div>
|
||||
</header>
|
||||
<section class="card">
|
||||
<h2>该提交人的提交记录(精确到 commit)</h2>
|
||||
<table class="grid">
|
||||
<thead><tr><th>commit</th><th>提交人</th><th>时间</th><th>说明</th><th>行覆盖</th><th>行覆盖率</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="mono"><a class="link" href="../index.html" title="c1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f">c1a2b3c4</a></td><td>张三</td><td class="mono">2026-08-01T10:30:00+08:00</td><td>提交记录 1:张三 的变更</td><td>0 / 2</td><td><div class="bar-wrap"><div class="bar" style="width:0.00%;background:#ef4444"></div><span class="bar-txt">0.00%</span></div></td></tr>
|
||||
<tr><td class="mono"><a class="link" href="../index.html" title="c2a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f">c2a2b3c4</a></td><td>张三</td><td class="mono">2026-08-02T10:30:00+08:00</td><td>提交记录 2:张三 的变更</td><td>0 / 2</td><td><div class="bar-wrap"><div class="bar" style="width:0.00%;background:#ef4444"></div><span class="bar-txt">0.00%</span></div></td></tr>
|
||||
<tr><td class="mono"><a class="link" href="../index.html" title="c3a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f">c3a2b3c4</a></td><td>张三</td><td class="mono">2026-08-03T10:30:00+08:00</td><td>提交记录 3:张三 的变更</td><td>0 / 2</td><td><div class="bar-wrap"><div class="bar" style="width:0.00%;background:#ef4444"></div><span class="bar-txt">0.00%</span></div></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<footer class="footer">由 coverage-report-plugin 生成</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,88 @@
|
||||
<!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="" href="index.html">总览</a>
|
||||
<a class="active" 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>邮箱:lisi@bestpay.com</span>
|
||||
<span>行覆盖率:25.00%</span>
|
||||
<span>贡献行:4</span>
|
||||
<span>已覆盖行:1</span>
|
||||
<span>提交记录:2</span>
|
||||
</div>
|
||||
</header>
|
||||
<section class="card">
|
||||
<h2>该提交人的提交记录(精确到 commit)</h2>
|
||||
<table class="grid">
|
||||
<thead><tr><th>commit</th><th>提交人</th><th>时间</th><th>说明</th><th>行覆盖</th><th>行覆盖率</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="mono"><a class="link" href="../index.html" title="c1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f">c1a2b3c4</a></td><td>李四</td><td class="mono">2026-08-01T10:30:00+08:00</td><td>提交记录 1:李四 的变更</td><td>0 / 3</td><td><div class="bar-wrap"><div class="bar" style="width:0.00%;background:#ef4444"></div><span class="bar-txt">0.00%</span></div></td></tr>
|
||||
<tr><td class="mono"><a class="link" href="../index.html" title="c2a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f">c2a2b3c4</a></td><td>李四</td><td class="mono">2026-08-02T10:30:00+08:00</td><td>提交记录 2:李四 的变更</td><td>0 / 3</td><td><div class="bar-wrap"><div class="bar" style="width:0.00%;background:#ef4444"></div><span class="bar-txt">0.00%</span></div></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<footer class="footer">由 coverage-report-plugin 生成</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,87 @@
|
||||
<!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="" href="index.html">总览</a>
|
||||
<a class="active" 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>邮箱:wangwu@bestpay.com</span>
|
||||
<span>行覆盖率:0.00%</span>
|
||||
<span>贡献行:2</span>
|
||||
<span>已覆盖行:0</span>
|
||||
<span>提交记录:1</span>
|
||||
</div>
|
||||
</header>
|
||||
<section class="card">
|
||||
<h2>该提交人的提交记录(精确到 commit)</h2>
|
||||
<table class="grid">
|
||||
<thead><tr><th>commit</th><th>提交人</th><th>时间</th><th>说明</th><th>行覆盖</th><th>行覆盖率</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="mono"><a class="link" href="../index.html" title="c1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f">c1a2b3c4</a></td><td>王五</td><td class="mono">2026-08-01T10:30:00+08:00</td><td>提交记录 1:王五 的变更</td><td>0 / 3</td><td><div class="bar-wrap"><div class="bar" style="width:0.00%;background:#ef4444"></div><span class="bar-txt">0.00%</span></div></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<footer class="footer">由 coverage-report-plugin 生成</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,82 @@
|
||||
<!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="" href="index.html">总览</a>
|
||||
<a class="active" 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>全部提交人</span><span>共 3 位提交人</span></div>
|
||||
</header>
|
||||
<section class="card">
|
||||
<table class="grid">
|
||||
<thead><tr><th>提交人</th><th>邮箱</th><th>提交数</th><th>文件数</th><th>行覆盖</th><th>行覆盖率</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td><a class="link" href="authors/张三.html">张三</a></td><td class="mono">zhangsan@bestpay.com</td><td>3</td><td>2</td><td>2 / 5</td><td><div class="bar-wrap"><div class="bar" style="width:40.00%;background:#ef4444"></div><span class="bar-txt">40.00%</span></div></td></tr>
|
||||
<tr><td><a class="link" href="authors/李四.html">李四</a></td><td class="mono">lisi@bestpay.com</td><td>2</td><td>2</td><td>1 / 4</td><td><div class="bar-wrap"><div class="bar" style="width:25.00%;background:#ef4444"></div><span class="bar-txt">25.00%</span></div></td></tr>
|
||||
<tr><td><a class="link" href="authors/王五.html">王五</a></td><td class="mono">wangwu@bestpay.com</td><td>1</td><td>2</td><td>0 / 2</td><td><div class="bar-wrap"><div class="bar" style="width:0.00%;background:#ef4444"></div><span class="bar-txt">0.00%</span></div></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<footer class="footer">由 coverage-report-plugin 生成</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,92 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>OrderService</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>OrderService</h1>
|
||||
<div class="meta">
|
||||
<span>类:com/bestpay/pay/order/OrderService</span>
|
||||
<span>行覆盖率:77.50%</span>
|
||||
<span>方法覆盖率:83.33%</span>
|
||||
<span>行覆盖 62 / 80</span>
|
||||
</div>
|
||||
</header>
|
||||
<section class="card">
|
||||
<h2>方法级覆盖</h2>
|
||||
<table class="grid">
|
||||
<thead><tr><th>方法</th><th>行范围</th><th>指令覆盖</th><th>覆盖率</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>createOrder</td><td class="mono">5 - 10</td><td>6 / 8</td><td><div class="bar-wrap"><div class="bar" style="width:75.00%;background:#eab308"></div><span class="bar-txt">75.00%</span></div></td></tr>
|
||||
<tr><td>cancelOrder</td><td class="mono">12 - 17</td><td>6 / 8</td><td><div class="bar-wrap"><div class="bar" style="width:75.00%;background:#eab308"></div><span class="bar-txt">75.00%</span></div></td></tr>
|
||||
<tr><td>refund</td><td class="mono">19 - 24</td><td>6 / 8</td><td><div class="bar-wrap"><div class="bar" style="width:75.00%;background:#eab308"></div><span class="bar-txt">75.00%</span></div></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<section class="card">
|
||||
<h2>行级覆盖标注 <span class="legend"><span class="lg covered">已覆盖</span><span class="lg partial">部分</span><span class="lg missed">未覆盖</span></span></h2>
|
||||
<pre class="code"><div class="note">源码文件未找到:.\src\main\java\com\bestpay\pay\order\OrderService.java</div></pre>
|
||||
</section>
|
||||
<footer class="footer">由 coverage-report-plugin 生成</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,91 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>PaymentService</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>PaymentService</h1>
|
||||
<div class="meta">
|
||||
<span>类:com/bestpay/pay/order/PaymentService</span>
|
||||
<span>行覆盖率:84.44%</span>
|
||||
<span>方法覆盖率:83.33%</span>
|
||||
<span>行覆盖 38 / 45</span>
|
||||
</div>
|
||||
</header>
|
||||
<section class="card">
|
||||
<h2>方法级覆盖</h2>
|
||||
<table class="grid">
|
||||
<thead><tr><th>方法</th><th>行范围</th><th>指令覆盖</th><th>覆盖率</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>pay</td><td class="mono">5 - 10</td><td>6 / 8</td><td><div class="bar-wrap"><div class="bar" style="width:75.00%;background:#eab308"></div><span class="bar-txt">75.00%</span></div></td></tr>
|
||||
<tr><td>queryStatus</td><td class="mono">12 - 17</td><td>6 / 8</td><td><div class="bar-wrap"><div class="bar" style="width:75.00%;background:#eab308"></div><span class="bar-txt">75.00%</span></div></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<section class="card">
|
||||
<h2>行级覆盖标注 <span class="legend"><span class="lg covered">已覆盖</span><span class="lg partial">部分</span><span class="lg missed">未覆盖</span></span></h2>
|
||||
<pre class="code"><div class="note">源码文件未找到:.\src\main\java\com\bestpay\pay\order\PaymentService.java</div></pre>
|
||||
</section>
|
||||
<footer class="footer">由 coverage-report-plugin 生成</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,91 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>RefundService</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>RefundService</h1>
|
||||
<div class="meta">
|
||||
<span>类:com/bestpay/pay/refund/RefundService</span>
|
||||
<span>行覆盖率:50.00%</span>
|
||||
<span>方法覆盖率:42.86%</span>
|
||||
<span>行覆盖 30 / 60</span>
|
||||
</div>
|
||||
</header>
|
||||
<section class="card">
|
||||
<h2>方法级覆盖</h2>
|
||||
<table class="grid">
|
||||
<thead><tr><th>方法</th><th>行范围</th><th>指令覆盖</th><th>覆盖率</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>applyRefund</td><td class="mono">5 - 10</td><td>6 / 8</td><td><div class="bar-wrap"><div class="bar" style="width:75.00%;background:#eab308"></div><span class="bar-txt">75.00%</span></div></td></tr>
|
||||
<tr><td>auditRefund</td><td class="mono">12 - 17</td><td>6 / 8</td><td><div class="bar-wrap"><div class="bar" style="width:75.00%;background:#eab308"></div><span class="bar-txt">75.00%</span></div></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<section class="card">
|
||||
<h2>行级覆盖标注 <span class="legend"><span class="lg covered">已覆盖</span><span class="lg partial">部分</span><span class="lg missed">未覆盖</span></span></h2>
|
||||
<pre class="code"><div class="note">源码文件未找到:.\src\main\java\com\bestpay\pay\refund\RefundService.java</div></pre>
|
||||
</section>
|
||||
<footer class="footer">由 coverage-report-plugin 生成</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,109 @@
|
||||
<!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>
|
||||
@@ -0,0 +1,127 @@
|
||||
{
|
||||
"projectPath":"D:/bestpay-srdcloud/ft-pay-core",
|
||||
"branch":"develop",
|
||||
"commitId":"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
|
||||
"checkoutPerformed":false,
|
||||
"thresholdPassed":true,
|
||||
"thresholdFailures":[],
|
||||
"durationMillis":45230,
|
||||
"testSummary":{
|
||||
"testClassCount":128,
|
||||
"testCount":2048,
|
||||
"failureCount":0,
|
||||
"errorCount":0,
|
||||
"skippedCount":12,
|
||||
"passedCount":2036,
|
||||
"passRate":99.4140625
|
||||
},
|
||||
"coverageSummary":{
|
||||
"packageCount":2,
|
||||
"classCount":3,
|
||||
"methodCount":44,
|
||||
"methodCovered":31,
|
||||
"lineCount":185,
|
||||
"lineCovered":130,
|
||||
"instructionCount":920,
|
||||
"instructionCovered":650,
|
||||
"branchCount":120,
|
||||
"branchCovered":78,
|
||||
"lineCoverageRatio":0.7027027027027027,
|
||||
"methodCoverageRatio":0.7045454545454546
|
||||
},
|
||||
"authorCoverages":[
|
||||
{
|
||||
"author":"张三",
|
||||
"email":"zhangsan@bestpay.com",
|
||||
"commitCount":3,
|
||||
"fileCount":2,
|
||||
"contributedLineCount":5,
|
||||
"coveredLineCount":2,
|
||||
"coverageRatio":0.4,
|
||||
"commits":[
|
||||
{
|
||||
"commitId":"c1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f",
|
||||
"shortCommitId":"c1a2b3c4",
|
||||
"author":"张三",
|
||||
"commitTime":"2026-08-01T10:30:00+08:00",
|
||||
"subject":"提交记录 1:张三 的变更",
|
||||
"contributedLineCount":2,
|
||||
"coveredLineCount":0,
|
||||
"coverageRatio":0.0
|
||||
},
|
||||
{
|
||||
"commitId":"c2a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f",
|
||||
"shortCommitId":"c2a2b3c4",
|
||||
"author":"张三",
|
||||
"commitTime":"2026-08-02T10:30:00+08:00",
|
||||
"subject":"提交记录 2:张三 的变更",
|
||||
"contributedLineCount":2,
|
||||
"coveredLineCount":0,
|
||||
"coverageRatio":0.0
|
||||
},
|
||||
{
|
||||
"commitId":"c3a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f",
|
||||
"shortCommitId":"c3a2b3c4",
|
||||
"author":"张三",
|
||||
"commitTime":"2026-08-03T10:30:00+08:00",
|
||||
"subject":"提交记录 3:张三 的变更",
|
||||
"contributedLineCount":2,
|
||||
"coveredLineCount":0,
|
||||
"coverageRatio":0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"author":"李四",
|
||||
"email":"lisi@bestpay.com",
|
||||
"commitCount":2,
|
||||
"fileCount":2,
|
||||
"contributedLineCount":4,
|
||||
"coveredLineCount":1,
|
||||
"coverageRatio":0.25,
|
||||
"commits":[
|
||||
{
|
||||
"commitId":"c1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f",
|
||||
"shortCommitId":"c1a2b3c4",
|
||||
"author":"李四",
|
||||
"commitTime":"2026-08-01T10:30:00+08:00",
|
||||
"subject":"提交记录 1:李四 的变更",
|
||||
"contributedLineCount":3,
|
||||
"coveredLineCount":0,
|
||||
"coverageRatio":0.0
|
||||
},
|
||||
{
|
||||
"commitId":"c2a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f",
|
||||
"shortCommitId":"c2a2b3c4",
|
||||
"author":"李四",
|
||||
"commitTime":"2026-08-02T10:30:00+08:00",
|
||||
"subject":"提交记录 2:李四 的变更",
|
||||
"contributedLineCount":3,
|
||||
"coveredLineCount":0,
|
||||
"coverageRatio":0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"author":"王五",
|
||||
"email":"wangwu@bestpay.com",
|
||||
"commitCount":1,
|
||||
"fileCount":2,
|
||||
"contributedLineCount":2,
|
||||
"coveredLineCount":0,
|
||||
"coverageRatio":0.0,
|
||||
"commits":[
|
||||
{
|
||||
"commitId":"c1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f",
|
||||
"shortCommitId":"c1a2b3c4",
|
||||
"author":"王五",
|
||||
"commitTime":"2026-08-01T10:30:00+08:00",
|
||||
"subject":"提交记录 1:王五 的变更",
|
||||
"contributedLineCount":3,
|
||||
"coveredLineCount":0,
|
||||
"coverageRatio":0.0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user