Automate review using PHPStan: adopt shipmonk-rnd/dead-code-detector
>>> [!note] Migrated issue
<!-- Drupal.org comment -->
<!-- Migrated from issue #3589128. -->
Reported by: [wim leers](https://www.drupal.org/user/99777)
Related to !1081
>>>
<h3 id="overview">Overview</h3>
<p><span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/canvas/-/work_items/3589083" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/canvas/-/work_items/3589083</a></span> is deleting dead code. Cool!</p>
<p>But why do this manually if it can be automated?</p>
<h3 id="proposed-resolution">Proposed resolution</h3>
<p>Adopt shipmonk-rnd/dead-code-detector and implement usage providers as necessary.</p>
<p>Overview:</p>
<ul>
<li>Initial adoption, zero config: <a href="https://git.drupalcode.org/project/canvas/-/jobs/9725078#L3780">467</a> problems reported. <strong>But these include many false positives! ⚠️</strong> So we need to provide usage providers (which are AI-generated) to avoid these false positives</li>
<li>Custom usage provider for test properties like <code>$modules</code>: <a href="https://git.drupalcode.org/project/canvas/-/jobs/9725284#L2718">299</a></li>
<li>Custom usage provider for Drupal hooks: <a href="https://git.drupalcode.org/project/canvas/-/jobs/9725638#L2188">226</a></li>
<li>Refine the usage provider for test properties to look at more: <a href="https://git.drupalcode.org/project/canvas/-/jobs/9725713#L2040">206</a></li>
<li>Custom usage provider for Canvas-specific test properties: <a href="https://git.drupalcode.org/project/canvas/-/jobs/9725775">204</a></li>
<li>Custom usage provider for test methods like <code>::setDatabaseDumpFiles</code>: <a href="https://git.drupalcode.org/project/canvas/-/jobs/9725979#L1849">182</a></li>
<li>Custom usage provider for polymorphic overrides: <a href="https://git.drupalcode.org/project/canvas/-/jobs/9726218#L1848">180</a></li>
<li>Custom usage provider for routing (controllers + access checks): <a href="https://git.drupalcode.org/project/canvas/-/jobs/9726881">128</a></li>
<li>… and more</li>
</ul>
<p> ⇒ eventually, no more false positives. So then manually reviewed and fixed them (<code>+9,-226</code> 🪦 <strong>200 dead lines deleted!</strong>):</p>
<ol>
<li><a href="https://git.drupalcode.org/project/canvas/-/merge_requests/1081/diffs?commit_id=b128c72201c5e72389170d9f5346d7a4d7554544">https://git.drupalcode.org/project/canvas/-/merge_requests/1081/diffs?commit_id=b128c72201c5e72389170d9f5346d7a4d7554544</a>
</li><li><a href="https://git.drupalcode.org/project/canvas/-/merge_requests/1081/diffs?commit_id=9e59b93d240004b4c107bbe51c12eac8cc041d7a">https://git.drupalcode.org/project/canvas/-/merge_requests/1081/diffs?commit_id=9e59b93d240004b4c107bbe51c12eac8cc041d7a</a>
</li></ol>
<h3 id="ui-changes">User interface changes</h3>
<p>None.</p>
issue