<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="6616" data-post-id="6616">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="christopheradams" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/christopheradams/120/1139_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  christopheradams
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="fishcakez" data-post="14" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/fishcakez/48/12081_2.png" class="avatar"> fishcakez:</div>
<blockquote>
<p>I maintain the rebar3 provider which has all the features of dialyze</p>
</blockquote>
</aside>
<p>Huh, is it possible to run <code>rebar3 dialyze</code> on a compiled Elixir <code>_build</code>?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6616" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/dialyxir-recent-updates-and-request-for-feedback/1003/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-6616" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6616"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #21"></div>
  </section>
</div>
    <div class="postbit" id="6623" data-post-id="6623">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sasajuric" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/120/991_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sasajuric
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Author of Elixir In Action</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="fishcakez" data-post="14" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/fishcakez/48/12081_2.png" class="avatar"> fishcakez:</div>
<blockquote>
<p>Importantly dialyze is no longer maintained because no one was contributing and only people complaining.</p>
</blockquote>
</aside>
<p>I’m a happy user of <code>dialyze</code> and I made one (however small) contribution <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p>I think it’s a great tool and it pretty much just works as advertised.</p>
<p>One thing I’d like to have is some project config to include additional apps in PLT. The main case for this is <code>mix</code>. At my company we have a couple of custom mix tasks, and dialyzer complains since <code>mix</code> is not in the PLT. Obviously, we don’t want to add <code>mix</code> as a runtime dep, so our current solution is to suppress these warnings. IMO a better solution would be to explicitly request <code>dialyze</code> to include <code>mix</code> in the PLT via project config. I’ll be happy to make a PR if you’re open to this addition.</p>
<aside class="quote no-group" data-username="fishcakez" data-post="14" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/fishcakez/48/12081_2.png" class="avatar"> fishcakez:</div>
<blockquote>
<p>For example I think phoenix users can’t use this task very well because phoenix does not generate the correct applications list.</p>
</blockquote>
</aside>
<p>Has anyone discussed this with the Phoenix team? If Phoenix generator added <code>plug</code> and <code>poolboy</code> in the application list (but not compile-time deps), then this issue would be solved, right? And FWIW, I agree that it’s the proper way to go.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6623" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/dialyxir-recent-updates-and-request-for-feedback/1003/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-6623" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6623"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #22"></div>
  </section>
</div>
    <div class="postbit" id="6634" data-post-id="6634">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="fishcakez" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/fishcakez/120/12081_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  fishcakez
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Ecto Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It is not possible. It’s very tedious to maintain the same features in mix and rebar3. Rebar3 got more attention because:</p>
<ul>
<li><code>dialyzer</code> warnings are in Erlang terms, Elixir won’t have a native feel without patching <code>dialyzer</code> and its only in the last year did we manage to remove compiler generated warnings in Elixir.</li>
<li>Testing was much easier (rebar3 had a better test framework at time) and orders of magnitude faster to test (don’t need to add <code>:elixir</code> to the PLT)</li>
<li>I tend to use Erlang for complicated projects that don’t require Elixir-only features to take advantage of its simpler syntax and thats when I want <code>dialyzer</code> the most</li>
<li>People contributed to it</li>
</ul>
<p>Edit: Oops this was supposed to be a reply to <a class="mention" href="/u/christopheradams" rel="nofollow">@christopheradams</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6634" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/dialyxir-recent-updates-and-request-for-feedback/1003/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-6634" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6634"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #23"></div>
  </section>
