| 580 | } |
| 581 | |
| 582 | int main(int argc, char ** argv) { |
| 583 | // Set log level to capture all output |
| 584 | common_log_set_verbosity_thold(99); |
| 585 | |
| 586 | analysis_options opts; |
| 587 | if (!parse_options(argc, argv, opts)) { |
| 588 | return 1; |
| 589 | } |
| 590 | |
| 591 | LOG_ERR("\n"); |
| 592 | LOG_ERR("%s", ANSI_PURPLE); |
| 593 | LOG_ERR("================================================================================\n"); |
| 594 | LOG_ERR(" TEMPLATE ANALYSIS TOOL\n"); |
| 595 | LOG_ERR("================================================================================\n"); |
| 596 | LOG_ERR("%s", ANSI_RESET); |
| 597 | LOG_ERR("Analyzing %s%zu%s template(s)\n", ANSI_CYAN, opts.template_paths.size(), ANSI_RESET); |
| 598 | |
| 599 | for (const auto & path : opts.template_paths) { |
| 600 | analyze_template(path); |
| 601 | } |
| 602 | |
| 603 | LOG_ERR("\n"); |
| 604 | LOG_ERR("%s", ANSI_GREEN); |
| 605 | LOG_ERR("================================================================================\n"); |
| 606 | LOG_ERR(" ANALYSIS COMPLETE\n"); |
| 607 | LOG_ERR("================================================================================\n"); |
| 608 | LOG_ERR("%s", ANSI_RESET); |
| 609 | |
| 610 | return 0; |
| 611 | } |
nothing calls this directly
no test coverage detected