public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
From: Richard Palethorpe <rpalethorpe@suse.de>
To: ltp@lists.linux.it
Subject: [LTP] [RFC PATCH v3 2/2] Start libclang based analyzer and TEST() check
Date: Mon, 14 Jun 2021 15:25:39 +0100	[thread overview]
Message-ID: <87r1h44j6k.fsf@suse.de> (raw)
In-Reply-To: <YMdfDZPxY7lZC8F0@pevik>

Hello,

Petr Vorel <pvorel@suse.cz> writes:

> Hi Richie,
>
>> Hi Richie,
>
>> > +#if HAVE_CLANG_C_INDEX_H
>> > +
>> > +#include <clang-c/Index.h>
>> ...
>
>> > +static void emit_error(const char *const error_msg)
>> > +{
>> > +	if (color_enabled(STDERR_FILENO)) {
>> > +		dprintf(STDERR_FILENO,
>> > +			"%sERROR%s: %s%s%s\n",
>> > +			ansi_red, ansi_reset,
>> > +			ansi_bold, error_msg, ansi_reset);
>> > +	} else {
>> > +		dprintf(STDERR_FILENO, "ERROR: %s\n", error_msg);
>> > +	}
>> > +}
>> ...
>> > +	if (ret != CXError_Success) {
>> > +		emit_error("Failed to parse translation unit!");
>> > +		return 1;
>> > +	}
>> ...
>
>> > +#else
>> > +
>> > +int main(const attr_unused int argc, const attr_unused char *const *const argv)
>> > +{
>> > +	emit_error("clang-checks was not built correctly; libclang headers are not installed!\n");
>> emit_error() is not visible here, thus build fails. Please add it
>before HAVE_CLANG_C_INDEX_H.

+1

Uhg.

>
>> Or you could just use tst_test.h with TST_NO_DEFAULT_MAIN and here would be TST_TEST_TCONF()
>> (+ LTP_ATTRIBUTE_UNUSED).
>
> ...
>> > +/* Copied from lib/tst_ansi_color.c */
>> > +static int color_enabled(const int fd)
>
> Also you'd probably get tst_color_enabled() and other things from
> lib/tst_ansi_color.c for color handling for free when using
> tst_test.h.

We would probably have to build the ltplib with HOSTCC. I don't think we
can just include the headers.

It is tempting, but it also seems very circular. I can imagine someone
half refactoring a library and wanting to run the checks on one
translation unit. However Make would detect a dependency has changed, so
would try to rebuild the checker with a broken ltplib...

We could probably make it work, but having the checker depend on the
thing it checks seems like a recipe for complication. Meanwhile we just
get to share a few macros and string constants.

>
> But that's just a minor detail.
>
> Kind regards,
> Petr
>
>> Kind regards,
>> Petr
>
>> > +	return 1;
>> > +}
>> > +
>> > +#endif


-- 
Thank you,
Richard.

  reply	other threads:[~2021-06-14 14:25 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-14 11:56 [LTP] [RFC PATCH v3 0/2] Libclang based analyzer Richard Palethorpe
2021-06-14 11:56 ` [LTP] [RFC PATCH v3 1/2] Add 'make check' and clang-check to build system Richard Palethorpe
2021-06-15 14:16   ` Cyril Hrubis
2021-06-14 11:56 ` [LTP] [RFC PATCH v3 2/2] Start libclang based analyzer and TEST() check Richard Palethorpe
2021-06-14 13:41   ` Petr Vorel
2021-06-14 13:52     ` Petr Vorel
2021-06-14 14:25       ` Richard Palethorpe [this message]
2021-06-14 14:27         ` Richard Palethorpe
2021-06-15 10:44           ` Petr Vorel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87r1h44j6k.fsf@suse.de \
    --to=rpalethorpe@suse.de \
    --cc=ltp@lists.linux.it \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox