/**
* Code Review Engine - HTML Reporter
*
* Generate HTML format reports.
*/
import type { CodeIssue, ReportOptions, ReviewResult } from "../types.js";
export class HtmlReporter {
/**
* Generate HTML report
*/
generate(result: ReviewResult, options: ReportOptions): string {
return `
${this.escapeHtml(issue.title)}
${this.escapeHtml(location)} ${issue.rule ? `• Rule: ${this.escapeHtml(issue.rule)}` : ""}
${this.escapeHtml(issue.message)}
${issue.code && options.includeCode !== false ? `
${this.escapeHtml(issue.code)}
` : ""}
${issue.suggestion && options.includeSuggestions !== false ? `
Suggestion: ${this.escapeHtml(issue.suggestion)}
` : ""}
`;
}
/**
* Escape HTML
*/
private escapeHtml(text: string): string {
return text
.replace(/&/g, "&")
.replace(//g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
}