Repository files navigation

Php Blame Code Coverage (PhpBCC)

Build StatusCoverage StatusLatest Stable VersionLicense

A tool that consumes a code coverage report and uses the version control history to report metrics on uncovered code by author.

What is this and how can I benefit?

  • Testing Advocate - Encourages developers to NOT introduce uncovered code
  • Coverage Bar Setter - Implicitly increases the overall code coverage over development time once introduced since developers are encouraged to not introduce uncovered code.
  • Visibility - Provides visibility to authors. Once run, the author is alerted if some of their code is not fully covered.
  • Accountability - Assigns uncovered code to authors to fix. Tasks/user stories/tickets are always assigned to someone to someone in part for visibility and also to make sure it gets done. This is the point of contact.
  • Boy Scout Rule - Authors are encouraged and have full sight of code that can be cleaned up. Leave the code cleaner than you found it.

What this is NOT?

  • Performance Metric Indicator - This assigns developers to be accountable for their's and others' code but cannot be used to show their performance. Typically, performance metrics assess both positive and negative attributes; this only reports on code that needs to be covered. Use the codebase's code coverage improvement to report on the team's quality rather than the individual.
  • 100% Accurate
    1. Edited or removed test cases may show an author that introduced uncovered lines or methods, which is not necessarily true.
    2. Merge conflict resolutions
    3. Git history is editable
    4. There's likely more..
  • Blame Bus - Keep that blameless mentality, just assign tasks so they get done at some point and help your team want to grow.

Installation -

Global installation:

composer global require phpbcc/phpbcc

Local/project installation:

composer require-dev phpbcc/phpbcc

or manually add it to the require-dev section of your composer file.

{
"require-dev" : {
"phpbcc/phpbcc": "*"
}
}

Usage

> phpbcc --output-format=author reports/clover.xml

Sample Output

