Repository files navigation

🧠 code-function-watcher

A powerful CLI tool for Go developers to scan, detect, and prevent duplicated or unused functions in your codebase.
Designed for code quality automation, especially useful in team collaboration, code review, and CI/CD pipelines.


✨ Features

  • βœ… Detect all exported functions in a directory
  • πŸ” Compare old and new snapshots to find duplicated or similar functions
  • 🧹 Detect unused functions that are defined but never called
  • 🚫 Ignore list support to skip known functions or third-party calls
  • πŸ€– GitHub CI/CD & PR auto-comment support

πŸ“¦ Installation

1. Clone the Repo

git clone https://github.com/ak4bento/code-function-watcher.git
cd code-function-watcher

2. Install Dependencies

go mod tidy

πŸš€ Usage

πŸ” Scan Functions

go run main.go scan <path> [-o output.json]

Example:

go run main.go scan ./ -o data/functions.json

This will scan all Go files recursively and extract exported function names + locations.


πŸ” Compare Function Snapshots

go run main.go compare <old.json><new.json>

Example:

go run main.go compare data/functions-old.json data/functions-new.json

It will print potentially duplicated or very similar functions with similarity percentage (e.g., 94.5%).


🧹 Detect Unused Functions

go run main.go unused <path> --defined <functions.json> [--ignore ignore.txt]

Example:

go run main.go unused ./ --defined data/functions.json --ignore ignore.txt

Lists exported functions that were never called anywhere in your project.


🚫 Ignore List

Use a plain text file (e.g. ignore.txt) to exclude functions from being detected as "unused":

log.Println
fmt.Errorf
main

πŸ§ͺ GitHub Actions (CI/CD)

Create a file .github/workflows/scan.yml:

name: Code Function Watcheron:
pull_request:
paths:
- '**/*.go'jobs:
scan:
runs-on: ubuntu-lateststeps:
- name: Checkout Codeuses: actions/checkout@v3
- name: Setup Gouses: actions/setup-go@v4with:
go-version: 1.21
- name: Install Dependenciesrun: go mod tidy
- name: Run Function Comparisonrun: | go run main.go scan ./ -o data/functions-new.json go run main.go compare data/functions-old.json data/functions-new.json > result.txt - name: Upload Resultsuses: actions/upload-artifact@v3with:
name: compare-resultpath: result.txt

πŸ’¬ Auto-Comment to Pull Request (Bonus)

Install peter-evans/create-or-update-comment

Extend your workflow:

 - name: Post PR Commentuses: peter-evans/create-or-update-comment@v3with:
issue-number: ${{ github.event.pull_request.number }}body: | πŸ” **Function Comparison Report** ``` $(cat result.txt) ```

πŸ“ Project Structure

.
β”œβ”€β”€ cmd/
β”‚ β”œβ”€β”€ compare.go
β”‚ β”œβ”€β”€ scan.go
β”‚ └── unused.go
β”œβ”€β”€ pkg/
β”‚ β”œβ”€β”€ compare/
β”‚ β”œβ”€β”€ exporter/
β”‚ β”œβ”€β”€ scanner/
β”‚ └── unused/
β”œβ”€β”€ data/
β”‚ └── functions-old.json
β”‚ └── functions-new.json
β”œβ”€β”€ ignore.txt
└── main.go

πŸ§‘β€πŸ’» Author

Made with ❀️ by @ak4bento

About

πŸ•΅οΈβ€β™‚οΈ code-function-watcher is a CLI tool built in Go that helps development teams prevent redundant function creation by scanning, comparing, and identifying unused or duplicate functions in a project. Perfect for collaborative teams and codebase cleanup.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

🧠 code-function-watcher

A powerful CLI tool for Go developers to scan, detect, and prevent duplicated or unused functions in your codebase.
Designed for code quality automation, especially useful in team collaboration, code review, and CI/CD pipelines.


✨ Features

  • βœ… Detect all exported functions in a directory
  • πŸ” Compare old and new snapshots to find duplicated or similar functions
  • 🧹 Detect unused functions that are defined but never called
  • 🚫 Ignore list support to skip known functions or third-party calls
  • πŸ€– GitHub CI/CD & PR auto-comment support

