module RailsCodeAuditor
def self.run(args)
def self.run(args) puts "[*] Running Rails Code Auditor..." # Parse CLI options use_llm = args.include?("--use-llm") model_arg = args[args.index("--llm-model") + 1] if args.include?("--llm-model") endpoint_arg = args[args.index("--llm-endpoint") + 1] if args.include?("--llm-endpoint") format_arg = args[args.index("--format") + 1] if args.include?("--format") output_arg = args[args.index("--output") + 1] if args.include?("--output") raw_results = Analyzer.run_all results = ReportGenerator.normalize(raw_results) results[:simplecov] = SimpleCovRunner.run scores = if use_llm LlmClient.score_with_llm(results, model: model_arg || "llama3", endpoint: endpoint_arg || "http://localhost:11434/api/generate") || Scorer.score(results) else Scorer.score(results) end if format_arg == "json" json_output = JSON.pretty_generate({ results: results, scores: scores }) if output_arg File.write(output_arg, json_output) puts "[✓] JSON report saved to #{output_arg}" else puts json_output end return end graphs = Grapher.generate(scores) html_pdf_paths = USE_GROVER ? HtmlToPdfConverter.convert_all : [] pdf_path = PdfGenerator.generate(results, scores, graphs, html_pdf_paths) if output_arg FileUtils.mv(pdf_path, output_arg) puts "[✓] PDF report saved to #{output_arg}" else puts "[✓] Audit complete. PDF report generated at #{pdf_path}" end end