RepoTrust

phacility/xhprof

XHProf is a function-level hierarchical profiler for PHP and has a simple HTML based user interface.

https://github.com/phacility/xhprof · commit 0bbf2a2ac34f · scored 2026-11-13 · scoring prov-4+qual-2+sec-2

RepoTrust ai badge RepoTrust quality badge RepoTrust security badge

Dispute this score or request a re-score Full report JSON

Scores

Pillar Score Signal Confidence Coverage
AI provenance (estimated AI-generated share) 0 none-detected 56% 100%
Code quality 62 weak 90% 100%
Security 73 adequate 85% 100%

AI provenance

No AI attribution or AI-consistent velocity signals detected.

Month Lines added Attributed to AI
2011-07 20 0%
2011-12 4 0%
2012-02 44 0%
2012-11 1 0%
2013-01 51 0%
2013-03 6 0%
2013-04 4 0%
2013-07 1 0%
2013-10 4 0%
2014-04 2 0%
2014-08 122 0%
2015-02 18 0%

AI provenance describes how code was produced; it is not a quality judgment. Unless attribution is explicit, these are signals consistent with AI generation, not proof. Squash/rebase workflows, imported code, and rewritten history reduce accuracy.

Code quality

Code quality is weak: test-to-source ratio 0.01, no CI test run detected; 24% of function code in complex or long functions; 4% duplicated lines. Weakest area: testing.

Area Score
Complexity (lizard) 49
Duplication 79
Code smells (Opengrep) 100
Tests and CI 39
Documentation 65
Type safety n/a
Process (Scorecard review/maintenance) n/a

Most complex functions:

Security

Security posture is adequate: 1 high-severity SAST findings. Weakest area: posture.

Area Score
Secrets (gitleaks, tree + history) 100
Static analysis (Opengrep) 76
Vulnerable dependencies (OSV) n/a
CI workflows (zizmor) n/a
Posture (policy, updates, signing, lockfiles) 0
OpenSSF Scorecard n/a

Top findings

Severity Finding Location
high opengrep/php.lang.security.exec-use: Executing non-constant commands. This can lead to command injection. [confidence low] xhprof_lib/utils/callgraph_utils.php:112
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector: User controlled data in a $(...) is an anti-pattern that can lead to XSS vulnerabilities [confidence low] xhprof_html/jquery/jquery.autocomplete.js:69
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector: User controlled data in a $(...) is an anti-pattern that can lead to XSS vulnerabilities [confidence low] xhprof_html/jquery/jquery.autocomplete.js:84
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector: User controlled data in a $(...) is an anti-pattern that can lead to XSS vulnerabilities [confidence low] xhprof_html/jquery/jquery.autocomplete.js:197
medium opengrep/javascript.lang.security.audit.detect-non-literal-regexp: RegExp() called with a term function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled [confidence low] xhprof_html/jquery/jquery.autocomplete.js:409
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector: User controlled data in a $(...) is an anti-pattern that can lead to XSS vulnerabilities [confidence low] xhprof_html/jquery/jquery.autocomplete.js:577
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector: User controlled data in a $(...) is an anti-pattern that can lead to XSS vulnerabilities [confidence low] xhprof_html/jquery/jquery.autocomplete.js:580
medium opengrep/javascript.jquery.security.audit.jquery-insecure-method: User controlled data in a jQuery's .html(...) is an anti-pattern that can lead to XSS vulnerabilities [confidence low] xhprof_html/jquery/jquery.autocomplete.js:648
medium opengrep/javascript.jquery.security.audit.prohibit-jquery-html: JQuery's html function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider text instead. Otherwise, use a function that escapes HTML such as edX's HtmlUtils.setHtml(). [confidence low] xhprof_html/jquery/jquery.autocomplete.js:648
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector: User controlled data in a $(...) is an anti-pattern that can lead to XSS vulnerabilities [confidence low] xhprof_html/jquery/jquery.autocomplete.js:700
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector: User controlled data in a $(...) is an anti-pattern that can lead to XSS vulnerabilities [confidence low] xhprof_html/jquery/jquery.autocomplete.js:702
medium opengrep/javascript.jquery.security.audit.prohibit-jquery-html: JQuery's html function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider text instead. Otherwise, use a function that escapes HTML such as edX's HtmlUtils.setHtml(). [confidence low] xhprof_html/jquery/jquery.tooltip.js:87
medium opengrep/javascript.jquery.security.audit.jquery-insecure-method: User controlled data in a jQuery's .appendTo(...) is an anti-pattern that can lead to XSS vulnerabilities [confidence low] xhprof_html/jquery/jquery.tooltip.js:100
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector: User controlled data in a $(...) is an anti-pattern that can lead to XSS vulnerabilities [confidence low] xhprof_html/jquery/jquery.tooltip.js:100
medium opengrep/javascript.jquery.security.audit.prohibit-jquery-html: JQuery's html function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider text instead. Otherwise, use a function that escapes HTML such as edX's HtmlUtils.setHtml(). [confidence low] xhprof_html/jquery/jquery.tooltip.js:152
medium opengrep/javascript.jquery.security.audit.prohibit-jquery-html: JQuery's html function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider text instead. Otherwise, use a function that escapes HTML such as edX's HtmlUtils.setHtml(). [confidence low] xhprof_html/jquery/jquery.tooltip.js:157
medium opengrep/javascript.jquery.security.audit.prohibit-jquery-html: JQuery's html function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider text instead. Otherwise, use a function that escapes HTML such as edX's HtmlUtils.setHtml(). [confidence low] xhprof_html/jquery/jquery.tooltip.js:166
medium opengrep/javascript.jquery.security.audit.prohibit-jquery-html: JQuery's html function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider text instead. Otherwise, use a function that escapes HTML such as edX's HtmlUtils.setHtml(). [confidence low] xhprof_html/jquery/jquery.tooltip.js:172
medium opengrep/php.lang.security.unserialize-use: Calling unserialize() with user input in the pattern can lead to arbitrary code execution. Consider using JSON or structured data approaches (e.g. Google Protocol Buffers). [confidence low] xhprof_lib/utils/xhprof_runs.php:121

Static signals only: the scorer never runs the project's code. Secret findings are pattern matches that were not verified, and secret values are never stored.

Repository profile

Language Lines
PHP 3,540
C 2,097
JavaScript 1,257

Embed a badge

Maintainers can show these in a README. Badges update when the repository is re-scored.

[![RepoTrust ai](https://repotrust.synapticcyber.com/badge/github.com/phacility/xhprof/ai.svg)](https://repotrust.synapticcyber.com/r/github.com/phacility/xhprof/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/github.com/phacility/xhprof/quality.svg)](https://repotrust.synapticcyber.com/r/github.com/phacility/xhprof/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/github.com/phacility/xhprof/security.svg)](https://repotrust.synapticcyber.com/r/github.com/phacility/xhprof/)