πŸ“¦ Installation

1. Clone the Repo

git clone https://github.com/ak4bento/code-function-watcher.git
cd code-function-watcher

2. Install Dependencies

go mod tidy

πŸš€ Usage

πŸ” Scan Functions

go run main.go scan <path> [-o output.json]

Example:

go run main.go scan ./ -o data/functions.json

This will scan all Go files recursively and extract exported function names + locations.


πŸ” Compare Function Snapshots

go run main.go compare <old.json><new.json>

Example:

go run main.go compare data/functions-old.json data/functions-new.json

It will print potentially duplicated or very similar functions with similarity percentage (e.g., 94.5%).


🧹 Detect Unused Functions

go run main.go unused <path> --defined <functions.json> [--ignore ignore.txt]

Example:

go run main.go unused ./ --defined data/functions.json --ignore ignore.txt

Lists exported functions that were never called anywhere in your project.


🚫 Ignore List

Use a plain text file (e.g. ignore.txt) to exclude functions from being detected as "unused":

log.Println
fmt.Errorf
main

πŸ§ͺ GitHub Actions (CI/CD)

Create a file .github/workflows/scan.yml:

name: Code Function Watcheron:
pull_request:
paths:
- '**/*.go'jobs:
scan:
runs-on: ubuntu-lateststeps:
- name: Checkout Codeuses: actions/checkout@v3
- name: Setup Gouses: actions/setup-go@v4with:
go-version: 1.21
- name: Install Dependenciesrun: go mod tidy
- name: Run Function Comparisonrun: | go run main.go scan ./ -o data/functions-new.json go run main.go compare data/functions-old.json data/functions-new.json > result.txt - name: Upload Resultsuses: actions/upload-artifact@v3with:
name: compare-resultpath: result.txt

πŸ’¬ Auto-Comment to Pull Request (Bonus)

Install peter-evans/create-or-update-comment

Extend your workflow:

 - name: Post PR Commentuses: peter-evans/create-or-update-comment@v3with:
issue-number: ${{ github.event.pull_request.number }}body: | πŸ” **Function Comparison Report** ``` $(cat result.txt) ```

πŸ“ Project Structure

.
β”œβ”€β”€ cmd/
β”‚ β”œβ”€β”€ compare.go
β”‚ β”œβ”€β”€ scan.go
β”‚ └── unused.go
β”œβ”€β”€ pkg/
β”‚ β”œβ”€β”€ compare/
β”‚ β”œβ”€β”€ exporter/
β”‚ β”œβ”€β”€ scanner/
β”‚ └── unused/
β”œβ”€β”€ data/
β”‚ └── functions-old.json
β”‚ └── functions-new.json
β”œβ”€β”€ ignore.txt
└── main.go

πŸ§‘β€πŸ’» Author

Made with ❀️ by @ak4bento

About

πŸ•΅οΈβ€β™‚οΈ code-function-watcher is a CLI tool built in Go that helps development teams prevent redundant function creation by scanning, comparing, and identifying unused or duplicate functions in a project. Perfect for collaborative teams and codebase cleanup.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

🧠 code-function-watcher

A powerful CLI tool for Go developers to scan, detect, and prevent duplicated or unused functions in your codebase.
Designed for code quality automation, especially useful in team collaboration, code review, and CI/CD pipelines.


✨ Features

  • βœ… Detect all exported functions in a directory
  • πŸ” Compare old and new snapshots to find duplicated or similar functions
  • 🧹 Detect unused functions that are defined but never called
  • 🚫 Ignore list support to skip known functions or third-party calls
  • πŸ€– GitHub CI/CD & PR auto-comment support

πŸ“¦ Installation

1. Clone the Repo

git clone https://github.com/ak4bento/code-function-watcher.git
cd code-function-watcher

2. Install Dependencies

go mod tidy

πŸš€ Usage

πŸ” Scan Functions

go run main.go scan <path> [-o output.json]

Example:

go run main.go scan ./ -o data/functions.json

This will scan all Go files recursively and extract exported function names + locations.


πŸ” Compare Function Snapshots

go run main.go compare <old.json><new.json>

