<?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: Anubhav Sanyal</title>
    <description>The latest articles on DEV Community by Anubhav Sanyal (@konnichiwa_anubhav).</description>
    <link>https://dev.to/konnichiwa_anubhav</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%2F3043776%2F07dc8478-cb33-441c-b5cb-5139b1f74802.jpg</url>
      <title>DEV Community: Anubhav Sanyal</title>
      <link>https://dev.to/konnichiwa_anubhav</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/konnichiwa_anubhav"/>
    <language>en</language>
    <item>
      <title>No More Screenshots — Share SonarQube Code Reports as PDFs</title>
      <dc:creator>Anubhav Sanyal</dc:creator>
      <pubDate>Sat, 12 Apr 2025 08:46:38 +0000</pubDate>
      <link>https://dev.to/konnichiwa_anubhav/-48pb</link>
      <guid>https://dev.to/konnichiwa_anubhav/-48pb</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/konnichiwa_anubhav/meet-redcoffee-a-python-cli-to-export-sonarqube-analysis-as-shareable-pdf-reports-19em" class="crayons-story__hidden-navigation-link"&gt;Meet RedCoffee : A Python CLI to export SonarQube analysis as shareable PDF Reports&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/konnichiwa_anubhav" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3043776%2F07dc8478-cb33-441c-b5cb-5139b1f74802.jpg" alt="konnichiwa_anubhav profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/konnichiwa_anubhav" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Anubhav Sanyal
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Anubhav Sanyal
                
              
              &lt;div id="story-author-preview-content-2401699" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/konnichiwa_anubhav" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3043776%2F07dc8478-cb33-441c-b5cb-5139b1f74802.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Anubhav Sanyal&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/konnichiwa_anubhav/meet-redcoffee-a-python-cli-to-export-sonarqube-analysis-as-shareable-pdf-reports-19em" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 12 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/konnichiwa_anubhav/meet-redcoffee-a-python-cli-to-export-sonarqube-analysis-as-shareable-pdf-reports-19em" id="article-link-2401699"&gt;
          Meet RedCoffee : A Python CLI to export SonarQube analysis as shareable PDF Reports
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/python"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;python&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devops"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devops&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/testing"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;testing&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/konnichiwa_anubhav/meet-redcoffee-a-python-cli-to-export-sonarqube-analysis-as-shareable-pdf-reports-19em#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>python</category>
      <category>devops</category>
      <category>opensource</category>
      <category>testing</category>
    </item>
    <item>
      <title>Meet RedCoffee : A Python CLI to export SonarQube analysis as shareable PDF Reports</title>
      <dc:creator>Anubhav Sanyal</dc:creator>
      <pubDate>Sat, 12 Apr 2025 08:09:36 +0000</pubDate>
      <link>https://dev.to/konnichiwa_anubhav/meet-redcoffee-a-python-cli-to-export-sonarqube-analysis-as-shareable-pdf-reports-19em</link>
      <guid>https://dev.to/konnichiwa_anubhav/meet-redcoffee-a-python-cli-to-export-sonarqube-analysis-as-shareable-pdf-reports-19em</guid>
      <description>&lt;p&gt;Like many developers, I’ve worked extensively with SonarQube to track code quality, technical debt, code duplication, and security issues. Now, let’s be honest — SonarQube may not be the best tool out there for all use cases, but it continues to be the default choice for most organizations, especially in larger setups. Even early-stage startups I’ve worked with tend to integrate SonarQube pretty early in their pipelines. Tools like Snyk are gaining traction too, but I haven’t had the chance to work with it personally yet.&lt;/p&gt;

&lt;p&gt;One of the big advantages of SonarQube is that it’s open source — that’s a huge win, especially for smaller teams and startups. Most folks I know (myself included) tend to stick with the Community Edition, and while it covers the basics well, it suffers from one major drawback: there’s no easy way to share the analysis reports.&lt;/p&gt;

&lt;p&gt;Everyone has to log into the dashboard just to view results. That might sound manageable, but in practice — especially when you're using SonarQube via Docker (as most devs and early-stage startups do) — it becomes a hassle. And if you’re working in a tightly controlled environment like a bank (where I currently am), it gets even messier. Even something as simple as sharing a report with someone outside your immediate team turns into a process — screenshots, explanations, and still, it rarely tells the full story.&lt;/p&gt;

&lt;p&gt;And friends, that is why I exactly built RedCoffee.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;My Motivation behind building RedCoffee&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the summer of 2023, I was working on a personal project with a few friends. It wasn’t meant to be a startup or anything commercially big — we were building it purely to learn, experiment, and have fun. But even then, we wanted it to be something people would look at and say, “Hey, this is really well written.”&lt;/p&gt;

