On 15 Dec 2015, at 7:37, Donald Sharp wrote:

Martin -

As discussed in the meeting today here is an example of a bogus issue:

https://ci1.netdef.org/artifact/QUAGGA-QMASTER/shared/build-82/static_analysis/report-8a9e85.html#EndPath

Basically the error message boils down to this code construct:

struct prefix p;
if (afi == v4)
set p appropriately
else if (afi == v6)
set p appropriately

if (p.prefixlen) <------- If afi is not v4 or v6 then prefix length is
not going to be set.

I think in this case it is correct for Clang to warn and I would expect any
other static analyzer to flag this as well.


If you would thought that afi can really only have a value of v4 or v6,
then you could have written it as

if (afi == v4)
  set p appropriately
else  /* afi == v6 */
  set p appropriately

However, by writing it as above, whoever wrote it might have thought that (at least in future or failure cases) it could have another value and wanted
to protect from it.

If this is a very unlikely case, then why not write it like this ?

if (afi == v4)
  set p appropriately
else if (afi == v6)
  set p appropriately
else
  assert   (and blow up)

Or if this is a bit more likely to happen then return a failure code from the function
(like Paul suggested)

I spent a few minutes looking at clang and saw no good way to mark the code
in plist.c as ok.

Workarounds for common clang errors are described here:
http://clang-analyzer.llvm.org/faq.html
I think their recommendation is to add a custom assert for this case

Regards,
   Martin Winter


On Mon, Dec 7, 2015 at 7:26 PM, Martin Winter <[email protected]
wrote:

Just wanted to give a quick update on what I’m up the past few days:


1) Added OpenBSD 5.8 to my CI Testbed (currently works fine)
============================================================

See
https://git-us.netdef.org/projects/OSR/repos/ci-files/browse/doc/Quagga_OpenBSD58.md
for details on how I build it. Packages are built as well (but not really
tested)
OpenBSD adds a few patches when they build Quagga - probably need to
review them if
they make sense to integrate into the mainline. I’m currently ignoring the
patches
in my test packages I’m building
(Thanks to Peter Hessler from the OpenBSD team for a few starter hints)



2) Added Clang Static analyzer
============================================================

I’m not yet sure what to do with the output (i.e. how/when I should flag a
build
as “failed” based on the output.
For all the major plans on out CI system, this is now added and the report
archived.

You’ll find them under the Artifacts. Click on a recent run number on the
CI plan
(i.e. on https://ci1.netdef.org/browse/QUAGGA-QMASTER), then on Artifacts
and you
should see a link for the Static Analyzer Results)

Current Master:

https://ci1.netdef.org/browse/QUAGGA-QMASTER-82/artifact/shared/static_analysis

Current Proposed-5 branch:

https://ci1.netdef.org/browse/QUAGGA-QMASTER7-2/artifact/shared/static_analysis

Suggestion on what to track / how to track / how to proceed are welcome.



3) Automated Patchwork Testing (and reporting)
============================================================

Going to resume sending the automated patches (starting from patches
submitted a week ago),
but still not sure on how to deal with patches which do not cleanly apply
against the
master branch. If someone has a suggestion, then please feel free to speak
up.
I’m wondering how a “human” guesses the correct branch for testing (i.e.
anyone here
on the mailing list picking up patches and testing them by hand)

In general, I always run it automatically, just didn’t send the email in
the past weeks.
If you want to see a specific results, then just access them directly:
i.e. for any run with Patchwork 1599 in it:
https://ci1.netdef.org/browse/label/patchwork_id=1599

Ideas:
a) Community generally rejects patches against older commits or other
branches (and I
just report them as failures
b) Somehow the commit message includes the branch to test against.
c) Try master first and if it fails to apply the patch, automatically try
other branches
d) Get submitters to tag the patches someway if they are NOT against
current master

Opinions?


_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev

_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to