Example:

go run main.go compare data/functions-old.json data/functions-new.json

It will print potentially duplicated or very similar functions with similarity percentage (e.g., 94.5%).


🧹 Detect Unused Functions

go run main.go unused <path> --defined <functions.json> [--ignore ignore.txt]

Example:

go run main.go unused ./ --defined data/functions.json --ignore ignore.txt

Lists exported functions that were never called anywhere in your project.


🚫 Ignore List

Use a plain text file (e.g. ignore.txt) to exclude functions from being detected as "unused":

log.Println
fmt.Errorf
main

πŸ§ͺ GitHub Actions (CI/CD)

Create a file .github/workflows/scan.yml:

name: Code Function Watcheron:
pull_request:
paths:
- '**/*.go'jobs:
scan:
runs-on: ubuntu-lateststeps:
- name: Checkout Codeuses: actions/checkout@v3
- name: Setup Gouses: actions/setup-go@v4with:
go-version: 1.21
- name: Install Dependenciesrun: go mod tidy
- name: Run Function Comparisonrun: | go run main.go scan ./ -o data/functions-new.json go run main.go compare data/functions-old.json data/functions-new.json > result.txt - name: Upload Resultsuses: actions/upload-artifact@v3with:
name: compare-resultpath: result.txt

πŸ’¬ Auto-Comment to Pull Request (Bonus)

Install peter-evans/create-or-update-comment

Extend your workflow:

 - name: Post PR Commentuses: peter-evans/create-or-update-comment@v3with:
issue-number: ${{ github.event.pull_request.number }}body: | πŸ” **Function Comparison Report** ``` $(cat result.txt) ```

πŸ“ Project Structure

.
β”œβ”€β”€ cmd/
β”‚ β”œβ”€β”€ compare.go
β”‚ β”œβ”€β”€ scan.go
β”‚ └── unused.go
β”œβ”€β”€ pkg/
β”‚ β”œβ”€β”€ compare/
β”‚ β”œβ”€β”€ exporter/
β”‚ β”œβ”€β”€ scanner/
β”‚ └── unused/
β”œβ”€β”€ data/
β”‚ └── functions-old.json
β”‚ └── functions-new.json
β”œβ”€β”€ ignore.txt
└── main.go

πŸ§‘β€πŸ’» Author

Made with ❀️ by @ak4bento

About

πŸ•΅οΈβ€β™‚οΈ code-function-watcher is a CLI tool built in Go that helps development teams prevent redundant function creation by scanning, comparing, and identifying unused or duplicate functions in a project. Perfect for collaborative teams and codebase cleanup.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

🧠 code-function-watcher

A powerful CLI tool for Go developers to scan, detect, and prevent duplicated or unused functions in your codebase.
Designed for code quality automation, especially useful in team collaboration, code review, and CI/CD pipelines.


✨ Features

  • βœ… Detect all exported functions in a directory
  • πŸ” Compare old and new snapshots to find duplicated or similar functions
  • 🧹 Detect unused functions that are defined but never called
  • 🚫 Ignore list support to skip known functions or third-party calls
  • πŸ€– GitHub CI/CD & PR auto-comment support

πŸ“¦ Installation

1. Clone the Repo

git clone https://github.com/ak4bento/code-function-watcher.git
cd code-function-watcher

2. Install Dependencies

go mod tidy

πŸš€ Usage

πŸ” Scan Functions

go run main.go scan <path> [-o output.json]

Example:

go run main.go scan ./ -o data/functions.json

This will scan all Go files recursively and extract exported function names + locations.


πŸ” Compare Function Snapshots

go run main.go compare <old.json><new.json>

Example:

go run main.go compare data/functions-old.json data/functions-new.json

It will print potentially duplicated or very similar functions with similarity percentage (e.g., 94.5%).


🧹 Detect Unused Functions

go run main.go unused <path> --defined <functions.json> [--ignore ignore.txt]

Example:

go run main.go unused ./ --defined data/functions.json --ignore ignore.txt

Lists exported functions that were never called anywhere in your project.


🚫 Ignore List

Use a plain text file (e.g. ignore.txt) to exclude functions from being detected as "unused":

