<?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: leo108</title>
    <description>The latest articles on DEV Community by leo108 (@leo108).</description>
    <link>https://dev.to/leo108</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%2F2597573%2F8d2cba57-9f0b-4d28-ae14-13a1b7826aaa.jpeg</url>
      <title>DEV Community: leo108</title>
      <link>https://dev.to/leo108</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leo108"/>
    <language>en</language>
    <item>
      <title>TODO Reminder CLI: Never Miss a Code Comment Deadline Again</title>
      <dc:creator>leo108</dc:creator>
      <pubDate>Tue, 18 Feb 2025 13:17:14 +0000</pubDate>
      <link>https://dev.to/leo108/todo-reminder-cli-never-miss-a-code-comment-deadline-again-1c7a</link>
      <guid>https://dev.to/leo108/todo-reminder-cli-never-miss-a-code-comment-deadline-again-1c7a</guid>
      <description>&lt;p&gt;🚀 Introducing TODO Reminder - Your new codebase watchdog!&lt;/p&gt;

&lt;p&gt;Are you tired of forgotten TODOs quietly lurking in your code? This handy CLI tool helps you:&lt;/p&gt;

&lt;p&gt;✅ Tracks &lt;strong&gt;due dates&lt;/strong&gt; in TODO comments&lt;br&gt;
✅ Identifies &lt;strong&gt;improperly&lt;/strong&gt; formatted TODOs&lt;br&gt;
✅ Supports &lt;strong&gt;12+&lt;/strong&gt; popular languages (Rust, JS, Python, etc)&lt;br&gt;
✅ Generates &lt;strong&gt;clickable links&lt;/strong&gt; in table reports&lt;br&gt;
✅ Provides &lt;strong&gt;JSON output&lt;/strong&gt; for easier automation (think Slack or PR integrations)&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick Example Output
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Clickable Table Report
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;╭──────┬─────────┬────────────┬───────┬──────────────────────────────────────────────────────────────────────────╮
│ Line ┆ Type    ┆ Due Date   ┆ Owner ┆ src/demo.rs                                                              │
╞══════╪═════════╪════════════╪═══════╪══════════════════════════════════════════════════════════════════════════╡
│ 1    ┆ Overdue ┆ 2023-12-31 ┆ alice ┆ // TODO: 2023-12-31 @alice Refactor this function to improve performance │
├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ 2    ┆ Format  ┆            ┆       ┆ // TODO not a valid format                                               │
╰──────┴─────────┴────────────┴───────┴──────────────────────────────────────────────────────────────────────────╯
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Integration Friendly JSON Output
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"comment"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"// TODO: 2023-12-31 @alice Refactor this function to improve performance"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"due_date"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2023-12-31"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"file"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"src/demo.rs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"line"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"owner"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"alice"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Overdue"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"comment"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"// TODO not a valid format"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"file"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"src/demo.rs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"line"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"InvalidFormat"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Try It in 1 Minute
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Create a minimal &lt;code&gt;config.toml&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[parameters]&lt;/span&gt;
&lt;span class="py"&gt;editor_url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"vscode://file/%%file%%:%%line%%"&lt;/span&gt;  &lt;span class="c"&gt;# Clickable links for VSCode&lt;/span&gt;

&lt;span class="nn"&gt;[[rules]]&lt;/span&gt;
&lt;span class="c"&gt;# Directory to scan, relative to the configuration file&lt;/span&gt;
&lt;span class="py"&gt;path&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"src"&lt;/span&gt;
&lt;span class="py"&gt;language&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"rust"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Run with Docker:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;:/workdir leo108/todo-reminder config.toml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why I Built This
&lt;/h3&gt;

&lt;p&gt;I love leaving TODO notes in the code (especially when I’m short on time), but it’s easy to forget them. With TODO Reminder, you can quickly run a scan before releases or during CI checks to ensure no important tasks slip through. It’s also great for teams, because each TODO is assigned an owner and a due date, and the tool makes it visible when tasks are overdue.&lt;/p&gt;

&lt;p&gt;GitHub: ⭐&lt;a href="https://github.com/leo108/todo-reminder" rel="noopener noreferrer"&gt;leo108/todo-reminder&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’d love to hear your thoughts! What features would make this tool indispensable for your workflow?&lt;/p&gt;

</description>
      <category>programming</category>
      <category>cli</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
