[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC PATCH 1/4] xen/Makefile: add analysis-coverity and analysis-eclair


  • To: Stefano Stabellini <sstabellini@xxxxxxxxxx>
  • From: Jan Beulich <jbeulich@xxxxxxxx>
  • Date: Mon, 14 Nov 2022 08:30:23 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ta4/jXh/7sjcIT9Cu/F5RZOkPaSpkFsBebUjs20bUxc=; b=ah1+SS5/kYmU1akKktdEDP9p3At1l2iHKB3Cjl+7/i7qGZNThnra5EIsmERRICZS+yIFl0NLy1Kt630wus8JPsy2iOUV7pMKFXPmbg5uzqWf4yI3fRPIoEv5LbCdOZ/Im90jMfEu8upN4s8qAlWpBXz/eM+YbwmNMA3M/FMzZoC4y20FiW3McANZRaPydarvPonmG0K0fZnzVgPwWToaQY3gz3vGTCQuW3zRiFXmo7elWhCVkKj7Tf7VRrZmBQ32kukjIs3tTo2wk0n+VrMcLj6Zh1Wr1S71F/h8p96dlZKAqvq/UvIU3ZLPBRk6+AOkA0oWbG798KDY2Gcrz2ULYw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BzhfiW8cvj2XLtrou9Z6utWMzkZEUSOTQeO20JzxE4N4+75rFnd2KbrXhSmKfCJOIjjYy/UEkVF4Zuzh3/lrmM72VU55zXX7h3LeiIs6cB1Nm3UUwh4PAvKBNSCD0Jr4MvYUy05HzWlDRqKqgPR/LCZENZSGXxXxagVYynWHoQfCCs9o4LyhBNGHbzRp4TdLA9TWqPslArdWMgu1xbZYinh14AyWM632njxBg2YjdNXis3DuVqer6JdIxKd7mhYYgFf/HmPRUAq5K5I28xm3+ootmTCYP9lOEhVVQ4aWBW/pcXbuLKjkugiOzGr3qna7YQ1xARGzHLrFZcmOW2NmBA==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com;
  • Cc: Luca Fancellu <Luca.Fancellu@xxxxxxx>, Bertrand Marquis <Bertrand.Marquis@xxxxxxx>, Wei Chen <Wei.Chen@xxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Wei Liu <wl@xxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Anthony Perard <anthony.perard@xxxxxxxxxx>
  • Delivery-date: Mon, 14 Nov 2022 07:30:39 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 11.11.2022 21:52, Stefano Stabellini wrote:
> On Fri, 11 Nov 2022, Jan Beulich wrote:
>> On 11.11.2022 11:42, Luca Fancellu wrote:
>>>> On 9 Nov 2022, at 10:36, Jan Beulich <jbeulich@xxxxxxxx> wrote:
>>>> On 09.11.2022 11:08, Luca Fancellu wrote:
>>>>>>> On 07.11.2022 11:47, Luca Fancellu wrote:
>>>>>>> Now analysis-build-coverity will be called, the best match is 
>>>>>>> analysis-build-%, so again the dependency
>>>>>>> which is analysis-parse-tags-%, will be translated to 
>>>>>>> analysis-parse-tags-coverity.
>>>>>>>
>>>>>>> Now analysis-parse-tags-coverity will be called, the best match is 
>>>>>>> analysis-parse-tags-%, so the % will
>>>>>>> Have the ‘coverity’ value and in the dependency we will have 
>>>>>>> $(objtree)/%.sed -> $(objtree)/coverity.sed.
>>>>>>>
>>>>>>> Looking for $(objtree)/coverity.sed the best match is $(objtree)/%.sed, 
>>>>>>> which will have $(JUSTIFICATION_FILES)
>>>>>>> and the python script in the dependency, here we will use the second 
>>>>>>> expansion to solve
>>>>>>> $(XEN_ROOT)/docs/misra/false-positive-$$*.json in 
>>>>>>> $(XEN_ROOT)/docs/misra/false-positive-coverity.json
>>>>>>>
>>>>>>> So now after analysis-parse-tags-coverity has ended its dependency it 
>>>>>>> will start with its recipe, after it finishes,
>>>>>>> the recipe of analysis-build-coverity will start and it will call make 
>>>>>>> to actually build Xen.
>>>>>>
>>>>>> Okay, I see now - this building of Xen really _is_ independent of the
>>>>>> checker chosen. I'm not sure though whether it is a good idea to
>>>>>> integrate all this, including ...
>>>>>>
>>>>>>> After the build finishes, if the status is good, the 
>>>>>>> analysis-build-coverity has finished and the _analysis-coverity
>>>>>>> recipe can now run, it will call make with the analysis-clean target, 
>>>>>>> restoring any <file>.{c,h}.safparse to <file>.{c,h}.
>>>>>>
>>>>>> ... the subsequent cleaning. The state of the _source_ tree after a
>>>>>> build failure would be different from that after a successful build.
>>>>>> Personally I consider this at best surprising.
>>>>>>
>>>>>> I wonder whether instead there could be a shell(?) script driving a
>>>>>> sequence of make invocations, leaving the new make goals all be self-
>>>>>> contained. Such a script could revert the source tree to its original
>>>>>> state even upon build failure by default, with an option allowing to
>>>>>> suppress this behavior.
>>>>>
>>>>> Instead of adding another tool, so another layer to the overall system, I 
>>>>> would be more willing to add documentation
>>>>> about this process, explaining how to use the analysis-* build targets, 
>>>>> what to expect after a successful run and what
>>>>> to expect after a failure.
>>>>>
>>>>> What do you think?
>>>>
>>>> Personally I'd prefer make goals to behave as such, with no surprises.
>>>
>>> The analysis-* goal requires a build step, otherwise no analysis can be 
>>> performed by the analysis tools, so I hope we agree
>>> we need to integrate that step as a dependency of the analysis-*.
>>
>> No, I'm afraid we don't agree. But like said for another piece we didn't
>> initially agree on - if others think what you propose is fine, so be it.
>> I'm specifically adding Anthony to Cc, as he's been working on make rules
>> the most of all of us in the recent past.
>>
>>> I understand that the analysis-clean might be a “surprise” if not well 
>>> documented, this comes from the need to substitute the
>>> tags in the tree (to keep the real path in the report log) and to revert 
>>> them back at the end of the analysis.
>>>
>>> So, such script should just mask to the user the analysis-clean invocation 
>>> in case of errors (with an option to don’t do that)?
>>
>> Hmm, here you're saying "such script", which looks to not fit with the
>> earlier part of your reply above. (Just in case that's what I was to read
>> out of this: I wouldn't see value in a script which existed _solely_ to
>> make the cleaning conditional.)
>>
>> Did you consider the alternative approach of copying the tree, altering
>> it (while or after copying), running the build there, pulling out the
>> result files, and delete the entire copy? Such a model would likely get
>> away without introducing surprising make rules.
> 
> Another, maybe simpler idea: what if the build step is not a dependency
> of the analysis-* goals?
> 
> Basically, the user is supposed to:
> 
> 1) call analysis-parse-tags-*
> 2) build Xen (in any way they like)
> 3) call analysis-clean

Well, that's exactly what I've been proposing, with the (optional)
addition of a small (shell) script doing all of the three for ...

> Making steps 1-3 into a single step is slightly more convenient for the
> user but the downside is that dealing with build errors becomes
> problematic.
> 
> On the other hand, if we let the user call steps 1-3 by hand
> individually, it is slightly less convenient for the user but they can
> more easily deal with any build error and sophisticated build
> configurations.

... convenience.

Jan



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.