log.Println
fmt.Errorf
main

πŸ§ͺ GitHub Actions (CI/CD)

Create a file .github/workflows/scan.yml:

name: Code Function Watcheron:
pull_request:
paths:
- '**/*.go'jobs:
scan:
runs-on: ubuntu-lateststeps:
- name: Checkout Codeuses: actions/checkout@v3
- name: Setup Gouses: actions/setup-go@v4with:
go-version: 1.21
- name: Install Dependenciesrun: go mod tidy
- name: Run Function Comparisonrun: | go run main.go scan ./ -o data/functions-new.json go run main.go compare data/functions-old.json data/functions-new.json > result.txt - name: Upload Resultsuses: actions/upload-artifact@v3with:
name: compare-resultpath: result.txt

πŸ’¬ Auto-Comment to Pull Request (Bonus)

Install peter-evans/create-or-update-comment

Extend your workflow:

 - name: Post PR Commentuses: peter-evans/create-or-update-comment@v3with:
issue-number: ${{ github.event.pull_request.number }}body: | πŸ” **Function Comparison Report** ``` $(cat result.txt) ```

πŸ“ Project Structure

.
β”œβ”€β”€ cmd/
β”‚ β”œβ”€β”€ compare.go
β”‚ β”œβ”€β”€ scan.go
β”‚ └── unused.go
β”œβ”€β”€ pkg/
β”‚ β”œβ”€β”€ compare/
β”‚ β”œβ”€β”€ exporter/
β”‚ β”œβ”€β”€ scanner/
β”‚ └── unused/
β”œβ”€β”€ data/
β”‚ └── functions-old.json
β”‚ └── functions-new.json
β”œβ”€β”€ ignore.txt
└── main.go

πŸ§‘β€πŸ’» Author

Made with ❀️ by @ak4bento

About

πŸ•΅οΈβ€β™‚οΈ code-function-watcher is a CLI tool built in Go that helps development teams prevent redundant function creation by scanning, comparing, and identifying unused or duplicate functions in a project. Perfect for collaborative teams and codebase cleanup.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

🧠 code-function-watcher

A powerful CLI tool for Go developers to scan, detect, and prevent duplicated or unused functions in your codebase.
Designed for code quality automation, especially useful in team collaboration, code review, and CI/CD pipelines.


✨ Features

  • βœ… Detect all exported functions in a directory
  • πŸ” Compare old and new snapshots to find duplicated or similar functions
  • 🧹 Detect unused functions that are defined but never called
  • 🚫 Ignore list support to skip known functions or third-party calls
  • πŸ€– GitHub CI/CD & PR auto-comment support

πŸ“¦ Installation

1. Clone the Repo

git clone https://github.com/ak4bento/code-function-watcher.git
cd code-function-watcher

2. Install Dependencies

go mod tidy

πŸš€ Usage

πŸ” Scan Functions

go run main.go scan <path> [-o output.json]

Example:

go run main.go scan ./ -o data/functions.json

This will scan all Go files recursively and extract exported function names + locations.


πŸ” Compare Function Snapshots

go run main.go compare <old.json><new.json>

Example:

go run main.go compare data/functions-old.json data/functions-new.json

It will print potentially duplicated or very similar functions with similarity percentage (e.g., 94.5%).


🧹 Detect Unused Functions

go run main.go unused <path> --defined <functions.json> [--ignore ignore.txt]

Example:

go run main.go unused ./ --defined data/functions.json --ignore ignore.txt

Lists exported functions that were never called anywhere in your project.


🚫 Ignore List

Use a plain text file (e.g. ignore.txt) to exclude functions from being detected as "unused":

log.Println
fmt.Errorf
main

πŸ§ͺ GitHub Actions (CI/CD)

Create a file .github/workflows/scan.yml:

name: Code Function Watcheron:
pull_request:
paths:
- '**/*.go'jobs:
scan:
runs-on: ubuntu-lateststeps:
- name: Checkout Codeuses: actions/checkout@v3
- name: Setup Gouses: actions/setup-go@v4with:
go-version: 1.21
- name: Install Dependenciesrun: go mod tidy
- name: Run Function Comparisonrun: | go run main.go scan ./ -o data/functions-new.json go run main.go compare data/functions-old.json data/functions-new.json > result.txt - name: Upload Resultsuses: actions/upload-artifact@v3with:
name: compare-resultpath: result.txt

