Hello,

An update on the various static analyzers that we are running on the
Firefox, Fennec, NSS, NSPR and Thunderbird code.

Warning: these tools are not Silver bullets. Due to their nature, they
are going to generate false positives.
However, they do find some important and critical issues early in the cycle.

= Static analyzers =
For now, we are running:
* Coverity, a proprietary tool with a great (but slow) web interface. As
Firefox is Free software, the service is provided for free
but with a restriction in term of number of build. Now, the analysis is
launched once a week on Monday. Supports C, C++ & Java.
A few improvements will be made to silent some of the defects.

* scan-build (aka clang-analyzer), a static analyzer integrated into
Clang. This tool is executed every day. Support C & C++.
The main issue with scan-build is that here is no history management and
it is not really possible to ignore false positive.
Ericsson started to work on a new (Python) tool based on clang-analyzer
called Code Checker - https://github.com/Ericsson/codechecker
to address that.

* infer, the brand new Ocaml-based and Clang static analyzer developed
by Facebook. Run every day.
For now, supports C, Java and Objective-C. Mostly developed for their
needs for mobile apps.
I have been discussing with the developers on this.

= About the reports =

== Coverity ==
To see the Coverity reports, an account is needed and a Coverity admins
(Dan Veditz or I) will have to approve the application.
Only @mozilla.{com,org} email addresses will be accepted.
https://scan.coverity.com/projects/firefox
https://scan.coverity.com/projects/firefox-mobile - I don't trust the
coverity results for Fennec yet.I think many Java files have not been
processed
I asked help to the editor of this software and on their forum (
https://communities.coverity.com/thread/3442 ) but no news.


== Scan-builds ==

Scan-build reports are limited to Mozilla employees. Persona
authentication is used login.
Firefox:
https://people.mozilla.org/~sledru/reports/fx-scan-build/

Thunderbird:
https://people.mozilla.org/~sledru/reports/tb-scan-build/

NSS:
https://people.mozilla.org/~sledru/reports/nss-scan-build/

NSPR:
https://people.mozilla.org/~sledru/reports/nspr-scan-build/


== Infer ==

Firefox (just C code):
https://people.mozilla.org/~sledru/reports/firefox-infer/bugs.txt

Fennec (Java code):
https://people.mozilla.org/~sledru/reports/fennec-infer/bugs.txt


= Future =
As a goal, I would like to see that integrated in our workflows.


Any questions, comments?


Technically, the jobs are managed by a Jenkins instance:
http://relman-ci.mozilla.org/ - sources can be found here:
https://github.com/sylvestre/relman-ci

Sylvestre


_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to