⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 metrules.c

📁 这是一个C程序分析工具
💻 C
📖 第 1 页 / 共 4 页
字号:
         out(csv ? ",%lu,%lu,%lu,%lu" :               "   Lines:           <%lu >%lu ~%lu %lu\n",               min_stat(&project.function.lines),               max_stat(&project.function.lines),               avg_stat(&project.function.lines),               tot_stat(&project.function.lines));      if (print_metric(cdl))         out(csv ? ",%lu,%lu,%lu,%lu" :               "     Code:          <%lu >%lu ~%lu %lu\n",               min_stat(&project.function.code_lines),               max_stat(&project.function.code_lines),               avg_stat(&project.function.code_lines),               tot_stat(&project.function.code_lines));      if (print_metric(cml))         out(csv ? ",%lu,%lu,%lu,%lu" :               "     Comment:       <%lu >%lu ~%lu %lu\n",               min_stat(&project.function.comment_lines),               max_stat(&project.function.comment_lines),               avg_stat(&project.function.comment_lines),               tot_stat(&project.function.comment_lines));      if (print_metric(bll))         out(csv ? ",%lu,%lu,%lu,%lu" :               "     Blank:         <%lu >%lu ~%lu %lu\n",               min_stat(&project.function.white_lines),               max_stat(&project.function.white_lines),               avg_stat(&project.function.white_lines),               tot_stat(&project.function.white_lines));      if (print_metric(exs))         out(csv ? ",%lu,%lu,%lu" : "   Exec Statements: <%lu >%lu ~%lu\n",               min_stat(&project.function.stmnts),               max_stat(&project.function.stmnts),               avg_stat(&project.function.stmnts));      if (print_metric(dcs))         out(csv ? ",%lu,%lu,%lu,%lu" :               "   Decl Statements: <%lu >%lu ~%lu %lu\n",               min_stat(&project.function.decls),               max_stat(&project.function.decls),               avg_stat(&project.function.decls),               tot_stat(&project.function.decls));      if (print_metric(mcd))         out(csv ? ",%lu,%lu,%lu" : "   Max Depth:       <%lu >%lu ~%lu\n",               min_stat(&project.function.max_depth),               max_stat(&project.function.max_depth),               avg_stat(&project.function.max_depth));      out(csv ? "" : "\n");   }   /*      Only print module-related stats if there is at least one      module-related metric to print for the project.   */   if (print_prj_mod)   {      out(csv ? "" : "   -Module-\n");      if (print_metric(scl))         out(csv ? ",%lu,%lu,%lu" : "   Lines:           <%lu >%lu ~%lu\n",               min_stat(&project.module.lines),               max_stat(&project.module.lines),               avg_stat(&project.module.lines));      if (print_metric(cdl))         out(csv ? ",%lu,%lu,%lu" : "     Code:          <%lu >%lu ~%lu\n",               min_stat(&project.module.code_lines),               max_stat(&project.module.code_lines),               avg_stat(&project.module.code_lines));      if (print_metric(cml))         out(csv ? ",%lu,%lu,%lu" : "     Comment:       <%lu >%lu ~%lu\n",               min_stat(&project.module.comment_lines),               max_stat(&project.module.comment_lines),               avg_stat(&project.module.comment_lines));      if (print_metric(bll))         out(csv ? ",%lu,%lu,%lu" : "     Blank:         <%lu >%lu ~%lu\n",               min_stat(&project.module.white_lines),               max_stat(&project.module.white_lines),               avg_stat(&project.module.white_lines));      if (print_metric(exs))         out(csv ? ",%lu,%lu,%lu" : "   Exec Statements: <%lu >%lu ~%lu\n",               min_stat(&project.module.stmnts),               max_stat(&project.module.stmnts),               avg_stat(&project.module.stmnts));      if (print_metric(dcs))         out(csv ? ",%lu,%lu,%lu" : "   Decl Statements: <%lu >%lu ~%lu\n",               min_stat(&project.module.decls),               max_stat(&project.module.decls),               avg_stat(&project.module.decls));      if (print_metric(pps))         out(csv ? ",%lu,%lu,%lu" : "   PP Statements:   <%lu >%lu ~%lu\n",               min_stat(&project.module.pp),               max_stat(&project.module.pp),               avg_stat(&project.module.pp));      if (print_metric(fnc))         out(csv ? ",%lu,%lu,%lu" : "   Functions:       <%lu >%lu ~%lu\n",               min_stat(&project.module.funcs),               max_stat(&project.module.funcs),               avg_stat(&project.module.funcs));      out(csv ? "" : "\n");   }   /*      Only print project-related stats if there is at least one      project-related metric to print for the project.   */   if (print_prj)   {      out(csv ? "" : "   -Project-\n");      if (print_metric(scl))         out(csv ? ",%lu" : "   Lines:           %lu\n",               tot_stat(&project.module.lines));      if (print_metric(cdl))         out(csv ? ",%lu" : "     Code:          %lu\n",               tot_stat(&project.module.code_lines));      if (print_metric(cml))         out(csv ? ",%lu" : "     Comment:       %lu\n",               tot_stat(&project.module.comment_lines));      if (print_metric(bll))         out(csv ? ",%lu" : "     Blank:         %lu\n",               tot_stat(&project.module.white_lines));      if (print_metric(exs))         out(csv ? ",%lu" : "   Exec Statements: %lu\n",               tot_stat(&project.function.stmnts));      if (print_metric(dcs))         out(csv ? ",%lu" : "   Decl Statements: %lu\n",               tot_stat(&project.module.decls));      if (print_metric(pps))         out(csv ? ",%lu" : "   PP Statements:   %lu\n",               tot_stat(&project.module.pp));      total_statements = tot_stat(&project.function.stmnts) +            tot_stat(&project.module.decls) +            tot_stat(&project.module.pp);      function_points = total_statements / STMNT_TO_FP_DIVISOR + ROUND;      /*         If function(s) and supposed to, adjust function points based on         average complexity.      */      if (tot_stat(&project.module.funcs) != 0 && adjust_function_points)      {         function_points /= fp_adjustment_factor(               avg_stat(&project.function.decisions) + 1);      }      if (print_metric(fnp))         out(csv ? ",%u" : "   Function Points: %u\n",               (unsigned)function_points);      if (print_metric(idc))         out(csv ? ",%lu" : "   Identifiers:     %lu\n",               tim_stat(&project.idents));      if (print_metric(idl))         out(csv ? ",%lu,%lu,%lu" : "     Length:        <%lu >%lu ~%lu\n",               tim_stat(&project.idents) == 0 ? 0 : min_stat(&project.idents),               tim_stat(&project.idents) == 0 ? 0 : max_stat(&project.idents),               tim_stat(&project.idents) == 0 ? 0 : avg_stat(&project.idents));      if (print_metric(fnc))         out(csv ? ",%lu" : "   Functions:       %lu\n",               tot_stat(&project.module.funcs));      if (print_metric(mdc))         out(csv ? ",%lu" : "   Modules:         %lu\n", project.modules);   }   out(csv ? "\n" : "");}/* Update project-level statistics. */static void update_project_stats(BOOLEAN do_halstead){   absorb_stat(&project.function.decisions, &module.function.decisions);   absorb_stat(&project.function.conditions, &module.function.conditions);   if (do_halstead)   {      absorb_stat(&project.function.length, &module.function.length);      absorb_stat(&project.function.vocabulary, &module.function.vocabulary);      absorb_stat(&project.function.volume, &module.function.volume);      absorb_stat(&project.function.level, &module.function.level);      absorb_stat(&project.function.effort, &module.function.effort);      absorb_stat(&project.function.intelligence,            &module.function.intelligence);      absorb_stat(&project.function.lang_level, &module.function.lang_level);   }   absorb_stat(&project.function.lines, &module.function.lines);   absorb_stat(&project.function.code_lines, &module.function.code_lines);   absorb_stat(&project.function.comment_lines, &module.function.comment_lines);   absorb_stat(&project.function.white_lines, &module.function.white_lines);   record_stat(&project.module.lines, mod.lines.total);   record_stat(&project.module.code_lines, mod.lines.code);   record_stat(&project.module.comment_lines, mod.lines.com);   record_stat(&project.module.white_lines, mod.lines.white);   absorb_stat(&project.idents, &module.idents);   absorb_stat(&project.function.decls, &module.function.decls);   absorb_stat(&project.function.stmnts, &module.function.stmnts);   absorb_stat(&project.function.max_depth, &module.function.max_depth);   record_stat(&project.module.decls, mod.decl);   record_stat(&project.module.stmnts, tot_stat(&module.function.stmnts));   record_stat(&project.module.pp, mod.pp);   record_stat(&project.module.funcs, mod.functions);   ++project.modules;}/* Initialize module-level statistics. */static void init_module_stats(BOOLEAN do_halstead){   init_stat(&module.function.decisions);   init_stat(&module.function.conditions);   if (do_halstead)   {      init_stat(&module.function.length);      init_stat(&module.function.vocabulary);      init_stat(&module.function.volume);      init_stat(&module.function.level);      init_stat(&module.function.effort);      init_stat(&module.function.intelligence);      init_stat(&module.function.lang_level);   }   init_stat(&module.function.lines);   init_stat(&module.function.code_lines);   init_stat(&module.function.comment_lines);   init_stat(&module.function.white_lines);   init_stat(&module.function.decls);   init_stat(&module.function.stmnts);   init_stat(&module.function.max_depth);   init_stat(&module.idents);   module.lines = 0;   module.code_lines = 0;   module.comment_lines = 0;   module.white_lines = 0;}/* Print module summary. */static void print_module_summary(BOOLEAN csv, BOOLEAN print_mod,      BOOLEAN print_mod_fcn, BOOLEAN do_halstead,      BOOLEAN adjust_function_points){   /*      Executable + declaration + preprocessor statements.  For      function-point backfiring.   */   float total_statements;   /* Backfired function points. */   float function_points;   out(csv ? "mod,%s" : "\n\n   Module Summary\n", mod_name());   /*      Only print function-related stats if at least one function and      there is at least one function-related metric to print for a      module.   */   if (mod.functions != 0 && print_mod_fcn)   {      out(csv ? "" : "      -Function-\n");      if (print_metric(cyc))         out(csv ? ",%lu,%lu,%lu" : "      Cyclomatic:      <%lu >%lu ~%lu\n",               min_stat(&module.function.decisions) + 1,               max_stat(&module.function.decisions) + 1,               avg_stat(&module.function.decisions) + 1);      if (print_metric(exc))         out(csv ? ",%lu,%lu,%lu" : "        Extended:      <%lu >%lu ~%lu\n",               min_stat(&module.function.conditions) + 1,               max_stat(&module.function.conditions) + 1,               avg_stat(&module.function.conditions) + 1);      if (do_halstead)      {         if (print_metric(pln))            out(csv ? ",%lu,%lu,%lu" :                  "      Halstead Length: <%lu >%lu ~%lu\n",                  min_stat(&module.function.length),                  max_stat(&module.function.length),                  avg_stat(&module.function.length));         if (print_metric(pvc))            out(csv ? ",%lu,%lu,%lu" :                  "        Vocabulary:    <%lu >%lu ~%lu\n",                  min_stat(&module.function.vocabulary),                  max_stat(&module.function.vocabulary),                  avg_stat(&module.function.vocabulary));         if (print_metric(pvl))            out(csv ? ",%lu,%lu,%lu" :                  "        Volume:        <%lu >%lu ~%lu\n",                  min_stat(&module.function.volume),                  max_stat(&module.function.volume),                  avg_stat(&module.function.volume));         if (print_metric(plv))            out(csv ? ",%.3f,%.3f,%.3f" :                  "        Level:         <%.3f >%.3f ~%.3f\n",                  min_stat(&module.function.level) / 1000.0,                  max_stat(&module.function.level) / 1000.0,                  avg_stat(&module.function.level) / 1000.0);         if (print_metric(pef))            out(csv ? ",%lu,%lu,%lu" :                  "        Effort:        <%lu >%lu ~%lu\n",                  min_stat(&module.function.effort),                  max_stat(&module.function.effort),                  avg_stat(&module.function.effort));         if (print_metric(inc))            out(csv ? ",%lu,%lu,%lu" :                  "        Intelligence:  <%lu >%lu ~%lu\n",                  min_stat(&module.function.intelligence),                  max_stat(&module.function.intelligence),                  avg_stat(&module.function.intelligence));         if (print_metric(ptm))            out(csv ? ",%.1f,%.1f,%.1f,%.1f" :                  "        Time (hours):  <%.1f >%.1f ~%.1f %.1f\n",                  min_stat(&module.function.effort) / moments_per_hour,                  max_stat(&module.function.effort) / moments_per_hour,                  avg_stat(&module.function.effort) / moments_per_hour,                  tot_stat(&module.function.effort) / moments_per_hour);         if (print_metric(llv))            out(csv ? ",%.2f,%.2f,%.2f" :                  "        Lang Level:    <%.2f >%.2f ~%.2f\n",                  min_stat(&module.function.lang_level) / 100.0,                  max_stat(&module.function.lang_level) / 100.0,                  avg_stat(&module.function.lang_level) / 100.0);      }      if (print_metric(scl))         out(csv ? ",%lu,%lu,%lu,%lu" :               "      Lines:           <%lu >%lu ~%lu %lu\n",               min_stat(&module.function.lines),               max_stat(&module.function.lines),               avg_stat(&module.function.lines),               tot_stat(&module.function.lines));      if (print_metric(cdl))         out(csv ? ",%lu,%lu,%lu,%lu" :               "        Code:          <%lu >%lu ~%lu %lu\n",               min_stat(&module.function.code_lines),               max_stat(&module.function.code_lines),               avg_stat(&module.function.code_lines),               tot_stat(&module.function.code_lines));      if (print_metric(cml))         out(csv ? ",%lu,%lu,%lu,%lu" :               "        Comment:       <%lu >%lu ~%lu %lu\n",               min_stat(&module.function.comment_lines),               max_stat(&module.function.comment_lines),               avg_stat(&module.function.comment_lines),               tot_stat(&module.function.comment_lines));      if (print_metric(bll))         out(csv ? ",%lu,%lu,%lu,%lu" :               "        Blank:         <%lu >%lu ~%lu %lu\n",               min_stat(&module.function.white_lines),               max_stat(&module.function.white_lines),               avg_stat(&module.function.white_lines),               tot_stat(&module.function.white_lines));      if (print_metric(exs))         out(csv ? ",%lu,%lu,%lu" : "      Exec Statements: <%lu >%lu ~%lu\n",               min_stat(&module.function.stmnts),               max_stat(&module.function.stmnts),               avg_stat(&module.function.stmnts));      if (print_metric(dcs))         out(csv ? ",%lu,%lu,%lu,%lu" :               "      Decl Statements: <%lu >%lu ~%lu %lu\n",               min_stat(&module.function.decls),               max_stat(&module.function.decls),               avg_stat(&module.function.decls),               tot_stat(&module.function.decls));      if (print_metric(mcd))         out(csv ? ",%lu,%lu,%lu" : "      Max Depth:       <%lu >%lu ~%lu\n",               min_stat(&module.function.max_depth),               max_stat(&module.function.max_depth),               avg_stat(&module.function.max_depth));      out(csv ? "" : "\n");   }   /*      Only print module-related stats if there is at least one      module-related metric to print for this module.   */   if (print_mod)   {      out(csv ? "" : "      -Module-\n");      if (print_metric(scl))         out(csv ? ",%u" : "      Lines:           %u\n", mod.lines.total);      if (print_metric(cdl))         out(csv ? ",%u" : "        Code:          %u\n", mod.lines.code);      if (print_metric(cml))         out(csv ? ",%u" : "        Comment:       %u\n", mod.lines.com);      if (print_metric(bll))         out(csv ? ",%u" : "        Blank:         %u\n", mod.lines.white);      if (print_metric(exs))         out(csv ? ",%lu" : "      Exec Statements: %lu\n",               tot_stat(&module.function.stmnts));      if (print_metric(dcs))         out(csv ? ",%u" : "      Decl Statements: %u\n", mod.decl);      if (print_metric(pps))         out(csv ? ",%u" : "      PP Statements:   %u\n", mod.pp);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -