コード例 #1
0
ファイル: appstream-validate.c プロジェクト: abhi11/appstream
/**
 * 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;
}
コード例 #2
0
ファイル: as-validator.c プロジェクト: neilmayhew/appstream
/**
 * 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);
}
コード例 #3
0
/**
 * 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);
}