MCPcopy Create free account
hub / github.com/DeusData/codebase-memory-mcp / add_coverage_report

Function add_coverage_report

src/mcp/mcp.c:3941–4033  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3939enum { COVERAGE_FILE_CAP = 500 };
3940
3941static void add_coverage_report(yyjson_mut_doc *doc, yyjson_mut_val *root, cbm_store_t *store,
3942 const char *project) {
3943 cbm_coverage_row_t *rows = NULL;
3944 int count = 0;
3945 (void)cbm_store_coverage_get(store, project, &rows, &count);
3946
3947 yyjson_mut_val *pp_files = yyjson_mut_arr(doc);
3948 yyjson_mut_val *sk_files = yyjson_mut_arr(doc);
3949 yyjson_mut_val *ni_dirs = yyjson_mut_arr(doc);
3950 yyjson_mut_val *ni_files = yyjson_mut_arr(doc);
3951 int pp_n = 0;
3952 int sk_n = 0;
3953 int ni_dir_n = 0;
3954 int ni_file_n = 0;
3955 for (int i = 0; i < count; i++) {
3956 const char *kind = rows[i].kind ? rows[i].kind : "";
3957 if (strcmp(kind, "parse_partial") == 0) {
3958 if (pp_n < COVERAGE_FILE_CAP) {
3959 yyjson_mut_val *fe = yyjson_mut_obj(doc);
3960 yyjson_mut_obj_add_strcpy(doc, fe, "path", rows[i].rel_path);
3961 yyjson_mut_obj_add_strcpy(doc, fe, "error_ranges",
3962 rows[i].detail ? rows[i].detail : "");
3963 yyjson_mut_arr_add_val(pp_files, fe);
3964 }
3965 pp_n++;
3966 } else if (strcmp(kind, "not_indexed_dir") == 0) {
3967 if (ni_dir_n < COVERAGE_FILE_CAP) {
3968 yyjson_mut_arr_add_strcpy(doc, ni_dirs, rows[i].rel_path);
3969 }
3970 ni_dir_n++;
3971 } else if (strcmp(kind, "not_indexed_file") == 0) {
3972 if (ni_file_n < COVERAGE_FILE_CAP) {
3973 yyjson_mut_val *fe = yyjson_mut_obj(doc);
3974 yyjson_mut_obj_add_strcpy(doc, fe, "path", rows[i].rel_path);
3975 yyjson_mut_obj_add_strcpy(doc, fe, "reason", rows[i].detail ? rows[i].detail : "");
3976 yyjson_mut_arr_add_val(ni_files, fe);
3977 }
3978 ni_file_n++;
3979 } else {
3980 if (sk_n < COVERAGE_FILE_CAP) {
3981 yyjson_mut_val *fe = yyjson_mut_obj(doc);
3982 yyjson_mut_obj_add_strcpy(doc, fe, "path", rows[i].rel_path);
3983 yyjson_mut_obj_add_strcpy(doc, fe, "reason", rows[i].detail ? rows[i].detail : "");
3984 yyjson_mut_obj_add_strcpy(doc, fe, "phase", rows[i].kind ? rows[i].kind : "");
3985 yyjson_mut_arr_add_val(sk_files, fe);
3986 }
3987 sk_n++;
3988 }
3989 }
3990 cbm_store_free_coverage(rows, count);
3991
3992 yyjson_mut_val *pp = yyjson_mut_obj(doc);
3993 yyjson_mut_obj_add_val(doc, pp, "files", pp_files);
3994 yyjson_mut_obj_add_int(doc, pp, "count", pp_n);
3995 yyjson_mut_obj_add_bool(doc, pp, "truncated", pp_n > COVERAGE_FILE_CAP);
3996 yyjson_mut_obj_add_val(doc, root, "parse_partial", pp);
3997
3998 yyjson_mut_val *sk = yyjson_mut_obj(doc);

Callers 1

handle_index_statusFunction · 0.85

Calls 2

cbm_store_coverage_getFunction · 0.85
cbm_store_free_coverageFunction · 0.85

Tested by

no test coverage detected