Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion app/[nsfront]/[nsbehind]/[name]/[version]/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,11 @@ export default function Layout({
// 判断当前页面是否为SenseLeak页面
const isSenseLeakPage = pathname.includes('/senseleak');
const isMircheckerPage = pathname.includes('/mirchecker');
const isUnsafecheckerPage = pathname.includes('/unsafechecker');
return (
<div className="mb-0">
{/* 仅在非SenseLeak页面显示导航栏 */}
{!isSenseLeakPage && !isMircheckerPage && (
{!isSenseLeakPage && !isMircheckerPage && !isUnsafecheckerPage && (
<CrateNav
nsfront={params.nsfront as string}
nsbehind={params.nsbehind as string}
Expand Down
6 changes: 3 additions & 3 deletions app/[nsfront]/[nsbehind]/[name]/[version]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -613,18 +613,18 @@ const CratePage = () => {
className="flex-shrink-0 rounded-[16.05px] border-[1.6px] border-[#333333]"
/>
<h2 className="text-[18px] font-bold text-[#333333] tracking-[0.72px] font-['HarmonyOS_Sans_SC']">
Mirchecker
Unsafechecker
</h2>
</div>
<div className="space-y-4">
<div>
<a
href={basePath + '/mirchecker'}
href={basePath + '/unsafechecker'}
className="text-[#4B68FF] text-[14px] font-['HarmonyOS_Sans_SC'] font-normal hover:underline break-all"
target="_blank"
rel="noopener noreferrer"
>
{basePath + '/mirchecker' || 'No results available'}
{basePath + '/unsafechecker' || 'No results available'}
</a>
</div>
</div>
Expand Down
68 changes: 65 additions & 3 deletions app/[nsfront]/[nsbehind]/[name]/[version]/senseleak/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -226,9 +226,71 @@ const SenseLeakPage = () => {
<div className="bg-white rounded-2xl p-6 shadow-[0_0_12px_0_rgba(43,88,221,0.09)]">
{senseLeakData ? (
senseLeakData.exist ? (
<pre className="whitespace-pre-wrap font-['HarmonyOS_Sans_SC'] text-[14px] leading-relaxed text-[#333333] p-4 bg-[#F8F9FC] rounded-lg overflow-x-auto">
{senseLeakData.res}
</pre>
(() => {
interface SenseLeakItem {
file: string;
line_number: number;
line: string;
rule: string;
commit_message: string;
author: string;
email: string;
commit: string;
date: string;
}
let items: SenseLeakItem[] = [];
try {
items = JSON.parse(senseLeakData.res);
} catch {
return <div className="text-red-500">SenseLeak 数据解析失败</div>;
}
if (!Array.isArray(items) || items.length === 0) {
return <div className="text-gray-400">无泄漏数据</div>;
}
return (
<div className="space-y-6">
{items.map((item, idx) => (
<div
key={idx}
className="bg-[#F5F7FF] rounded-xl p-6 shadow border border-[#E0E7FF] flex flex-col gap-2"
>
<div>
<span className="font-bold text-[#4B68FF]">File:</span>
<span className="text-[#333]">{item.file}</span>
</div>
<div>
<span className="font-bold text-[#4B68FF]">Line Number:</span>
<span className="text-[#333]">{item.line_number}</span>
</div>
<div>
<span className="font-bold text-[#4B68FF]">Offender:</span>
<span className="text-[#333]">{item.line}</span>
</div>
<div>
<span className="font-bold text-[#4B68FF]">Rule:</span>
<span className="text-[#333]">{item.rule}</span>
</div>
<div>
<span className="font-bold text-[#4B68FF]">Commit Message:</span>
<span className="text-[#333]">{item.commit_message}</span>
</div>
<div>
<span className="font-bold text-[#4B68FF]">Author:</span>
<span className="text-[#333]">{item.author} ({item.email})</span>
</div>
<div>
<span className="font-bold text-[#4B68FF]">Commit Hash:</span>
<span className="text-[#333]">{item.commit}</span>
</div>
<div>
<span className="font-bold text-[#4B68FF]">Date:</span>
<span className="text-[#333]">{item.date}</span>
</div>
</div>
))}
</div>
);
})()
) : (
<div className="flex flex-col items-center p-8">
<Image
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ const MircheckerPage = () => {
setVersionsList(versionsData.versions || []);

// 获取 Mirchecker 数据
const mircheckerResponse = await fetch(`/api/crates/${params.nsfront}/${params.nsbehind}/${params.name}/${params.version}/mirchecker`);
const mircheckerResponse = await fetch(`/api/crates/${params.nsfront}/${params.nsbehind}/${params.name}/${params.version}/unsafechecker`);
if (!mircheckerResponse.ok) {
throw new Error(`HTTP error! status: ${mircheckerResponse.status}`);
}
Expand Down Expand Up @@ -177,7 +177,7 @@ const MircheckerPage = () => {
{filteredVersions.map((version, index) => (
<Link
key={index}
href={`/${params.nsfront}/${params.nsbehind}/${params.name}/${version}/mirchecker`}
href={`/${params.nsfront}/${params.nsbehind}/${params.name}/${version}/unsafechecker`}
>
<div className={`transition-colors cursor-pointer ${version === currentVersion
? 'bg-[#4b68ff] w-[278px] h-[37px] flex items-center text-white rounded-l-full rounded-r-none'
Expand Down Expand Up @@ -214,7 +214,7 @@ const MircheckerPage = () => {
<div className="mb-6 flex items-center gap-3">
<div className="w-[4px] h-[24px] flex-shrink-0 rounded-[2px] bg-[#4B68FF]"></div>
<h1 className="text-[24px] font-bold text-[#333333] tracking-[0.96px] font-['HarmonyOS_Sans_SC']">
Mirchecker Analysis: {params.name}/{params.version}
Unsafechecker Analysis: {params.name}/{params.version}
</h1>
</div>

Expand Down