πŸ’¬ Auto-Comment to Pull Request (Bonus)

Install peter-evans/create-or-update-comment

Extend your workflow:

 - name: Post PR Commentuses: peter-evans/create-or-update-comment@v3with:
issue-number: ${{ github.event.pull_request.number }}body: | πŸ” **Function Comparison Report** ``` $(cat result.txt) ```

πŸ“ Project Structure

.
β”œβ”€β”€ cmd/
β”‚ β”œβ”€β”€ compare.go
β”‚ β”œβ”€β”€ scan.go
β”‚ └── unused.go
β”œβ”€β”€ pkg/
β”‚ β”œβ”€β”€ compare/
β”‚ β”œβ”€β”€ exporter/
β”‚ β”œβ”€β”€ scanner/
β”‚ └── unused/
β”œβ”€β”€ data/
β”‚ └── functions-old.json
β”‚ └── functions-new.json
β”œβ”€β”€ ignore.txt
└── main.go

πŸ§‘β€πŸ’» Author

Made with ❀️ by @ak4bento

About

πŸ•΅οΈβ€β™‚οΈ code-function-watcher is a CLI tool built in Go that helps development teams prevent redundant function creation by scanning, comparing, and identifying unused or duplicate functions in a project. Perfect for collaborative teams and codebase cleanup.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

🧠 code-function-watcher

A powerful CLI tool for Go developers to scan, detect, and prevent duplicated or unused functions in your codebase.
Designed for code quality automation, especially useful in team collaboration, code review, and CI/CD pipelines.


✨ Features

  • βœ… Detect all exported functions in a directory
  • πŸ” Compare old and new snapshots to find duplicated or similar functions
  • 🧹 Detect unused functions that are defined but never called
  • 🚫 Ignore list support to skip known functions or third-party calls
  • πŸ€– GitHub CI/CD & PR auto-comment support

πŸ“¦ Installation

1. Clone the Repo

git clone https://github.com/ak4bento/code-function-watcher.git
cd code-function-watcher

2. Install Dependencies

go mod tidy

πŸš€ Usage

πŸ” Scan Functions

go run main.go scan <path> [-o output.json]

Example:

go run main.go scan ./ -o data/functions.json

This will scan all Go files recursively and extract exported function names + locations.


πŸ” Compare Function Snapshots

go run main.go compare <old.json><new.json>

Example:

go run main.go compare data/functions-old.json data/functions-new.json

It will print potentially duplicated or very similar functions with similarity percentage (e.g., 94.5%).


🧹 Detect Unused Functions

go run main.go unused <path> --defined <functions.json> [--ignore ignore.txt]

Example:

go run main.go unused ./ --defined data/functions.json --ignore ignore.txt

Lists exported functions that were never called anywhere in your project.


🚫 Ignore List

Use a plain text file (e.g. ignore.txt) to exclude functions from being detected as "unused":

log.Println
fmt.Errorf
main

πŸ§ͺ GitHub Actions (CI/CD)

Create a file .github/workflows/scan.yml:

name: Code Function Watcheron:
pull_request:
paths:
- '**/*.go'jobs:
scan:
runs-on: ubuntu-lateststeps:
- name: Checkout Codeuses: actions/checkout@v3
- name: Setup Gouses: actions/setup-go@v4with:
go-version: 1.21
- name: Install Dependenciesrun: go mod tidy
- name: Run Function Comparisonrun: | go run main.go scan ./ -o data/functions-new.json go run main.go compare data/functions-old.json data/functions-new.json > result.txt - name: Upload Resultsuses: actions/upload-artifact@v3with:
name: compare-resultpath: result.txt

πŸ’¬ Auto-Comment to Pull Request (Bonus)

Install peter-evans/create-or-update-comment

Extend your workflow:

 - name: Post PR Commentuses: peter-evans/create-or-update-comment@v3with:
