<br><font size=2 face="sans-serif">Hi Kostis,</font>
<br>
<br><font size=2 face="sans-serif">As for me I tend to prefer building
everything at once, on a purely brute-force automated way, so that the
same exact test-proofed process always applies (from one version to another,
from a developer to another). What we are doing currently is generating
"incremental" PLT for each level of our software stack (starting
from Erlang of course). It seems to work satisfactorily.</font>
<br>
<br><font size=2 face="sans-serif">As our codebase, despite being small,
had already too many files to be updated with appropriate type specs in
one shot, we used an escript which instrumented first the existing source
code with specs *as they were deduced by Dialyzer*. Then only, as time
permits, we will fine-tune, file by file, the specs according to the developer's
original intent rather than according to what Dialyzer inferred (which
allows to have some insights and save some time).</font>
<br>
<br><font size=2 face="sans-serif">Later we will have to see how type spec
information can be injected in BEAMs whose generation involved functions
being defined thanks to a parse-transform. Not for today though!</font>
<br>
<br><font size=2 face="sans-serif">Thanks,<br>
Best regards,</font>
<br><font size=2 face="sans-serif"><br>
Olivier.<br>
---------------------------<br>
Olivier Boudeville<br>
<br>
EDF R&D : 1, avenue du Général de Gaulle, 92140 Clamart, France<br>
Département SINETICS, groupe ASICS (I2A), bureau B-226<br>
Office : +33 1 47 65 59 58 / Mobile : +33 6 16 83 37 22 / Fax : +33 1 47
65 27 13</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>kostis@cs.ntua.gr</b> </font>
<br><font size=1 face="sans-serif">Envoyé par : erlang-questions-bounces@erlang.org</font>
<p><font size=1 face="sans-serif">30/08/2011 14:21</font>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">A</font></div>
<td><font size=1 face="sans-serif">erlang-questions@erlang.org</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Objet</font></div>
<td><font size=1 face="sans-serif">Re: [erlang-questions] Dialyzer PLT
& unknown Erlang/OTP functions</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><tt><font size=2>On 08/30/11 12:24, Olivier BOUDEVILLE wrote:<br>
><br>
> Hello Stavros,<br>
><br>
> Thanks again for your answer; indeed --add_to_plt was the way to go,
it<br>
> then worked like a charm.<br>
<br>
Hi Olivier,<br>
<br>
Let me add to the info that Stavros sent that --add_to_plt is a very <br>
convenient way to avoid building the PLT for the full Erlang disto in <br>
one go.  One could start with a PLT for e.g. erts, kernel and stdlib
and <br>
then incrementally add to it when dialyzer reports unknown functions on
<br>
the code base they want to analyze.<br>
<br>
Also, note that adding parts of your code base to the PLT is typically
<br>
something to do only when these parts are considered more or less stable
<br>
(because if there are any changes to them, the up-to-date check will <br>
fail and the PLT will be re-built incrementally) and a "base"
upon which <br>
the rest of the code is build. Adding them to the PLT just allows one to
<br>
avoid having to specify them as part of the files that will be analyzed
<br>
and for which discrepancies will be detected.<br>
<br>
Cheers,<br>
Kostis<br>
<br>
PS. As to the following, it is something for the OTP folks to look at:<br>
<br>
> On a side note, making the PLT for the full Erlang distro exhibits
the<br>
> following remarks:<br>
> """<br>
> eunit_test.erl:242: Call to missing or unexported function<br>
> eunit_test:nonexisting_function/0<br>
> xrc.erl:124: Call to missing or unexported function wxXmlResource:reload/2<br>
> Unknown functions:<br>
> wxWindows:'Destroy'/1<br>
> wx_core:quit/0<br>
> Unknown types:<br>
> gen_sctp:assoc_id/0<br>
> gen_sctp:sctp_socket/0<br>
_______________________________________________<br>
erlang-questions mailing list<br>
erlang-questions@erlang.org<br>
http://erlang.org/mailman/listinfo/erlang-questions<br>
</font></tt>
<br><font face="monospace"><br>
<br>
<br>
Ce message et toutes les pièces jointes (ci-après le 'Message') sont établis à l'intention exclusive des destinataires et les informations qui y figurent sont strictement confidentielles. Toute utilisation de ce Message non conforme à sa destination, toute diffusion ou toute publication totale ou partielle, est interdite sauf autorisation expresse.<br>
<br>
Si vous n'êtes pas le destinataire de ce Message, il vous est interdit de le copier, de le faire suivre, de le divulguer ou d'en utiliser tout ou partie. Si vous avez reçu ce Message par erreur, merci de le supprimer de votre système, ainsi que toutes ses copies, et de n'en garder aucune trace sur quelque support que ce soit. Nous vous remercions également d'en avertir immédiatement l'expéditeur par retour du message.<br>
<br>
Il est impossible de garantir que les communications par messagerie électronique arrivent en temps utile, sont sécurisées ou dénuées de toute erreur ou virus.<br>
____________________________________________________<br>
<br>
This message and any attachments (the 'Message') are intended solely for the addressees. The information contained in this Message is confidential. Any use of information contained in this Message not in accord with its purpose, any dissemination or disclosure, either whole or partial, is prohibited except formal approval.<br>
<br>
If you are not the addressee, you may not copy, forward, disclose or use any part of it. If you have received this message in error, please delete it and all copies from your system and notify the sender immediately by return message.<br>
<br>
E-mail communication cannot be guaranteed to be timely secure, error or virus-free.</font>