verification revision 1.2
11.2Skamil$NetBSD: verification,v 1.2 2019/06/17 17:45:18 kamil Exp $
21.1Sdholland
31.1SdhollandNetBSD Verification Roadmap
41.1Sdholland===========================
51.1Sdholland
61.1SdhollandThis roadmap covers things that we intend or would like to do pursuant
71.1Sdhollandto verification and quality control.
81.1Sdholland
91.1SdhollandThe following elements, projects, and goals are relatively near-term:
101.1Sdholland
111.1Sdholland 1. Cut down the Coverity backlog
121.1Sdholland 3. Deploy clang-static-analyzer
131.1Sdholland
141.1SdhollandThe following elements, projects, and goals are longer-term:
151.1Sdholland
161.1Sdholland 4. mint
171.1Sdholland 5. Database-driven program analyzer
181.1Sdholland
191.1SdhollandThe following elements, projects, and goals are rather blue-sky so far:
201.1Sdholland
211.1Sdholland 6. Use Frama-C to verify fsck_ffs
221.1Sdholland
231.1Sdholland
241.1SdhollandExplanations
251.1Sdholland============
261.1Sdholland
271.1Sdholland1. Cut down the Coverity backlog
281.1Sdholland
291.1SdhollandCoverity provides us with free analysis reports, which we sometimes
301.1Sdhollandhandle and sometimes don't. Apparently though Linux has a lower number
311.1Sdhollandof Coverity hits per line than we do; that seems fundamentally wrong
321.1Sdhollandand something that should get attention. Most of the problems Coverity
331.1Sdhollandfinds are pretty easily fixed, or are false positives.
341.1Sdholland
351.1Sdholland - As of January 2017 coypu has been working on this. Christos often
361.1Sdholland   also fixes these.
371.1Sdholland - There is currently no clear timeframe or release target.
381.1Sdholland - Contact christos for further information.
391.1Sdholland
401.1Sdholland
411.1Sdholland3. Deploy clang-static-analyzer
421.1Sdholland
431.1SdhollandThere is some makefile support for running clang-static-analyzer, but
441.1Sdhollandit doesn't get done regularly. This should probably get added to the
451.1Sdhollandautobuilds.
461.1Sdholland
471.1Sdholland - As of January 2017 nobody is known to be working on this.
481.1Sdholland - There is currently no clear timeframe or release target.
491.1Sdholland - Contact joerg for further information.
501.1Sdholland
511.1Sdholland
521.1Sdholland4. mint
531.1Sdholland
541.1SdhollandA while back dholland started on a replacement for the existing lint,
551.1Sdhollandsince lint is not really smart enough to be useful and its code is
561.1Sdhollandonly marginally maintainable. The code is in othersrc, but it needs
571.1Sdhollandsome tidying before anyone else tries hacking on it.
581.1Sdholland
591.1Sdholland - As of January 2017 nobody is known to be working on this.
601.1Sdholland - There is currently no clear timeframe or release target.
611.1Sdholland - Responsible: dholland
621.1Sdholland
631.1Sdholland
641.1Sdholland5. Database-driven program analyzer
651.1Sdholland
661.1SdhollandIn the long run we would like to have a program analyzer that can
671.1Sdhollandscale to the whole kernel and can do differential analyses across
681.1Sdhollanddifferent versions. This is a nontrivial project though.
691.1Sdholland
701.1Sdholland - As of January 2017 nobody is known to be working on this.
711.1Sdholland - There is currently no clear timeframe or release target.
721.1Sdholland - Contact: dholland
731.1Sdholland
741.1Sdholland
751.1Sdholland6. Use Frama-C to verify fsck_ffs
761.1Sdholland
771.1SdhollandFrama-C is a framework for doing formal verification of C code using
781.1Sdholland(mostly) precondition/postcondition specs. It is not everything one
791.1Sdhollandnecessarily wants in a verification framework; but on the other hand
801.1Sdhollandit exists and people do use it.
811.1Sdholland
821.1Sdhollandfsck_ffs seems like a good candidate for this because it's
831.1Sdhollandmission-critical and what it needs to do is comparatively well
841.1Sdhollandunderstood even in detail. However, the code may be too messy.
851.1Sdholland
861.1Sdholland - As of January 2017 nobody is known to be working on this.
871.1Sdholland - There is currently no clear timeframe or release target.
881.1Sdholland - Contact: dholland
89