issue-number: ${{ github.event.pull_request.number }}body: | πŸ” **Function Comparison Report** ``` $(cat result.txt) ```

πŸ“ Project Structure

.
β”œβ”€β”€ cmd/
β”‚ β”œβ”€β”€ compare.go
β”‚ β”œβ”€β”€ scan.go
β”‚ └── unused.go
β”œβ”€β”€ pkg/
β”‚ β”œβ”€β”€ compare/
β”‚ β”œβ”€β”€ exporter/
β”‚ β”œβ”€β”€ scanner/
β”‚ └── unused/
β”œβ”€β”€ data/
β”‚ └── functions-old.json
β”‚ └── functions-new.json
β”œβ”€β”€ ignore.txt
└── main.go

πŸ§‘β€πŸ’» Author

Made with ❀️ by @ak4bento

About

πŸ•΅οΈβ€β™‚οΈ code-function-watcher is a CLI tool built in Go that helps development teams prevent redundant function creation by scanning, comparing, and identifying unused or duplicate functions in a project. Perfect for collaborative teams and codebase cleanup.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

🧠 code-function-watcher

A powerful CLI tool for Go developers to scan, detect, and prevent duplicated or unused functions in your codebase.
Designed for code quality automation, especially useful in team collaboration, code review, and CI/CD pipelines.


✨ Features

  • βœ… Detect all exported functions in a directory
  • πŸ” Compare old and new snapshots to find duplicated or similar functions
  • 🧹 Detect unused functions that are defined but never called
  • 🚫 Ignore list support to skip known functions or third-party calls
  • πŸ€– GitHub CI/CD & PR auto-comment support

πŸ“¦ Installation

1. Clone the Repo

git clone https://github.com/ak4bento/code-function-watcher.git
cd code-function-watcher

2. Install Dependencies

go mod tidy

πŸš€ Usage

πŸ” Scan Functions

go run main.go scan <path> [-o output.json]

Example:

go run main.go scan ./ -o data/functions.json

This will scan all Go files recursively and extract exported function names + locations.


πŸ” Compare Function Snapshots

go run main.go compare <old.json><new.json>

Example:

go run main.go compare data/functions-old.json data/functions-new.json

It will print potentially duplicated or very similar functions with similarity percentage (e.g., 94.5%).


🧹 Detect Unused Functions

go run main.go unused <path> --defined <functions.json> [--ignore ignore.txt]

Example:

go run main.go unused ./ --defined data/functions.json --ignore ignore.txt

Lists exported functions that were never called anywhere in your project.


🚫 Ignore List

Use a plain text file (e.g. ignore.txt) to exclude functions from being detected as "unused":

log.Println
fmt.Errorf
main

πŸ§ͺ GitHub Actions (CI/CD)

Create a file .github/workflows/scan.yml:

name: Code Function Watcheron:
pull_request:
paths:
- '**/*.go'jobs:
scan:
runs-on: ubuntu-lateststeps:
- name: Checkout Codeuses: actions/checkout@v3
- name: Setup Gouses: actions/setup-go@v4with:
go-version: 1.21
- name: Install Dependenciesrun: go mod tidy
- name: Run Function Comparisonrun: | go run main.go scan ./ -o data/functions-new.json go run main.go compare data/functions-old.json data/functions-new.json > result.txt - name: Upload Resultsuses: actions/upload-artifact@v3with:
name: compare-resultpath: result.txt

πŸ’¬ Auto-Comment to Pull Request (Bonus)

Install peter-evans/create-or-update-comment

Extend your workflow:

 - name: Post PR Commentuses: peter-evans/create-or-update-comment@v3with:
issue-number: ${{ github.event.pull_request.number }}body: | πŸ” **Function Comparison Report** ``` $(cat result.txt) ```

πŸ“ Project Structure

.
β”œβ”€β”€ cmd/
β”‚ β”œβ”€β”€ compare.go
β”‚ β”œβ”€β”€ scan.go
β”‚ └── unused.go
β”œβ”€β”€ pkg/
β”‚ β”œβ”€β”€ compare/
β”‚ β”œβ”€β”€ exporter/
β”‚ β”œβ”€β”€ scanner/
β”‚ └── unused/
β”œβ”€β”€ data/
β”‚ └── functions-old.json
β”‚ └── functions-new.json
β”œβ”€β”€ ignore.txt
└── main.go

