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

Function add_coverage_report

src/mcp/mcp.c:3910–4002  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3908enum { COVERAGE_FILE_CAP = 500 };
3909
3910static void add_coverage_report(yyjson_mut_doc *doc, yyjson_mut_val *root, cbm_store_t *store,
3911 const char *project) {
3912 cbm_coverage_row_t *rows = NULL;
3913 int count = 0;
3914 (void)cbm_store_coverage_get(store, project, &rows, &count);
3915
3916 yyjson_mut_val *pp_files = yyjson_mut_arr(doc);
3917 yyjson_mut_val *sk_files = yyjson_mut_arr(doc);
3918 yyjson_mut_val *ni_dirs = yyjson_mut_arr(doc);
3919 yyjson_mut_val *ni_files = yyjson_mut_arr(doc);
3920 int pp_n = 0;
3921 int sk_n = 0;
3922 int ni_dir_n = 0;
3923 int ni_file_n = 0;
3924 for (int i = 0; i < count; i++) {
3925 const char *kind = rows[i].kind ? rows[i].kind : "";
3926 if (strcmp(kind, "parse_partial") == 0) {
3927 if (pp_n < COVERAGE_FILE_CAP) {
3928 yyjson_mut_val *fe = yyjson_mut_obj(doc);
3929 yyjson_mut_obj_add_strcpy(doc, fe, "path", rows[i].rel_path);
3930 yyjson_mut_obj_add_strcpy(doc, fe, "error_ranges",
3931 rows[i].detail ? rows[i].detail : "");
3932 yyjson_mut_arr_add_val(pp_files, fe);
3933 }
3934 pp_n++;
3935 } else if (strcmp(kind, "not_indexed_dir") == 0) {
3936 if (ni_dir_n < COVERAGE_FILE_CAP) {
3937 yyjson_mut_arr_add_strcpy(doc, ni_dirs, rows[i].rel_path);
3938 }
3939 ni_dir_n++;
3940 } else if (strcmp(kind, "not_indexed_file") == 0) {
3941 if (ni_file_n < COVERAGE_FILE_CAP) {
3942 yyjson_mut_val *fe = yyjson_mut_obj(doc);
3943 yyjson_mut_obj_add_strcpy(doc, fe, "path", rows[i].rel_path);
3944 yyjson_mut_obj_add_strcpy(doc, fe, "reason", rows[i].detail ? rows[i].detail : "");
3945 yyjson_mut_arr_add_val(ni_files, fe);
3946 }
3947 ni_file_n++;
3948 } else {
3949 if (sk_n < COVERAGE_FILE_CAP) {
3950 yyjson_mut_val *fe = yyjson_mut_obj(doc);
3951 yyjson_mut_obj_add_strcpy(doc, fe, "path", rows[i].rel_path);
3952 yyjson_mut_obj_add_strcpy(doc, fe, "reason", rows[i].detail ? rows[i].detail : "");
3953 yyjson_mut_obj_add_strcpy(doc, fe, "phase", rows[i].kind ? rows[i].kind : "");
3954 yyjson_mut_arr_add_val(sk_files, fe);
3955 }
3956 sk_n++;
3957 }
3958 }
3959 cbm_store_free_coverage(rows, count);
3960
3961 yyjson_mut_val *pp = yyjson_mut_obj(doc);
3962 yyjson_mut_obj_add_val(doc, pp, "files", pp_files);
3963 yyjson_mut_obj_add_int(doc, pp, "count", pp_n);
3964 yyjson_mut_obj_add_bool(doc, pp, "truncated", pp_n > COVERAGE_FILE_CAP);
3965 yyjson_mut_obj_add_val(doc, root, "parse_partial", pp);
3966
3967 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