<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jonny Burger</title>
    <description>The latest articles on DEV Community by Jonny Burger (@jnybgr).</description>
    <link>https://dev.to/jnybgr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F6420%2Fjha4RbZb.jpg</url>
      <title>DEV Community: Jonny Burger</title>
      <link>https://dev.to/jnybgr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jnybgr"/>
    <language>en</language>
    <item>
      <title>How to visualize ESLint errors on Github!</title>
      <dc:creator>Jonny Burger</dc:creator>
      <pubDate>Tue, 17 Mar 2020 10:26:59 +0000</pubDate>
      <link>https://dev.to/jnybgr/how-to-visualize-eslint-errors-on-github-3f8p</link>
      <guid>https://dev.to/jnybgr/how-to-visualize-eslint-errors-on-github-3f8p</guid>
      <description>&lt;p&gt;Today I'm going to write about a very underrated technique that allows you to display ESLint errors more visually in Github! We are going to use a &lt;a href="https://github.com/ataylorme/eslint-annotate-action" rel="noopener noreferrer"&gt;Github Action&lt;/a&gt; by &lt;a href="https://github.com/ataylorme" rel="noopener noreferrer"&gt;Andrew Taylor&lt;/a&gt; which can inline-display the ESLint errors on pull requests.&lt;/p&gt;

&lt;p&gt;Let's see how the Action is advertised:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5h3i7hednybtoxyraiao.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5h3i7hednybtoxyraiao.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This feature is possible by leveraging Github Actions "Annotations", a for now pretty underutilized feature of Github Actions! However, Github is pushing this feature a lot, as they have recently changed the UI that appears when you click on an Action run.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F273jdihcrci3jbuauw55.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F273jdihcrci3jbuauw55.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instead of seeing the output of the workflow, I now see an empty page that says "No artifacts, no annotations". At first I was frustrated because I had to make one more click, but if you set up annotations correctly, this new UI is actually pretty nice!&lt;/p&gt;

&lt;p&gt;So let's set up the Github Action.&lt;/p&gt;

&lt;p&gt;In your ESLint command, you have to generate a JSON:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="err"&gt;

&lt;/span&gt;&lt;span class="gd"&gt;- eslint src
&lt;/span&gt;&lt;span class="gi"&gt;+ eslint --output-file eslint_report.json --format json src
&lt;/span&gt;&lt;span class="err"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;and then add this as the last step to your workflow.yml file:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;

    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Annotate Code Linting Results&lt;/span&gt;
      &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ataylorme/eslint-annotate-action@1.0.4&lt;/span&gt;
      &lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always()&lt;/span&gt;
      &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;repo-token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;${{&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;secrets.GITHUB_TOKEN&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;}}'&lt;/span&gt;
        &lt;span class="na"&gt;report-json&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;eslint_report.json'&lt;/span&gt;



&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;That's it, now the ESLint errors will be annotations on your pull requests!&lt;/p&gt;

&lt;p&gt;I have personally tweaked my configuration a bit more.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The original action only adds annotations for pull requests and  but I would personally also like the annotations to appear for normal runs on master branch. It is trivial to fork Github Actions and change them to your liking! Instead of &lt;code&gt;ataylorme/eslint-annotate-action@1.0.4&lt;/code&gt;, you can use &lt;a href="https://github.com/JonnyBurger/eslint-annotate-action" rel="noopener noreferrer"&gt;&lt;code&gt;JonnyBurger/eslint-annotate-action@1.0.8&lt;/code&gt;&lt;/a&gt; if you would like the annotations to always appear.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you add the &lt;code&gt;--output&lt;/code&gt; parameter to the ESLint command, you will not see the errors in the command line and only get a JSON file. So I tweaked the ESLint command that it will only generate a JSON file while in a Github environment:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

eslint &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-z&lt;/span&gt; &lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="nv"&gt;$GITHUB_WORKSPACE&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="se"&gt;\"\"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="nt"&gt;--output-file&lt;/span&gt; eslint_report.json &lt;span class="nt"&gt;--format&lt;/span&gt; json&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt; src


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;And this is how it looks in the end!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8mioxob7yj8pr7sddmn8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8mioxob7yj8pr7sddmn8.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>actions</category>
      <category>eslint</category>
      <category>ci</category>
    </item>
  </channel>
</rss>