πŸ§‘β€πŸ’» Author

Made with ❀️ by @ak4bento

About

πŸ•΅οΈβ€β™‚οΈ code-function-watcher is a CLI tool built in Go that helps development teams prevent redundant function creation by scanning, comparing, and identifying unused or duplicate functions in a project. Perfect for collaborative teams and codebase cleanup.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

🧠 code-function-watcher

A powerful CLI tool for Go developers to scan, detect, and prevent duplicated or unused functions in your codebase.
Designed for code quality automation, especially useful in team collaboration, code review, and CI/CD pipelines.


✨ Features

  • βœ… Detect all exported functions in a directory
  • πŸ” Compare old and new snapshots to find duplicated or similar functions
  • 🧹 Detect unused functions that are defined but never called
  • 🚫 Ignore list support to skip known functions or third-party calls
  • πŸ€– GitHub CI/CD & PR auto-comment support

πŸ“¦ Installation

1. Clone the Repo

git clone https://github.com/ak4bento/code-function-watcher.git
cd code-function-watcher

2. Install Dependencies

go mod tidy

πŸš€ Usage

πŸ” Scan Functions

go run main.go scan <path> [-o output.json]

Example:

go run main.go scan ./ -o data/functions.json

This will scan all Go files recursively and extract exported function names + locations.


πŸ” Compare Function Snapshots

go run main.go compare <old.json><new.json>

Example:

go run main.go compare data/functions-old.json data/functions-new.json

It will print potentially duplicated or very similar functions with similarity percentage (e.g., 94.5%).


🧹 Detect Unused Functions

go run main.go unused <path> --defined <functions.json> [--ignore ignore.txt]

Example:

go run main.go unused ./ --defined data/functions.json --ignore ignore.txt

Lists exported functions that were never called anywhere in your project.


🚫 Ignore List

Use a plain text file (e.g. ignore.txt) to exclude functions from being detected as "unused":

log.Println
fmt.Errorf
main

πŸ§ͺ GitHub Actions (CI/CD)

Create a file .github/workflows/scan.yml:

name: Code Function Watcheron:
pull_request:
paths:
- '**/*.go'jobs:
scan:
runs-on: ubuntu-lateststeps:
- name: Checkout Codeuses: actions/checkout@v3
- name: Setup Gouses: actions/setup-go@v4with:
go-version: 1.21
- name: Install Dependenciesrun: go mod tidy
- name: Run Function Comparisonrun: | go run main.go scan ./ -o data/functions-new.json go run main.go compare data/functions-old.json data/functions-new.json > result.txt - name: Upload Resultsuses: actions/upload-artifact@v3with:
name: compare-resultpath: result.txt

πŸ’¬ Auto-Comment to Pull Request (Bonus)

Install peter-evans/create-or-update-comment

Extend your workflow:

 - name: Post PR Commentuses: peter-evans/create-or-update-comment@v3with:
issue-number: ${{ github.event.pull_request.number }}body: | πŸ” **Function Comparison Report** ``` $(cat result.txt) ```

πŸ“ Project Structure

.
β”œβ”€β”€ cmd/
β”‚ β”œβ”€β”€ compare.go
β”‚ β”œβ”€β”€ scan.go
β”‚ └── unused.go
β”œβ”€β”€ pkg/
β”‚ β”œβ”€β”€ compare/
β”‚ β”œβ”€β”€ exporter/
β”‚ β”œβ”€β”€ scanner/
β”‚ └── unused/
β”œβ”€β”€ data/
β”‚ └── functions-old.json
β”‚ └── functions-new.json
β”œβ”€β”€ ignore.txt
└── main.go

πŸ§‘β€πŸ’» Author

Made with ❀️ by @ak4bento

About

πŸ•΅οΈβ€β™‚οΈ code-function-watcher is a CLI tool built in Go that helps development teams prevent redundant function creation by scanning, comparing, and identifying unused or duplicate functions in a project. Perfect for collaborative teams and codebase cleanup.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages