/** * print_report: **/ static gboolean process_report (GList *issues, gboolean pretty) { GList *l; AsValidatorIssue *issue; AsIssueImportance importance; gboolean errors_found = FALSE; gchar *imp; for (l = issues; l != NULL; l = l->next) { issue = (AsValidatorIssue*) l->data; importance = as_validator_issue_get_importance (issue); /* if there are errors or warnings, we consider the validation to be failed */ if ((importance == AS_ISSUE_IMPORTANCE_ERROR) || (importance == AS_ISSUE_IMPORTANCE_WARNING)) errors_found = TRUE; imp = importance_to_print_string (importance, pretty); g_print ("%s: %s\n", imp, as_validator_issue_get_message (issue)); g_free (imp); } return errors_found; }
/** * as_validator_add_issue: **/ static void as_validator_add_issue (AsValidator *validator, AsIssueImportance importance, AsIssueKind kind, const gchar *format, ...) { va_list args; gchar *buffer; gchar *str; gchar *id_str; g_autofree gchar *fname = NULL; AsValidatorIssue *issue; AsValidatorPrivate *priv = GET_PRIVATE (validator); va_start (args, format); buffer = g_strdup_vprintf (format, args); va_end (args); issue = as_validator_issue_new (); as_validator_issue_set_kind (issue, kind); as_validator_issue_set_importance (issue, importance); as_validator_issue_set_message (issue, buffer); g_free (buffer); /* find location */ if (priv->current_fname == NULL) fname = g_strdup ("<unknown>"); else fname = g_strdup (priv->current_fname); if (priv->current_cpt == NULL) str = g_strdup_printf ("%s:<root>", fname); else if (as_str_empty (as_component_get_id (priv->current_cpt))) str = g_strdup_printf ("%s:???", fname); else str = g_strdup_printf ("%s:%s", fname, as_component_get_id (priv->current_cpt)); as_validator_issue_set_location (issue, str); g_free (str); id_str = g_strdup_printf ("%s - %s", as_validator_issue_get_location (issue), as_validator_issue_get_message (issue)); /* str ownership is transferred to the hashtable */ g_hash_table_insert (priv->issues, id_str, issue); }
/** * as_validator_add_issue: **/ static void as_validator_add_issue (AsValidator *validator, xmlNode *node, AsIssueImportance importance, AsIssueKind kind, const gchar *format, ...) { va_list args; gchar *buffer; gchar *id_str; g_autofree gchar *location = NULL; AsValidatorIssue *issue; AsValidatorPrivate *priv = GET_PRIVATE (validator); va_start (args, format); buffer = g_strdup_vprintf (format, args); va_end (args); issue = as_validator_issue_new (); as_validator_issue_set_kind (issue, kind); as_validator_issue_set_importance (issue, importance); as_validator_issue_set_message (issue, buffer); g_free (buffer); /* update location information */ if (priv->current_fname != NULL) as_validator_issue_set_filename (issue, priv->current_fname); if (priv->current_cpt != NULL) as_validator_issue_set_cid (issue, as_component_get_id (priv->current_cpt)); if (node != NULL) as_validator_issue_set_line (issue, node->line); location = as_validator_issue_get_location (issue); id_str = g_strdup_printf ("%s - %s", location, as_validator_issue_get_message (issue)); /* str ownership is transferred to the hashtable */ g_hash_table_insert (priv->issues, id_str, issue); }