phpbcc version 1.0.0 by Chris Halbert
PHP BLAME CODE COVERAGE UNCOVERED OBJECTS (#/total) %
Chris Halbert (8/8) 100%
FileNotFoundException.php:15, 16, 17, 18 (4/8) 50%
AbstractInput.php:39, 76, 78 (3/8) 37.5%
AuthorOutput.php:157 (1/8) 12.5%

Rollout

  1. Ask your manager/lead if it can be tested.
  2. Check your code coverage.
  3. Add it to your build process.
  4. Check code coverage after your 'testing period.'
  5. If it works, keep, if not, trash. Regardless, let me know what you think.

Feature Requests/Bugs

Submit feature requests or bugs at PhpBCC Issues.

Some ideas on new features: SVN/CVS/Mercurial support, a report other than Clover, different output type.

Contributing

  1. Build off of the interfaces established
  2. Ensure code coverage!
  3. Make sure the build passes
  4. Submit to PhpBCC Pull Requests

Feedback

Let me know the successes or hardships you may experience.

About

A tool that consumes a code coverage report and uses the version control history to report metrics on uncovered code by author.

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

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

Php Blame Code Coverage (PhpBCC)

Build StatusCoverage StatusLatest Stable VersionLicense

A tool that consumes a code coverage report and uses the version control history to report metrics on uncovered code by author.

What is this and how can I benefit?

  • Testing Advocate - Encourages developers to NOT introduce uncovered code
  • Coverage Bar Setter - Implicitly increases the overall code coverage over development time once introduced since developers are encouraged to not introduce uncovered code.
  • Visibility - Provides visibility to authors. Once run, the author is alerted if some of their code is not fully covered.
  • Accountability - Assigns uncovered code to authors to fix. Tasks/user stories/tickets are always assigned to someone to someone in part for visibility and also to make sure it gets done. This is the point of contact.
  • Boy Scout Rule - Authors are encouraged and have full sight of code that can be cleaned up. Leave the code cleaner than you found it.

What this is NOT?

  • Performance Metric Indicator - This assigns developers to be accountable for their's and others' code but cannot be used to show their performance. Typically, performance metrics assess both positive and negative attributes; this only reports on code that needs to be covered. Use the codebase's code coverage improvement to report on the team's quality rather than the individual.
  • 100% Accurate
    1. Edited or removed test cases may show an author that introduced uncovered lines or methods, which is not necessarily true.
    2. Merge conflict resolutions
    3. Git history is editable
    4. There's likely more..
  • Blame Bus - Keep that blameless mentality, just assign tasks so they get done at some point and help your team want to grow.

Installation -

Global installation:

composer global require phpbcc/phpbcc

Local/project installation:

composer require-dev phpbcc/phpbcc

or manually add it to the require-dev section of your composer file.

{
"require-dev" : {
"phpbcc/phpbcc": "*"
}
}

Usage

> phpbcc --output-format=author reports/clover.xml

Sample Output

phpbcc version 1.0.0 by Chris Halbert
PHP BLAME CODE COVERAGE UNCOVERED OBJECTS (#/total) %
Chris Halbert (8/8) 100%
FileNotFoundException.php:15, 16, 17, 18 (4/8) 50%
AbstractInput.php:39, 76, 78 (3/8) 37.5%
AuthorOutput.php:157 (1/8) 12.5%

Rollout

  1. Ask your manager/lead if it can be tested.
  2. Check your code coverage.
  3. Add it to your build process.
  4. Check code coverage after your 'testing period.'
  5. If it works, keep, if not, trash. Regardless, let me know what you think.

Feature Requests/Bugs

Submit feature requests or bugs at PhpBCC Issues.

Some ideas on new features: SVN/CVS/Mercurial support, a report other than Clover, different output type.

Contributing

  1. Build off of the interfaces established
  2. Ensure code coverage!
  3. Make sure the build passes
  4. Submit to PhpBCC Pull Requests

Feedback

Let me know the successes or hardships you may experience.

About

A tool that consumes a code coverage report and uses the version control history to report metrics on uncovered code by author.

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

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

Php Blame Code Coverage (PhpBCC)

Build StatusCoverage StatusLatest Stable VersionLicense

A tool that consumes a code coverage report and uses the version control history to report metrics on uncovered code by author.

What is this and how can I benefit?

  • Testing Advocate - Encourages developers to NOT introduce uncovered code
  • Coverage Bar Setter - Implicitly increases the overall code coverage over development time once introduced since developers are encouraged to not introduce uncovered code.
  • Visibility - Provides visibility to authors. Once run, the author is alerted if some of their code is not fully covered.
  • Accountability - Assigns uncovered code to authors to fix. Tasks/user stories/tickets are always assigned to someone to someone in part for visibility and also to make sure it gets done. This is the point of contact.
  • Boy Scout Rule - Authors are encouraged and have full sight of code that can be cleaned up. Leave the code cleaner than you found it.

What this is NOT?

  • Performance Metric Indicator - This assigns developers to be accountable for their's and others' code but cannot be used to show their performance. Typically, performance metrics assess both positive and negative attributes; this only reports on code that needs to be covered. Use the codebase's code coverage improvement to report on the team's quality rather than the individual.
  • 100% Accurate
    1. Edited or removed test cases may show an author that introduced uncovered lines or methods, which is not necessarily true.
    2. Merge conflict resolutions
    3. Git history is editable
    4. There's likely more..
  • Blame Bus - Keep that blameless mentality, just assign tasks so they get done at some point and help your team want to grow.

Installation -

Global installation:

composer global require phpbcc/phpbcc

Local/project installation:

composer require-dev phpbcc/phpbcc

or manually add it to the require-dev section of your composer file.

{
"require-dev" : {
"phpbcc/phpbcc": "*"
}
}

Usage

> phpbcc --output-format=author reports/clover.xml

Sample Output

phpbcc version 1.0.0 by Chris Halbert
PHP BLAME CODE COVERAGE UNCOVERED OBJECTS (#/total) %
Chris Halbert (8/8) 100%
FileNotFoundException.php:15, 16, 17, 18 (4/8) 50%
AbstractInput.php:39, 76, 78 (3/8) 37.5%
AuthorOutput.php:157 (1/8) 12.5%

Rollout

  1. Ask your manager/lead if it can be tested.
  2. Check your code coverage.
  3. Add it to your build process.
  4. Check code coverage after your 'testing period.'
  5. If it works, keep, if not, trash. Regardless, let me know what you think.

Feature Requests/Bugs

Submit feature requests or bugs at PhpBCC Issues.

Some ideas on new features: SVN/CVS/Mercurial support, a report other than Clover, different output type.

Contributing

  1. Build off of the interfaces established
  2. Ensure code coverage!
  3. Make sure the build passes
  4. Submit to PhpBCC Pull Requests

Feedback

Let me know the successes or hardships you may experience.

About

A tool that consumes a code coverage report and uses the version control history to report metrics on uncovered code by author.

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

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

Php Blame Code Coverage (PhpBCC)

Build StatusCoverage StatusLatest Stable VersionLicense

A tool that consumes a code coverage report and uses the version control history to report metrics on uncovered code by author.

What is this and how can I benefit?

  • Testing Advocate - Encourages developers to NOT introduce uncovered code
  • Coverage Bar Setter - Implicitly increases the overall code coverage over development time once introduced since developers are encouraged to not introduce uncovered code.
  • Visibility - Provides visibility to authors. Once run, the author is alerted if some of their code is not fully covered.
  • Accountability - Assigns uncovered code to authors to fix. Tasks/user stories/tickets are always assigned to someone to someone in part for visibility and also to make sure it gets done. This is the point of contact.
  • Boy Scout Rule - Authors are encouraged and have full sight of code that can be cleaned up. Leave the code cleaner than you found it.

What this is NOT?

  • Performance Metric Indicator - This assigns developers to be accountable for their's and others' code but cannot be used to show their performance. Typically, performance metrics assess both positive and negative attributes; this only reports on code that needs to be covered. Use the codebase's code coverage improvement to report on the team's quality rather than the individual.
  • 100% Accurate
    1. Edited or removed test cases may show an author that introduced uncovered lines or methods, which is not necessarily true.
    2. Merge conflict resolutions
    3. Git history is editable
    4. There's likely more..
  • Blame Bus - Keep that blameless mentality, just assign tasks so they get done at some point and help your team want to grow.

Installation -

Global installation:

composer global require phpbcc/phpbcc

Local/project installation:

composer require-dev phpbcc/phpbcc

or manually add it to the require-dev section of your composer file.

{
"require-dev" : {
"phpbcc/phpbcc": "*"
}
}

Usage

> phpbcc --output-format=author reports/clover.xml

Sample Output

phpbcc version 1.0.0 by Chris Halbert
PHP BLAME CODE COVERAGE UNCOVERED OBJECTS (#/total) %
Chris Halbert (8/8) 100%
FileNotFoundException.php:15, 16, 17, 18 (4/8) 50%
AbstractInput.php:39, 76, 78 (3/8) 37.5%
AuthorOutput.php:157 (1/8) 12.5%

Rollout

  1. Ask your manager/lead if it can be tested.
  2. Check your code coverage.
  3. Add it to your build process.
  4. Check code coverage after your 'testing period.'
  5. If it works, keep, if not, trash. Regardless, let me know what you think.

Feature Requests/Bugs

Submit feature requests or bugs at PhpBCC Issues.

Some ideas on new features: SVN/CVS/Mercurial support, a report other than Clover, different output type.

Contributing

  1. Build off of the interfaces established
  2. Ensure code coverage!
  3. Make sure the build passes
  4. Submit to PhpBCC Pull Requests

Feedback

Let me know the successes or hardships you may experience.

About

A tool that consumes a code coverage report and uses the version control history to report metrics on uncovered code by author.

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

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

Php Blame Code Coverage (PhpBCC)

Build StatusCoverage StatusLatest Stable VersionLicense

A tool that consumes a code coverage report and uses the version control history to report metrics on uncovered code by author.

What is this and how can I benefit?

  • Testing Advocate - Encourages developers to NOT introduce uncovered code
  • Coverage Bar Setter - Implicitly increases the overall code coverage over development time once introduced since developers are encouraged to not introduce uncovered code.
  • Visibility - Provides visibility to authors. Once run, the author is alerted if some of their code is not fully covered.
  • Accountability - Assigns uncovered code to authors to fix. Tasks/user stories/tickets are always assigned to someone to someone in part for visibility and also to make sure it gets done. This is the point of contact.
  • Boy Scout Rule - Authors are encouraged and have full sight of code that can be cleaned up. Leave the code cleaner than you found it.

What this is NOT?

  • Performance Metric Indicator - This assigns developers to be accountable for their's and others' code but cannot be used to show their performance. Typically, performance metrics assess both positive and negative attributes; this only reports on code that needs to be covered. Use the codebase's code coverage improvement to report on the team's quality rather than the individual.
  • 100% Accurate
    1. Edited or removed test cases may show an author that introduced uncovered lines or methods, which is not necessarily true.
    2. Merge conflict resolutions
    3. Git history is editable
    4. There's likely more..
  • Blame Bus - Keep that blameless mentality, just assign tasks so they get done at some point and help your team want to grow.

Installation -

Global installation:

composer global require phpbcc/phpbcc

Local/project installation:

composer require-dev phpbcc/phpbcc

or manually add it to the require-dev section of your composer file.

{
"require-dev" : {
"phpbcc/phpbcc": "*"
}
}

Usage

> phpbcc --output-format=author reports/clover.xml

Sample Output

phpbcc version 1.0.0 by Chris Halbert
PHP BLAME CODE COVERAGE UNCOVERED OBJECTS (#/total) %
Chris Halbert (8/8) 100%
FileNotFoundException.php:15, 16, 17, 18 (4/8) 50%
AbstractInput.php:39, 76, 78 (3/8) 37.5%
AuthorOutput.php:157 (1/8) 12.5%

Rollout

  1. Ask your manager/lead if it can be tested.
  2. Check your code coverage.
  3. Add it to your build process.
  4. Check code coverage after your 'testing period.'
  5. If it works, keep, if not, trash. Regardless, let me know what you think.

Feature Requests/Bugs

Submit feature requests or bugs at PhpBCC Issues.

Some ideas on new features: SVN/CVS/Mercurial support, a report other than Clover, different output type.

Contributing

  1. Build off of the interfaces established
  2. Ensure code coverage!
  3. Make sure the build passes
  4. Submit to PhpBCC Pull Requests

Feedback

Let me know the successes or hardships you may experience.

About

A tool that consumes a code coverage report and uses the version control history to report metrics on uncovered code by author.

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

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

Php Blame Code Coverage (PhpBCC)

Build StatusCoverage StatusLatest Stable VersionLicense

A tool that consumes a code coverage report and uses the version control history to report metrics on uncovered code by author.

What is this and how can I benefit?

  • Testing Advocate - Encourages developers to NOT introduce uncovered code
  • Coverage Bar Setter - Implicitly increases the overall code coverage over development time once introduced since developers are encouraged to not introduce uncovered code.
  • Visibility - Provides visibility to authors. Once run, the author is alerted if some of their code is not fully covered.
  • Accountability - Assigns uncovered code to authors to fix. Tasks/user stories/tickets are always assigned to someone to someone in part for visibility and also to make sure it gets done. This is the point of contact.
  • Boy Scout Rule - Authors are encouraged and have full sight of code that can be cleaned up. Leave the code cleaner than you found it.

What this is NOT?

  • Performance Metric Indicator - This assigns developers to be accountable for their's and others' code but cannot be used to show their performance. Typically, performance metrics assess both positive and negative attributes; this only reports on code that needs to be covered. Use the codebase's code coverage improvement to report on the team's quality rather than the individual.
  • 100% Accurate
    1. Edited or removed test cases may show an author that introduced uncovered lines or methods, which is not necessarily true.
    2. Merge conflict resolutions
    3. Git history is editable
    4. There's likely more..
  • Blame Bus - Keep that blameless mentality, just assign tasks so they get done at some point and help your team want to grow.

Installation -

Global installation:

composer global require phpbcc/phpbcc

Local/project installation:

composer require-dev phpbcc/phpbcc

or manually add it to the require-dev section of your composer file.

{
"require-dev" : {
"phpbcc/phpbcc": "*"
}
}

Usage

> phpbcc --output-format=author reports/clover.xml

Sample Output

phpbcc version 1.0.0 by Chris Halbert
PHP BLAME CODE COVERAGE UNCOVERED OBJECTS (#/total) %
Chris Halbert (8/8) 100%
FileNotFoundException.php:15, 16, 17, 18 (4/8) 50%
AbstractInput.php:39, 76, 78 (3/8) 37.5%
AuthorOutput.php:157 (1/8) 12.5%

Rollout

  1. Ask your manager/lead if it can be tested.
  2. Check your code coverage.
  3. Add it to your build process.
  4. Check code coverage after your 'testing period.'
  5. If it works, keep, if not, trash. Regardless, let me know what you think.

Feature Requests/Bugs

Submit feature requests or bugs at PhpBCC Issues.

Some ideas on new features: SVN/CVS/Mercurial support, a report other than Clover, different output type.

Contributing

  1. Build off of the interfaces established
  2. Ensure code coverage!
  3. Make sure the build passes
  4. Submit to PhpBCC Pull Requests

Feedback

Let me know the successes or hardships you may experience.

About

A tool that consumes a code coverage report and uses the version control history to report metrics on uncovered code by author.

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

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

Php Blame Code Coverage (PhpBCC)

Build StatusCoverage StatusLatest Stable VersionLicense

A tool that consumes a code coverage report and uses the version control history to report metrics on uncovered code by author.

What is this and how can I benefit?

  • Testing Advocate - Encourages developers to NOT introduce uncovered code
  • Coverage Bar Setter - Implicitly increases the overall code coverage over development time once introduced since developers are encouraged to not introduce uncovered code.
  • Visibility - Provides visibility to authors. Once run, the author is alerted if some of their code is not fully covered.
  • Accountability - Assigns uncovered code to authors to fix. Tasks/user stories/tickets are always assigned to someone to someone in part for visibility and also to make sure it gets done. This is the point of contact.
  • Boy Scout Rule - Authors are encouraged and have full sight of code that can be cleaned up. Leave the code cleaner than you found it.

What this is NOT?

  • Performance Metric Indicator - This assigns developers to be accountable for their's and others' code but cannot be used to show their performance. Typically, performance metrics assess both positive and negative attributes; this only reports on code that needs to be covered. Use the codebase's code coverage improvement to report on the team's quality rather than the individual.
  • 100% Accurate
    1. Edited or removed test cases may show an author that introduced uncovered lines or methods, which is not necessarily true.
    2. Merge conflict resolutions
    3. Git history is editable
    4. There's likely more..
  • Blame Bus - Keep that blameless mentality, just assign tasks so they get done at some point and help your team want to grow.

Installation -

Global installation:

composer global require phpbcc/phpbcc

Local/project installation:

composer require-dev phpbcc/phpbcc

or manually add it to the require-dev section of your composer file.

{
"require-dev" : {
"phpbcc/phpbcc": "*"
}
}

Usage

> phpbcc --output-format=author reports/clover.xml

Sample Output

phpbcc version 1.0.0 by Chris Halbert
PHP BLAME CODE COVERAGE UNCOVERED OBJECTS (#/total) %
Chris Halbert (8/8) 100%
FileNotFoundException.php:15, 16, 17, 18 (4/8) 50%
AbstractInput.php:39, 76, 78 (3/8) 37.5%
AuthorOutput.php:157 (1/8) 12.5%

Rollout

  1. Ask your manager/lead if it can be tested.
  2. Check your code coverage.
  3. Add it to your build process.
  4. Check code coverage after your 'testing period.'
  5. If it works, keep, if not, trash. Regardless, let me know what you think.

Feature Requests/Bugs

Submit feature requests or bugs at PhpBCC Issues.

Some ideas on new features: SVN/CVS/Mercurial support, a report other than Clover, different output type.

Contributing

  1. Build off of the interfaces established
  2. Ensure code coverage!
  3. Make sure the build passes
  4. Submit to PhpBCC Pull Requests

Feedback

Let me know the successes or hardships you may experience.

About

A tool that consumes a code coverage report and uses the version control history to report metrics on uncovered code by author.

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

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

Php Blame Code Coverage (PhpBCC)

Build StatusCoverage StatusLatest Stable VersionLicense

A tool that consumes a code coverage report and uses the version control history to report metrics on uncovered code by author.

What is this and how can I benefit?

  • Testing Advocate - Encourages developers to NOT introduce uncovered code
  • Coverage Bar Setter - Implicitly increases the overall code coverage over development time once introduced since developers are encouraged to not introduce uncovered code.
  • Visibility - Provides visibility to authors. Once run, the author is alerted if some of their code is not fully covered.
  • Accountability - Assigns uncovered code to authors to fix. Tasks/user stories/tickets are always assigned to someone to someone in part for visibility and also to make sure it gets done. This is the point of contact.
  • Boy Scout Rule - Authors are encouraged and have full sight of code that can be cleaned up. Leave the code cleaner than you found it.

What this is NOT?

  • Performance Metric Indicator - This assigns developers to be accountable for their's and others' code but cannot be used to show their performance. Typically, performance metrics assess both positive and negative attributes; this only reports on code that needs to be covered. Use the codebase's code coverage improvement to report on the team's quality rather than the individual.
  • 100% Accurate
    1. Edited or removed test cases may show an author that introduced uncovered lines or methods, which is not necessarily true.
    2. Merge conflict resolutions
    3. Git history is editable
    4. There's likely more..
  • Blame Bus - Keep that blameless mentality, just assign tasks so they get done at some point and help your team want to grow.

Installation -

Global installation:

composer global require phpbcc/phpbcc

Local/project installation:

composer require-dev phpbcc/phpbcc

or manually add it to the require-dev section of your composer file.

{
"require-dev" : {
"phpbcc/phpbcc": "*"
}
}

Usage

> phpbcc --output-format=author reports/clover.xml

Sample Output

phpbcc version 1.0.0 by Chris Halbert
PHP BLAME CODE COVERAGE UNCOVERED OBJECTS (#/total) %
Chris Halbert (8/8) 100%
FileNotFoundException.php:15, 16, 17, 18 (4/8) 50%
AbstractInput.php:39, 76, 78 (3/8) 37.5%
AuthorOutput.php:157 (1/8) 12.5%

Rollout

  1. Ask your manager/lead if it can be tested.
  2. Check your code coverage.
  3. Add it to your build process.
  4. Check code coverage after your 'testing period.'
  5. If it works, keep, if not, trash. Regardless, let me know what you think.

Feature Requests/Bugs

Submit feature requests or bugs at PhpBCC Issues.

Some ideas on new features: SVN/CVS/Mercurial support, a report other than Clover, different output type.

Contributing

  1. Build off of the interfaces established
  2. Ensure code coverage!
  3. Make sure the build passes
  4. Submit to PhpBCC Pull Requests

Feedback

Let me know the successes or hardships you may experience.

About

A tool that consumes a code coverage report and uses the version control history to report metrics on uncovered code by author.

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages