{"id":340,"date":"2026-10-13T17:01:17","date_gmt":"2026-10-13T17:01:17","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/2013\/05\/17\/sloc-tools-comparison\/"},"modified":"2026-10-13T17:01:18","modified_gmt":"2026-10-13T17:01:18","slug":"sloc-tools-comparison","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/sloc-tools-comparison\/","title":{"rendered":"SLOC Tools Comparison: Original 2013 List, Selection Criteria, and CI Examples"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">SLOC (Source Lines of Code) tools help teams quantify code volume across repositories and languages. This page is for DevOps engineers, tech leads, and engineering managers who want a reliable starting point: the original tool inventory, a practical way to compare options, and simple examples for CI-based reporting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Originally published on 2013-05-17; fully revised and updated.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What SLOC metrics are useful for<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">SLOC is best treated as a <strong>supporting metric<\/strong>, not a standalone productivity score. In DevOps practice, it is commonly used for footprint tracking, trend reporting, and rough planning inputs.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Track codebase growth over time by project or language.<\/li><li>Estimate review, testing, and maintenance scope at a high level.<\/li><li>Support quality dashboards when combined with defect and test metrics.<\/li><\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2013\/05\/sloc-tools-comparison.png\" alt=\"SLOC tools comparison\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">SLOC tool inventory from the original post<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The table below preserves the original list (tool name, licensing label, and URL) and keeps unknown fields explicitly marked.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Tool<\/th><th>Open Source &#8211; Commercial (as listed)<\/th><th>URL<\/th><\/tr><\/thead><tbody><tr><td>CAST<\/td><td>Commercial<\/td><td><a href=\"http:\/\/www.castsoftware.com\">www.castsoftware.com<\/a><\/td><\/tr><tr><td>Sonar<\/td><td>Open Source<\/td><td><a href=\"http:\/\/www.sonarsource.org\">www.sonarsource.org<\/a><\/td><\/tr><tr><td>SLOC<\/td><td>Open Source -&gt; Commercial<\/td><td><a href=\"http:\/\/www.dwheeler.com\/sloccount\/\">http:\/\/www.dwheeler.com\/sloccount\/<\/a><\/td><\/tr><tr><td>RSM<\/td><td>Commercial<\/td><td><a href=\"http:\/\/www.msquaredtechnologies.com\">www.msquaredtechnologies.com<\/a><\/td><\/tr><tr><td>LocMetrics<\/td><td>Commercial<\/td><td><a href=\"http:\/\/www.locmetrics.com\">www.locmetrics.com<\/a><\/td><\/tr><tr><td>EZ-Metrics<\/td><td>Commercial<\/td><td><a href=\"http:\/\/www.jamesheiresconsulting.com\/Products.htm\">http:\/\/www.jamesheiresconsulting.com\/Products.htm<\/a><\/td><\/tr><tr><td>Metrixware<\/td><td>Commercial<\/td><td><a href=\"http:\/\/www.metrixware.com\">www.metrixware.com<\/a><\/td><\/tr><tr><td>Parasoft (Jtest)<\/td><td>Commercial<\/td><td><a href=\"http:\/\/www.parasoft.com\/\">www.parasoft.com\/<\/a><\/td><\/tr><tr><td>Squale<\/td><td>Open Source<\/td><td><a href=\"http:\/\/www.squale.org\/\">www.squale.org\/<\/a><\/td><\/tr><tr><td>KODERS<\/td><td>Commercial<\/td><td><a href=\"http:\/\/www.koders.com\">www.koders.com<\/a><\/td><\/tr><tr><td>PRACTILINE<\/td><td>Not specified in source<\/td><td><a href=\"http:\/\/www.practiline.com\">www.practiline.com<\/a><\/td><\/tr><tr><td>POWERSOFTWARE<\/td><td>Commercial<\/td><td><a href=\"http:\/\/www.powersoftware.com\/\">http:\/\/www.powersoftware.com\/<\/a><\/td><\/tr><tr><td>CLOC<\/td><td>Open Source<\/td><td><a href=\"http:\/\/cloc.sourceforge.net\/\">http:\/\/cloc.sourceforge.net\/<\/a><\/td><\/tr><tr><td>Unified CodeCount (UCC)<\/td><td>Open Source<\/td><td><a href=\"http:\/\/sunset.usc.edu\/research\/CODECOUNT\/\">http:\/\/sunset.usc.edu\/research\/CODECOUNT\/<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">How to compare SLOC tools for real DevOps use<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">When selecting a tool, compare capabilities against your delivery workflow instead of choosing only by price or popularity.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Evaluation area<\/th><th>Why it matters<\/th><th>What to validate<\/th><\/tr><\/thead><tbody><tr><td>Language coverage<\/td><td>Prevents undercounting in polyglot repos<\/td><td>Does it detect all major languages used in your codebase?<\/td><\/tr><tr><td>Generated and vendor code handling<\/td><td>Avoids inflated counts<\/td><td>Can you exclude build output, dependencies, and generated sources?<\/td><\/tr><tr><td>Output formats<\/td><td>Enables automation and dashboards<\/td><td>JSON\/CSV\/text output for CI artifacts and reporting pipelines<\/td><\/tr><tr><td>CI\/CD integration<\/td><td>Makes measurement repeatable<\/td><td>Simple CLI usage in Jenkins, GitHub Actions, GitLab CI, or similar<\/td><\/tr><tr><td>Performance at repository scale<\/td><td>Reduces pipeline overhead<\/td><td>Execution time and stability on large monorepos<\/td><\/tr><tr><td>Licensing and support model<\/td><td>Affects long-term operating cost<\/td><td>Open-source vs commercial fit for your governance needs<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Typical SLOC reporting workflow in CI<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A lightweight SLOC pipeline usually follows this flow:<\/p>\n\n\n\n<pre class=\"mermaid\">\nflowchart TD\n    A[Developer pushes commit] --> B[CI checks out repository]\n    B --> C[Run SLOC tool]\n    C --> D[Store raw report artifact]\n    D --> E[Aggregate totals by language]\n    E --> F{Policy threshold met}\n    F -- No --> G[Fail quality gate]\n    F -- Yes --> H[Publish trend dashboard]\n    H --> I[Use data in planning and reviews]\n    G --> I\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Example commands for open-source SLOC tooling<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The following examples are practical templates for automation. Adjust paths and options to match your repository layout.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Run CLOC locally and save JSON output<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css language-bash\"><span class=\"hljs-selector-tag\">cloc<\/span> <span class=\"hljs-selector-tag\">--by-file<\/span> <span class=\"hljs-selector-tag\">--json<\/span> . &gt; <span class=\"hljs-selector-tag\">cloc-report<\/span><span class=\"hljs-selector-class\">.json<\/span>\n<span class=\"hljs-selector-tag\">cat<\/span> <span class=\"hljs-selector-tag\">cloc-report<\/span><span class=\"hljs-selector-class\">.json<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Run SLOCCount for a source directory<\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs language-bash\">sloccount --duplicates src\/ &gt; sloccount-report.txt<\/code><\/span><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Minimal GitHub Actions job for SLOC artifacts<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"HTTP\" data-shcb-language-slug=\"http\"><span><code class=\"hljs language-http language-yaml\"><span class=\"hljs-attribute\">name<\/span>: sloc-report\n<span class=\"hljs-attribute\">on<\/span>: &#91;push, pull_request]\n\njobs:\n  count:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\/checkout@v4\n      - name: Install cloc\n        run: sudo apt-get update &amp;&amp; sudo apt-get install -y cloc\n      - name: Generate SLOC report\n        run: cloc --json . &gt; cloc-report.json\n      - name: Upload artifact\n        uses: actions\/upload-artifact@v4\n        with:\n          name: cloc-report\n          path: cloc-report.json<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTTP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">http<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Best practices<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Use SLOC as a <strong>trend metric<\/strong>, not a developer performance metric.<\/li><li>Exclude generated, vendored, and third-party code consistently.<\/li><li>Version-control your exclusion rules so reports stay reproducible.<\/li><li>Pair SLOC with quality signals such as defects, test coverage, and change failure rate.<\/li><li>Periodically re-validate tool URLs, ownership, and licensing terms before standardizing.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This revised guide preserves the original SLOC tools list and adds practical DevOps guidance for evaluating and operationalizing code line counting. You will get a clean comparison table, a CI workflow diagram, and ready-to-adapt command examples.<\/p>\n","protected":false},"author":1,"featured_media":3756,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[10],"tags":[1729,1584,1720,1590,1585,492,1730,1731,1591,2321,2322,2323,2327,2325,2326,2324],"class_list":["post-340","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tools-comparison","tag-advantages","tag-better","tag-between","tag-choose","tag-comparison","tag-difference","tag-disadvantages","tag-drawbacks","tag-select","tag-sloc","tag-sloc-tool","tag-sloc-tools-comparison","tag-sloc-tools-comparison-guide","tag-sloc-tools-comparison-sheet","tag-sloc-tools-comparison-table","tag-sloc-tools-differences"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/340","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=340"}],"version-history":[{"count":3,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/340\/revisions"}],"predecessor-version":[{"id":79210,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/340\/revisions\/79210"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/3756"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=340"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=340"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=340"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}