</div>
    <div class="postbit" id="6635" data-post-id="6635">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="fishcakez" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/fishcakez/120/12081_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  fishcakez
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Ecto Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>[quote="sasajuric, post:23, topic:1003]<br>
I think it’s a great tool and it pretty much just works as advertised.</p>
<p>One thing I’d like to have is some project config to include additional apps in PLT. The main case for this is <code>mix</code>. At my company we have a couple of custom mix tasks, and dialyzer complains since <code>mix</code> is not in the PLT. Obviously, we don’t want to add <code>mix</code> as a runtime dep, so our current solution is to suppress these warnings. IMO a better solution would be to explicitly request <code>dialyze</code> to include <code>mix</code> in the PLT via project config. I’ll be happy to make a PR if you’re open to this addition]<br>
[/quote]</p>
<p>At present there are two <code>dialyzer</code> tasks which lack the features of each other and in my opinion we have two poor tasks. As <a class="mention" href="/u/jeremyjh" rel="nofollow">@jeremyjh</a> is copying features (that are missing in <code>:dialyxir</code>) from <code>:dialyze</code> to <code>:dialyxir</code> there is no need to have <code>:dialyze</code> any more. The feature you want is present in <code>:dialyxir</code> so perhaps you should help <a class="mention" href="/u/jeremyjh" rel="nofollow">@jeremyjh</a> move the features you want across. The license is the same so nothing prohibits this.</p>
<p>[quote="sasajuric, post:23, topic:1003]<br>
Has anyone discussed this with the Phoenix team? If Phoenix generator added <code>plug</code> and <code>poolboy</code> in the application list (but not compile-time deps), then this issue would be solved, right? And FWIW, I agree that it’s the proper way to go.<br>
[/quote]</p>
<p>I have brought it up on IRC several times where phoenix team members are involved in the conversation.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6635" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/dialyxir-recent-updates-and-request-for-feedback/1003/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-6635" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6635"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #24"></div>
  </section>
</div>
    <div class="postbit" id="6640" data-post-id="6640">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sasajuric" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/120/991_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sasajuric
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Author of Elixir In Action</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="fishcakez" data-post="25" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/fishcakez/48/12081_2.png" class="avatar"> fishcakez:</div>
<blockquote>
<p>At present there are two dialyzer tasks which lack the features of each other and in my opinion we have two poor tasks. As <a class="mention" href="/u/jeremyjh" rel="nofollow">@jeremyjh</a> is copying features (that are missing in :dialyxir) from :dialyze to :dialyxir there is no need to have :dialyze any more. The feature you want is present in :dialyxir so perhaps you should help <a class="mention" href="/u/jeremyjh" rel="nofollow">@jeremyjh</a> move the features you want across. The license is the same so nothing prohibits this.</p>
</blockquote>
</aside>
<p>The question is whether it should be the other way around. I actually opted for <code>dialyze</code> mostly because of some differences you mentioned earlier. It seemed to me (and still does) that it’s pretty much plug-and-play, with sensible default choices and optimized workflow. So from where I stand, it seems that <code>dialyze</code> should be the base, and a few features (e.g. customization of project PLT) should be merged from <code>dialyxir</code>.</p>
<p>But TBH, I took only a brief glance at  <code>dialyxir</code> , so I’d like to learn what’s in <code>dialyxir</code> that’s missing from <code>dialyze</code>?</p>
<aside class="quote no-group" data-username="fishcakez" data-post="25" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/fishcakez/48/12081_2.png" class="avatar"> fishcakez:</div>
<blockquote>
<p>I have brought it up on IRC several times where phoenix team members are involved in the conversation.</p>
</blockquote>
</aside>
<p>And what was the answer? <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6640" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/dialyxir-recent-updates-and-request-for-feedback/1003/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-6640" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6640"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #25"></div>
  </section>
</div>
    <div class="postbit" id="6651" data-post-id="6651">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="fishcakez" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/fishcakez/120/12081_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  fishcakez
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Ecto Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="sasajuric" data-post="26" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/48/991_2.png" class="avatar"> sasajuric:</div>
<blockquote>
<p>The question is whether it should be the other way around. I actually opted for <code>dialyze</code> mostly because of some differences you mentioned earlier. It seemed to me (and still does) that it’s pretty much plug-and-play, with sensible default choices and optimized workflow. So from where I stand, it seems that <code>dialyze</code> should be the base, and a few features (e.g. customization of project PLT) should be merged from <code>dialyxir</code>.</p>
</blockquote>
</aside>
<p>Both projects are under apache 2.0 so nothing stops anyone doing this. I think it is best for the users of both if we get behind one library in the long run and <a class="mention" href="/u/jeremyjh" rel="nofollow">@jeremyjh</a> wants to do the work so I think we should let him <img src="https://forum.elixirforum.com/images/emoji/apple/smile.png?v=15" title=":smile:" class="emoji" alt=":smile:" loading="lazy" width="20" height="20"> and get behind <code>dialyxir</code>. I do not want to do this work.</p>
<aside class="quote no-group" data-username="sasajuric" data-post="26" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/48/991_2.png" class="avatar"> sasajuric:</div>
<blockquote>
<p>But TBH, I took only a brief glance at  <code>dialyxir</code> , so I’d like to learn what’s in <code>dialyxir</code> that’s missing from <code>dialyze</code>?</p>
</blockquote>
</aside>
<p>I wrote a long reply above to explain the differences and help <a class="mention" href="/u/jeremyjh" rel="nofollow">@jeremyjh</a> to move forward, and I got some differences wrong <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"> so I’ll let someone else answer that.</p>
<aside class="quote no-group" data-username="sasajuric" data-post="26" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/48/991_2.png" class="avatar"> sasajuric:</div>
<blockquote>
<p>And what was the answer? <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>I don’t think they saw it as an issue because <code>phoenix</code> will start <code>plug</code>. However if <code>transitive</code> mode is enabled on <code>dialyxir</code> then <code>plug</code> will be added anyway, and hopefully this will become the default in the next version.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6651" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/dialyxir-recent-updates-and-request-for-feedback/1003/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-6651" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6651"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #26"></div>
  </section>
</div>
    <div class="postbit" id="6688" data-post-id="6688">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jeremyjh" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeremyjh/120/5995_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jeremyjh
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Dialyxir permits configuration of many different things, and while its defaults are not good it can be made to work acceptably well for almost any project due to this. I think ability to have mix file configuration of warnings (both disabling default and enabling the extended checks) is a  good idea; this should be captured somewhere in your projects configuration management, and not left to command line parameters unless those parameters are managed in some higher-level script.</p>
<p>It has other configuration which is maybe more dubious - for example it will let you configure the location of the PLT file; this is needed in <code>dialyxir</code> because its default is stupid. But even for <code>dialyze</code> which has a really smart way to handle this, there was a long open request in its issue tracker to support configuration of this. It even lets you specify the path to the beam files to analyze…does anyone use it? I don’t know if they do now- a few people did between the time mix began using the _build directory and when <code>dialyxir</code> was updated for that. Maybe someone, somewhere will want it.</p>
<p>Being able to configure the plt apps is handy - right now <code>dialyze</code> isn’t pulling transitive dependencies due to a memory problem it caused in some projects. Probably if I add that code back someone will have the same problem in <code>dialyxir</code> and they’ll be able to solve it in configuration by specifying only direct project dependencies plus adding specific transitives that they know they need. <code>dialyxir</code> supports this right now and because of it, its reasonably easy to dialyze a Phoenix project. Its just not defaulting the best way presently.</p>
<p>So my thinking now is we need something to be smart like <code>dialyzer</code> and configurable like <code>dialyxir</code>.</p>
<p>Right now this is the list of changes I’m pretty sure I need. Most of these things are pretty easy, I don’t see it taking quite a long time.</p>
<h1><a name="p-6688-dependencies-1" class="anchor" href="#p-6688-dependencies-1" aria-label="Heading link" rel="nofollow"></a>Dependencies</h1>
<ul>
<li>Include OTP applications from current mix &amp; dependency .app files</li>
<li>Transitive by default</li>
<li>Include prod dependencies only by default?</li>
</ul>
<h1><a name="p-6688-plt-2" class="anchor" href="#p-6688-plt-2" aria-label="Heading link" rel="nofollow"></a>PLT</h1>
<ul>
<li><code>dialyze</code> style PLT file management, e.g. erlang/elixir core file copied into _build, app dependencies added only to this project local file</li>
<li><code>dialyze</code> style plt update functionality (add/remove individual modules from dependencies)</li>
<li>warn users of :plt_file about new file scheme (allow suppression of warning with :no_warn) e.g. plt_file: {:no_warn,“local.plt”}</li>
<li>use mix_home for core storage - config via :plt_core_path</li>
<li>warn users who have the old ~/.dialyxir*.plt files but no new core file about backward incompatibility in the 0.4.0 release</li>
</ul>
<h1><a name="p-6688-warnings-3" class="anchor" href="#p-6688-warnings-3" aria-label="Heading link" rel="nofollow"></a>Warnings</h1>
<ul>
<li>remove all default warnings</li>
<li>needs to be in the compatibility notice</li>
<li>-Wunmatched_returns ?</li>
</ul>
<h1><a name="p-6688-dialyzer-task-4" class="anchor" href="#p-6688-dialyzer-task-4" aria-label="Heading link" rel="nofollow"></a>dialyzer task</h1>
<ul>
<li>invoke plt task if plt file is not found</li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6688" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/dialyxir-recent-updates-and-request-for-feedback/1003/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-6688" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6688"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #27"></div>
  </section>
</div>
    <div class="postbit" id="6701" data-post-id="6701">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sasajuric" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/120/991_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sasajuric
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Author of Elixir In Action</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>This sounds great! I’m looking forward to having a single goto dialyzer tool.</p>
<p>A couple of comments and questions:</p>
<aside class="quote no-group" data-username="jeremyjh" data-post="28" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeremyjh/48/5995_2.png" class="avatar"> jeremyjh:</div>
<blockquote>
<p>Transitive by default</p>
</blockquote>
</aside>
<p>I guess that’s fine, but there should be an opt-out for cases where a lot of memory is consumed, or if it takes long to build PLT.</p>
<aside class="quote no-group" data-username="jeremyjh" data-post="28" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeremyjh/48/5995_2.png" class="avatar"> jeremyjh:</div>
<blockquote>
<p>warn users of :plt_file about new file scheme</p>
</blockquote>
</aside>
<p>I’m not sure what does this refer to?</p>
<aside class="quote no-group" data-username="jeremyjh" data-post="28" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeremyjh/48/5995_2.png" class="avatar"> jeremyjh:</div>
<blockquote>
<p>remove all default warnings</p>
</blockquote>
</aside>
<p>By this, I suppose you mean not including by default <code>unmatched_returns</code>, <code>error_handling</code>, <code>race_conditions</code>, <code>underspecs</code> which would have to be explicitly included, right? If yes, then I agree. I think these options should be opt-in.</p>
<aside class="quote no-group" data-username="jeremyjh" data-post="28" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeremyjh/48/5995_2.png" class="avatar"> jeremyjh:</div>
<blockquote>
<p>invoke plt task if plt file is not found</p>
</blockquote>
</aside>
<p>In fact, I think a PLT check should be done always. If PLT exists, it should be checked and updated if needed.  In other words, running <code>mix dialyzer</code> should just work and produce a correct output regardless of the PLT state (not existing, outdated, or most recent).</p>
<p>Some switch for skipping PLT check could be useful to reduce the dialyzing time if the user is positive PLT is up to date.</p>
<p>Finally, I think it would be nice if <code>dialyxir</code> used <code>dialyzer</code> Erlang API instead of command line. That would probably bring little to end users, but it might give a bit more flexibility to <code>dialyxir</code>, for example for formatting output.</p>
<p>Thank you for doing this, and let me know if I can help somehow.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6701" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/dialyxir-recent-updates-and-request-for-feedback/1003/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-6701" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6701"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #28"></div>
  </section>
</div>
    <div class="postbit" id="6731" data-post-id="6731">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jeremyjh" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeremyjh/120/5995_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jeremyjh
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="sasajuric" data-post="29" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/48/991_2.png" class="avatar"> sasajuric:</div>
<blockquote>
<p>I guess that’s fine, but there should be an opt-out for cases where a lot of memory is consumed, or if it takes long to build PLT.</p>
</blockquote>
</aside>
<p>Yes you would be able to opt out of transitive dependencies and even including any dependencies as you can do today, only the default would change.</p>
<aside class="quote no-group" data-username="sasajuric" data-post="29" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/48/991_2.png" class="avatar"> sasajuric:</div>
<blockquote>
<p>warn users of :plt_file about new file scheme</p>
<p>I’m not sure what does this refer to?</p>
</blockquote>
</aside>
<p>The plt_file keyword lets you specify a plt file/path to use. Because the most common reason to do this is to opt-out of the global files, I think I should print a notice that they no longer have to use this feature for that reason. They can opt-out of the warning still.</p>
<aside class="quote no-group" data-username="sasajuric" data-post="29" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/48/991_2.png" class="avatar"> sasajuric:</div>
<blockquote>
<p>remove all default warnings</p>
<p>By this, I suppose you mean not including by default unmatched_returns, error_handling, race_conditions, underspecs which would have to be explicitly included, right? If yes, then I agree. I think these options should be opt-in.</p>
</blockquote>
</aside>
<p>I’m conflicted on unmatched_returns as I think its a really valuable warning, but yes they would all go. I’ll include unmatched_returns as the example in the documentation.</p>
<aside class="quote no-group" data-username="sasajuric" data-post="29" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/48/991_2.png" class="avatar"> sasajuric:</div>
<blockquote>
<p>invoke plt task if plt file is not found</p>
<p>In fact, I think a PLT check should be done always. If PLT exists, it should be checked and updated if needed.  In other words, running mix dialyzer should just work and produce a correct output regardless of the PLT state (not existing, outdated, or most recent).</p>
<p>Some switch for skipping PLT check could be useful to reduce the dialyzing time if the user is positive PLT is up to date.</p>
</blockquote>
</aside>
<p>I was thinking to make it opt-in but you are right, it should be opt-out. The guiding principal here should be to prioritize returning correct, complete results by default, and let them optimize runtime with settings if they wish. I’ll keep a separate dialyzer.plt task so that if they do opt-out they can manually run it themselves.</p>
<aside class="quote no-group" data-username="sasajuric" data-post="29" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/48/991_2.png" class="avatar"> sasajuric:</div>
<blockquote>
<p>Finally, I think it would be nice if dialyxir used dialyzer Erlang API instead of command line. That would probably bring little to end users, but it might give a bit more flexibility to dialyxir, for example for formatting output.</p>
</blockquote>
</aside>
<p>Definitely I will for the PLT - I’m going to use quite a lot of <code>dialyze</code> code wholesale.</p>
<p>For the dialyzer task I am conflicted because right now I offer two mechanisms (config in mix or command-line arg) to pass arbitrary arguments to dialyzer. The examples of usage I give are to tweak warnings, but people could also use it for things i don’t anticipate such as using --raw and -o to send parseable output to a file. Also it is handy that you can copy paste the dialyzer command and tweak it instead of rerunning the task - at least I use that in debugging. I’m open to changing this at some point but probably prefer to keep it as is for 0.4.</p>
<aside class="quote no-group" data-username="sasajuric" data-post="29" data-topic="1003">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/48/991_2.png" class="avatar"> sasajuric:</div>
<blockquote>
<p>Thank you for doing this, and let me know if I can help somehow.</p>
</blockquote>
</aside>
<p>I’ll get a development branch pushed and things organized in the issue tracker so at least the larger items could be claimed by someone if you or anyone else wants to help, I’ll post an update.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6731" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/dialyxir-recent-updates-and-request-for-feedback/1003/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-6731" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6731"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #29"></div>
  </section>
</div>
    <div class="postbit" id="6809" data-post-id="6809">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jeremyjh" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeremyjh/120/5995_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jeremyjh
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve started the implementation, so far I have integrated the <code>dialyze</code> code for managing and updating the PLT, which seems to be working ok. This is in the <code>develop</code> branch. To contribute or follow progress, please subscribe to this <a href="https://github.com/jeremyjh/dialyxir/issues/50" rel="noopener nofollow ugc">master issue</a>.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6809" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/dialyxir-recent-updates-and-request-for-feedback/1003/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-6809" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6809"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #30"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/1003/load_more?page=4">Load more posts (13 remaining)</a>
</div></template></turbo-stream>