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