&lt;p&gt;That’s when we decided to bring in SonarQube to keep our code quality in check. Since we were bootstrapping everything and funds were tight, we went with the Community Edition, running it locally via Docker — probably the most common setup for devs in our shoes.&lt;/p&gt;

&lt;p&gt;And sure enough, we hit the exact problems I mentioned earlier — no easy way to share reports, limited visibility, and a clunky experience for anyone outside the team. That’s what motivated me to build RedCoffee.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Well, then what exactly is RedCoffee?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you’ve been following along so far, I hope the picture is clear. And if you’ve just jumped into this section — here’s the TL;DR:&lt;/p&gt;

&lt;p&gt;RedCoffee is a Python-based CLI tool that generates clean, shareable PDF reports from SonarQube Community Edition.&lt;/p&gt;

&lt;p&gt;No fancy setup. No manual exports.&lt;br&gt;
Just run a single command — and boom, your PDF report is ready to share with your teammates, tech leads, or anyone who needs visibility into your code quality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Nice, is there a Pre-Requisite for it ?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before you jump in, there are just two simple things you'll need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Completed Code Analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Make sure the project has already been scanned and analyzed on SonarQube. RedCoffee fetches data from an existing analysis — it doesn’t trigger the scan itself.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SonarQube Token (User Token)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’ll need access to a valid SonarQube user token — typically the one that starts with &lt;code&gt;squ_&lt;/code&gt;. This is used to authenticate and fetch the analysis data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;How to install RedCoffee ?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;RedCoffee is available to be installed via PyPi. If you already have Python up and running on your system, you can just go and type in the below command&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip install redcoffee&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;This will download RedCoffee ( and it's dependencies ) and make it available to be used in your local setup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Awesome, but how to use RedCoffee?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As mentioned earlier, RedCoffee is a command-line tool. This means it exposes a set of simple commands that you can run directly from your terminal to generate PDF reports from your SonarQube analysis.&lt;/p&gt;

&lt;p&gt;Pasting the sample command for your reference below&lt;/p&gt;

&lt;p&gt;&lt;code&gt;redcoffee generatepdf --host=http://localhost:9000 --project=my_project --path=./sonar-report.pdf --token=abcdef1234567890&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Below is the brief explaination of the available flags&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Flag&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Required?&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--host&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;The URL of your SonarQube server.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--project&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;The project key in SonarQube for which the PDF report should be generated.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--path&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;File path where the generated PDF report will be saved. As of now, you will be needed to explicitly mention the name of the file as well. So, it can be something like &lt;code&gt;Desktop/SonarQubeReport.pdf&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--token&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Your SonarQube authentication token with API access permissions. Please note that this should begin with 'squ'. No other tokens are currently supported.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Facol0xjfg0jy79p8ux4b.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Facol0xjfg0jy79p8ux4b.gif" alt="RedCoffee GIF" width="1024" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Is there an extensive documentation that can be referred?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes, I have already made the documentation available via Github Pages. Please feel free to refer the same &lt;a href="https://anubhav9.github.io/RedCoffee/" rel="noopener noreferrer"&gt; RedCoffee Documentation on Github Pages &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Do you have a sample of the generated report?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've generated one report and uploaded it to S3 so that it is accessible for everyone. Here's the link for the same - &lt;a href="https://report-bucket-redcoffee.s3.ap-northeast-1.amazonaws.com/graphcountries.pdf" rel="noopener noreferrer"&gt;RedCoffee Sample Report uploaded on S3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Is RedCoffee open-source?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes, RedCoffee is completely open source and available for anyone to use, modify, or contribute to. It’s licensed under the MIT License, which means you can use it freely in personal and commercial projects without restrictions.&lt;/p&gt;

&lt;p&gt;The source code is available on GitHub: &lt;a href="https://github.com/Anubhav9/RedCoffee" rel="noopener noreferrer"&gt;RedCoffee on Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also explore &lt;a href="https://pypi.org/project/redcoffee/" rel="noopener noreferrer"&gt;RedCoffee on PyPi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to explore, star the repo, or raise an issue if you have feedback or suggestions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Support the Project on Github&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If RedCoffee helped you or solved a pain point you’ve faced with SonarQube, I’d really appreciate it if you could star the repository on GitHub. It’s a small gesture that goes a long way in supporting open source work and helps others discover the project too.&lt;/p&gt;

&lt;p&gt;You can find the repo here: &lt;a href="https://github.com/Anubhav9/RedCoffee" rel="noopener noreferrer"&gt;RedCoffee on Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading — and as always, feedback is welcome!&lt;/p&gt;

</description>
      <category>python</category>
      <category>devops</category>
      <category>opensource</category>
      <category>testing</category>
    </item>
  </channel>
</rss>
