Repository Analysis

AcademySoftwareFoundation/openvdb

OpenVDB - Sparse volume data structure and tools

4.0 Likely human-written View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of AcademySoftwareFoundation/openvdb, a C++ project with 3,359 GitHub stars. SynthScan v2.0 examined 350,507 lines of code across 774 source files, recording 1376 pattern matches distributed across 13 syntactic categories. The overall adjusted score of 4.0 places this repository in the Likely human-written band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

4.0
Adjusted Score
4.0
Raw Score
100%
Time Factor
2026-08-08
Last Push
3.4K
Stars
C++
Language
350.5K
Lines of Code
774
Files
1.4K
Pattern Hits
2026-08-09
Scan Date
0.00
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 0MEDIUM 21LOW 1355

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 1376 distinct pattern matches across 13 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Over-Commented Block1310 hits · 1272 pts
SeverityFileLineSnippetContext
LOWci/download_houdini.py1#!/usr/bin/env python3COMMENT
LOWci/extract_test_examples.sh1#!/usr/bin/env bashCOMMENT
LOWopenvdb_cmd/vdb_view/Font.h1// Copyright Contributors to the OpenVDB ProjectCOMMENT
LOWopenvdb_cmd/vdb_view/RenderModules.h1// Copyright Contributors to the OpenVDB ProjectCOMMENT
LOWopenvdb_cmd/vdb_view/ClipBox.h1// Copyright Contributors to the OpenVDB ProjectCOMMENT
LOWopenvdb_cmd/vdb_tool/README.md161# ... -print's "Variables" section:COMMENT
LOWopenvdb_cmd/vdb_tool/README.md181# Combine if() with multi-statement to compute |x|, set in memory:COMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h1// Copyright Contributors to the OpenVDB ProjectCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h21/// control-flow scopes implementing -for, -each, -files, -if;COMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h41#include <vector>COMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h81/// with its aliases, options, and init/run callbacks.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h721/// counter accessible as "#name", and remembers the iterator pointing to theCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h961 virtual ~IfLoop() {}COMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h1001/// @codeCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h1041 void usage(bool brief) const {for (auto i = std::next(iter);i!=actions.end(); ++i) std::clog << this->usage(*i, brieCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Parser.h1081 ActIterT iter; ///< Iterator pointing to the action being processed.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1// Copyright Contributors to the OpenVDB ProjectCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h21/// - A single infix expression, e.g.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h41/// - **Persistent memory** &mdash; `evalAndRemember()` snapshotsCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h61#include <stdexcept>COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h81/// an arbitrary number of named float variables. Re-entrant andCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h101/// input variable of the same name from that point on, and remainCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h121/// `switch(selector, k1, v1, ..., default)`.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h141 /// compilation result (and clears any registered user-definedCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h161 /// errors include a source pointer with column number.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h181 inline float eval(const float* values) const;COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h201COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h241COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h281 /// @brief Multi-line, human-readable dump of the compiled bytecode.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h341COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h381 /// forms. If @a slotsOut is non-null, the final values of allCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1341 // The call site has just pushed `fd.params.size()` argument values ontoCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1721 // Walk the bytecode with a virtual stack-depth counter so eval() doesn'tCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Util.h1// Copyright Contributors to the OpenVDB ProjectCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Util.h21#ifndef VDB_TOOL_UTIL_HAS_BEEN_INCLUDEDCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Util.h601 for (T tmp, *last = val + n; val < last; ++val) {COMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h1// Copyright Contributors to the OpenVDB ProjectCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h21/// (primarily std::clog, with std::cerr for errors), never toCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h41#include <openvdb/tools/LevelSetFilter.h>COMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h61#include <openvdb/tools/Mask.h> // for tools::interiorMask()COMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h81#endifCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h101COMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h141 ~Tool() {this->endLog();}COMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h281 void meshToLevelSet();COMMENT
LOWopenvdb_cmd/vdb_tool/include/Tool.h361 /// @brief Write the currently parsed action list as a config file.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Geometry.h1// Copyright Contributors to the OpenVDB ProjectCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Geometry.h21////////////////////////////////////////////////////////////////////////////////COMMENT
LOWopenvdb_cmd/vdb_tool/include/Geometry.h41COMMENT
LOWopenvdb_cmd/vdb_tool/include/Geometry.h61#include <pxr/usd/usd/primRange.h>COMMENT
LOWopenvdb_cmd/vdb_tool/include/Geometry.h81#include "pdal/pdal.hpp"COMMENT
LOWopenvdb_cmd/vdb_tool/include/Geometry.h161COMMENT
LOWopenvdb_cmd/vdb_tool/include/Geometry.h181 /// or the mesh contains quads (call triangulateQuads() first).COMMENT
LOWopenvdb_cmd/vdb_tool/include/Geometry.h201 void writePLY(std::ostream &os, bool ascii = false) const;COMMENT
LOWopenvdb_cmd/vdb_tool/include/Geometry.h221 void readPLY(const std::string &fileName);COMMENT
LOWopenvdb_cmd/vdb_tool/include/Geometry.h241 /// positions.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Geometry.h261 /// @throw std::invalid_argument if the file cannot be parsed.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Geometry.h281 OPENVDB_DEPRECATED size_t read(std::istream &is) {return this->readGEO(is);}COMMENT
LOWopenvdb_cmd/vdb_tool/include/Geometry.h321 /// @brief Returns this Geometry's user-assigned name (e.g. for stack display).COMMENT
LOWopenvdb_cmd/vdb_tool/examples/dilate_mesh.txt1vdb_tool 10.8.0COMMENT
LOWopenvdb_cmd/vdb_tool/examples/points_to_mesh.txt1vdb_tool 10.8.0COMMENT
1250 more matches not shown…
Decorative Section Separators10 hits · 36 pts
SeverityFileLineSnippetContext
MEDIUMci/download_houdini.py76#---------------------------------------------------------------------------COMMENT
MEDIUMnanovdb/nanovdb/cmd/CMakeLists.txt22# -----------------------------------------------------------------------------COMMENT
MEDIUMnanovdb/nanovdb/cmd/CMakeLists.txt28# -----------------------------------------------------------------------------COMMENT
MEDIUMnanovdb/nanovdb/cmd/CMakeLists.txt38# -----------------------------------------------------------------------------COMMENT
MEDIUMnanovdb/nanovdb/cmd/CMakeLists.txt44# -----------------------------------------------------------------------------COMMENT
MEDIUMnanovdb/nanovdb/unittest/CMakeLists.txt28# -----------------------------------------------------------------------------COMMENT
MEDIUMnanovdb/nanovdb/unittest/CMakeLists.txt42# -----------------------------------------------------------------------------COMMENT
MEDIUMnanovdb/nanovdb/unittest/CMakeLists.txt48# -----------------------------------------------------------------------------COMMENT
MEDIUMnanovdb/nanovdb/unittest/CMakeLists.txt84# -----------------------------------------------------------------------------COMMENT
MEDIUMnanovdb/nanovdb/examples/CMakeLists.txt84# -----------------------------------------------------------------------COMMENT
Structural Annotation Overuse13 hits · 23 pts
SeverityFileLineSnippetContext
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1359 // Step 1: per-call parameter slots. Use a fresh, uniquified name per callCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1369 // Step 2: store args in reverse (top-of-stack first).COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1488 // Step 1: insert Jump (target patched later) right BEFORE else_start.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1496 // Step 2: insert JumpIfFalse right BEFORE then_start.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1504 // Step 3: set targets.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1386 // Step 3: copy the body's bytecode, rewriting indices.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h110 // Step 1: Indicator fill.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h126 // Step 2: Z-pass -- Hillis-Steele inclusive prefix sum over z.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h147 // Step 3: Y-pass -- accumulate preceding-row popcounts.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h183 // Step 4: Zero-extend bytes to uint16_t in linear index order.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h197 // Step 5: Add cross-word offsets decoded from prefixSum.COMMENT
LOWopenvdb_houdini/openvdb_houdini/AttributeTransferUtil.h525// NOTE: This class has all code in the header and so it cannot have OPENVDB_HOUDINI_API.COMMENT
LOWopenvdb_houdini/openvdb_houdini/AttributeTransferUtil.h712// NOTE: This class has all code in the header and so it cannot have OPENVDB_HOUDINI_API.COMMENT
Verbosity Indicators12 hits · 22 pts
SeverityFileLineSnippetContext
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1359 // Step 1: per-call parameter slots. Use a fresh, uniquified name per callCOMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1369 // Step 2: store args in reverse (top-of-stack first).COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1488 // Step 1: insert Jump (target patched later) right BEFORE else_start.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1496 // Step 2: insert JumpIfFalse right BEFORE then_start.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1504 // Step 3: set targets.COMMENT
LOWopenvdb_cmd/vdb_tool/include/Calculator.h1386 // Step 3: copy the body's bytecode, rewriting indices.COMMENT
LOWnanovdb/nanovdb/NanoVDB.h5929// the following code block uses std and therefore needs to be ignored by CUDA and HIPCOMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h110 // Step 1: Indicator fill.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h126 // Step 2: Z-pass -- Hillis-Steele inclusive prefix sum over z.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h147 // Step 3: Y-pass -- accumulate preceding-row popcounts.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h183 // Step 4: Zero-extend bytes to uint16_t in linear index order.COMMENT
LOWnanovdb/nanovdb/util/MaskPrefixSum.h197 // Step 5: Add cross-word offsets decoded from prefixSum.COMMENT
AI Slop Vocabulary7 hits · 20 pts
SeverityFileLineSnippetContext
MEDIUMopenvdb_cmd/vdb_tool/include/Geometry.h1208 double p[3];// more robust to read ascii coordinates as double than floatCODE
MEDIUMopenvdb_ax/openvdb_ax/test/integration/TestHarness.h295#define AXTESTS_STANDARD_ASSERT_HARNESS(harness) \COMMENT
MEDIUMopenvdb_ax/openvdb_ax/test/backend/util.h207 // - More robust LLJITBuilder defaults: Later versions configure the JITCOMMENT
MEDIUMopenvdb_ax/openvdb_ax/codegen/FunctionTypes.h345/// leverage the AX Value API). Functions can still be generated and calledCOMMENT
MEDIUMopenvdb_ax/openvdb_ax/codegen/Types.h262/// Fundamentally, T1->T2 mapping should be supported byCOMMENT
MEDIUMopenvdb_ax/openvdb_ax/ast/Visitor.h55/// you can utilize the traverse methods if you find that you requireCOMMENT
MEDIUMopenvdb_ax/openvdb_ax/compiler/CompilerOptions.h34 /// results. Fundamentally, LLVM's support for CF IR is far superior and ourCOMMENT
Self-Referential Comments4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMci/download_houdini.sh104 # Create an empty valid shared libCOMMENT
MEDIUMopenvdb/openvdb/python/test/TestOpenVDB.py578 # Create a NumPy array, fill it with the background value,COMMENT
MEDIUMopenvdb/openvdb/python/test/TestOpenVDB.py604 # Create an empty grid.COMMENT
MEDIUMopenvdb/openvdb/python/test/TestOpenVDB.py685 # Create an empty grid, fill it with the background value,COMMENT
Hyper-Verbose Identifiers10 hits · 10 pts
SeverityFileLineSnippetContext
LOWci/download_houdini.py80def get_access_token_and_expiry_time(CODE
LOWci/download_houdini.py113def call_api_with_access_token(CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py524 def test_device_write_grids_multi(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py575 def test_signed_flood_fill_float(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py605 def test_signed_flood_fill_double(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py643 def test_sample_from_points_float(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py704 def test_sample_from_points_double(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py808 def test_create_float_nano_grid(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py826 def test_create_double_nano_grid(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py844 def test_create_int_nano_grid(self):CODE
Unused Imports4 hits · 4 pts
SeverityFileLineSnippetContext
LOWci/validate_docs_references.py28CODE
LOWnanovdb/nanovdb/python/__init__.py9CODE
LOWopenvdb/openvdb/python/__init__.py3CODE
LOWopenvdb/openvdb/python/test/TestOpenVDB.py17CODE
Overly Generic Function Names2 hits · 2 pts
SeverityFileLineSnippetContext
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py886 def test_function(self):CODE
LOWnanovdb/nanovdb/python/test/TestNanoVDB.py900 def test_function(self):CODE
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWnanovdb/nanovdb/cmd/updateFiles.sh12# Check if dir is not a directoryCOMMENT
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
LOW.github/workflows/weekly.yml555 # note: For CI forks, make sure you have your tags syncedCOMMENT
Excessive Try-Catch Wrapping1 hit · 1 pts
SeverityFileLineSnippetContext
LOWci/download_vdb_caches.py105 except Exception as e:CODE
Deep Nesting1 hit · 1 pts
SeverityFileLineSnippetContext
LOWnanovdb/nanovdb/cmd/updateFiles.py44CODE