Making it easier to work with shaders
This report presents the forensic synthetic code analysis of shader-slang/slang, a C++ project with 5,423 GitHub stars. SynthScan v2.0 examined 835,937 lines of code across 2666 source files, recording 3787 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 4.7 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).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
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.
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.
The scanner identified 3787 distinct pattern matches across 20 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | CMakeLists.txt | 661 | set(SLANG_CMAKE_CONFIG_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) | COMMENT |
| LOW | CMakeLists.txt | 681 | # unconditional include() of slangTargets.cmake (cmake/SlangConfig.cmake.in) | COMMENT |
| LOW | tools/gfx-unit-test/link-time-options.cpp | 1 | #include "core/slang-basic.h" | COMMENT |
| LOW | tools/gfx-unit-test/shader-cache-tests.cpp | 1 | #if 0 | COMMENT |
| LOW | tools/gfx-unit-test/pointer-in-buffer-roundtrip.cpp | 1 | #include "core/slang-basic.h" | COMMENT |
| LOW | tools/gfx-unit-test/gfx-test-texture-util.cpp | 1 | #include "gfx-test-texture-util.h" | COMMENT |
| LOW | tools/gfx-unit-test/gfx-test-texture-util.cpp | 161 | return new PackedValidationTextureFormat<uint32_t>(10, 10, 10, 2); | COMMENT |
| LOW | tools/gfx-unit-test/texture-types-tests.cpp | 1 | #if 0 | COMMENT |
| LOW | tools/gfx-unit-test/texture-types-tests.cpp | 701 | // one test with something bound, one test with nothing bound, one test with subset of layers (set | COMMENT |
| LOW | tools/gfx-unit-test/pointer-in-paramblock-roundtrip.cpp | 1 | #include "core/slang-basic.h" | COMMENT |
| LOW | tools/gfx-unit-test/precompiled-module-2.cpp | 1 | #if 0 | COMMENT |
| LOW | tools/gfx-unit-test/link-time-type-layout.cpp | 241 | // This test verifies that type layout information correctly propagates through | COMMENT |
| LOW | tools/gfx-unit-test/link-time-type-layout-nested.cpp | 241 | // | COMMENT |
| LOW | …x-unit-test/pointer-in-buffer-double-ptr-roundtrip.cpp | 1 | #include "core/slang-basic.h" | COMMENT |
| LOW | tools/gfx-unit-test/span.h | 1 | /* | COMMENT |
| LOW | tools/gfx-unit-test/span.h | 21 | #define TCB_SPAN_NO_EXCEPTIONS | COMMENT |
| LOW | tools/gfx-unit-test/span.h | 41 | #define TCB_SPAN_HAVE_CPP14 | COMMENT |
| LOW | tools/gfx-unit-test/span.h | 81 | cond ? (void)0 : contract_violation("Expected " TCB_SPAN_STRINGIFY(cond)) | COMMENT |
| LOW | tools/gfx-unit-test/span.h | 101 | COMMENT | |
| LOW | tools/gfx-unit-test/span.h | 121 | COMMENT | |
| LOW | tools/gfx-unit-test/gfx-test-util.h | 1 | #pragma once | COMMENT |
| LOW | tools/gfx-unit-test/neural-slang-network-converter.cpp | 1 | #include "core/slang-basic.h" | COMMENT |
| LOW | tools/gfx-unit-test/copy-texture-tests.cpp | 1 | #if 0 | COMMENT |
| LOW | tools/vk-pipeline-create/main.cpp | 1 | // main.cpp | COMMENT |
| LOW | tools/coverage-html/script.js | 1 | (function () { | COMMENT |
| LOW | tools/coverage-html/lcov_io.py | 281 | # NOTE on counting: LCOV emits one FN/FNDA pair per *mangled name*, | COMMENT |
| LOW | tools/coverage-html/lcov_io.py | 801 | COMMENT | |
| LOW | tools/platform/platform-api.h | 1 | #ifndef SLANG_PLATFORM_API_H | COMMENT |
| LOW | tools/platform/gui.cpp | 1 | // gui.cpp | COMMENT |
| LOW | tools/platform/gui.cpp | 361 | COMMENT | |
| LOW | tools/platform/model.cpp | 1 | // model.cpp | COMMENT |
| LOW | tools/platform/model.cpp | 21 | COMMENT | |
| LOW | tools/slang-fiddle/slang-fiddle-diagnostic-defs.h | 1 | // | COMMENT |
| LOW | tools/slang-fiddle/slang-fiddle-main.cpp | 1 | // slang-fiddle-main.cpp | COMMENT |
| LOW | tools/slang-fiddle/slang-fiddle-main.cpp | 101 | SourceView* inputSourceView = | COMMENT |
| LOW | tools/slang-fiddle/slang-fiddle-main.cpp | 221 | builder.append("\n"); | COMMENT |
| LOW | tools/slang-fiddle/slang-fiddle-main.cpp | 341 | if (sink.getErrorCount()) | COMMENT |
| LOW | tools/slang-fiddle/slang-fiddle-lua.cpp | 1 | // slang-fiddle-lua.cpp | COMMENT |
| LOW | tools/slang-fiddle/slang-fiddle-options.cpp | 1 | // slang-fiddle-options.cpp | COMMENT |
| LOW | tools/slang-embed/slang-embed.cpp | 1 | // slang-embed.cpp | COMMENT |
| LOW | …ang-capability-generator/capability-generator-main.cpp | 1 | // capabilities-generator-main.cpp | COMMENT |
| LOW | …apability-generator/slang-capability-diagnostic-defs.h | 1 | // | COMMENT |
| LOW | tools/render-test/slang-support.cpp | 1 | // slang-support.cpp | COMMENT |
| LOW | tools/render-test/slang-support.h | 1 | // slang-support.h | COMMENT |
| LOW | tools/render-test/slang-support.h | 121 | } | COMMENT |
| LOW | tools/render-test/render-test-main.cpp | 1 | // render-test-main.cpp | COMMENT |
| LOW | tools/render-test/render-test-main.cpp | 21 | #endif | COMMENT |
| LOW | tools/render-test/render-test-main.cpp | 361 | SLANG_RETURN_ON_FAIL(dataCursor.setData(srcVal->bufferData.getBuffer(), bufferSize)); | COMMENT |
| LOW | tools/render-test/options.cpp | 1 | // options.cpp | COMMENT |
| LOW | tools/render-test/slang-test-device-cache.h | 1 | #pragma once | COMMENT |
| LOW | tools/render-test/options.h | 1 | // options.h | COMMENT |
| LOW | tools/render-test/diagnostic-defs.h | 1 | // | COMMENT |
| LOW | tools/test-server/test-server-main.cpp | 1 | // test-server.cpp | COMMENT |
| LOW | tools/test-server/test-server-diagnostic-defs.h | 1 | // | COMMENT |
| LOW | tools/test-process/test-process-main.cpp | 1 | // test-process-main.cpp | COMMENT |
| LOW | tools/compile-perf/trend.py | 61 | # future exotic character degrades instead of raising). | COMMENT |
| LOW | tools/compile-perf/bench.py | 341 | last_text = "" | COMMENT |
| LOW | tools/compile-perf/sweep.py | 41 | if not os.path.exists(args.index): | COMMENT |
| LOW | tools/compile-perf/native/api-driver.cpp | 1 | // Compile-perf API driver: measures the Slang compilation API path (session | COMMENT |
| LOW | tools/compile-perf/native/api-driver.cpp | 21 | // api-driver <libslang> module-graph-bin --dir DIR --root MODULENAME | COMMENT |
| 3029 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/coverage-html/slang-coverage-merge.py | 63 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/slang-coverage-merge.py | 65 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/slang-coverage-merge.py | 89 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/slang-coverage-merge.py | 91 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/coverage-html/slang-coverage-merge.py | 172 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/coverage-html/slang-coverage-merge.py | 174 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/slang-coverage-merge.py | 224 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/slang-coverage-merge.py | 226 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/slang-coverage-merge.py | 288 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/slang-coverage-merge.py | 290 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/llvm_cov_json.py | 36 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/llvm_cov_json.py | 38 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/slang-coverage-html.py | 53 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/slang-coverage-html.py | 55 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/coverage-html/slang-coverage-html.py | 90 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/coverage-html/slang-coverage-html.py | 92 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/slang-coverage-html.py | 1144 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/slang-coverage-html.py | 1146 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/slang-coverage-html.py | 1206 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/slang-coverage-html.py | 1208 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/slang-coverage-html.py | 1246 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/slang-coverage-html.py | 1248 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/slang-coverage-html.py | 1272 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/slang-coverage-html.py | 1274 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/lcov_io.py | 114 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/lcov_io.py | 116 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/lcov_io.py | 514 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/lcov_io.py | 516 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/lcov_io.py | 725 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/lcov_io.py | 727 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/lcov_io.py | 805 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/lcov_io.py | 807 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/coverage-html/tests/test_merge.py | 178 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/coverage-html/tests/test_merge.py | 180 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/coverage-html/tests/test_merge.py | 245 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/coverage-html/tests/test_merge.py | 247 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/tests/test_merge.py | 43 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/tests/test_merge.py | 45 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/tests/test_merge.py | 86 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/tests/test_merge.py | 88 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/tests/test_merge.py | 303 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/coverage-html/tests/test_merge.py | 305 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | source/compiler-core/slang-rich-diagnostics-render.cpp | 179 | // ┬──────────, where the first character there is the 'Join' one, it | COMMENT |
| MEDIUM | tests/expected-failure-coverage.txt | 2 | # ========================= | COMMENT |
| MEDIUM | examples/shader-coverage-image-pipeline/run_coverage.py | 29 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/shader-coverage-image-pipeline/run_coverage.py | 31 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/shader-coverage-image-pipeline/run_coverage.py | 51 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/shader-coverage-image-pipeline/run_coverage.py | 53 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/shader-coverage-image-pipeline/run_coverage.py | 123 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/shader-coverage-image-pipeline/run_coverage.py | 125 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/shader-coverage-image-pipeline/run_coverage.py | 150 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/shader-coverage-image-pipeline/run_coverage.py | 152 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/shader-coverage-image-pipeline/run_coverage.py | 165 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/shader-coverage-image-pipeline/run_coverage.py | 167 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/shader-coverage-image-pipeline/run_coverage.py | 187 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | examples/shader-coverage-image-pipeline/run_coverage.py | 195 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | examples/shader-coverage-image-pipeline/run_coverage.py | 221 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | examples/shader-coverage-image-pipeline/run_coverage.py | 223 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | examples/shader-coverage-bvh-traversal/run_coverage.py | 29 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/shader-coverage-bvh-traversal/run_coverage.py | 31 | # --------------------------------------------------------------------------- | COMMENT |
| 39 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tools/coverage-html/slang-coverage-merge.py | 177 | def synthesize_missing_functions( | CODE |
| LOW⚡ | tools/coverage-html/slang-coverage-html.py | 98 | def _escape_path_for_filename(relpath: str) -> str: | CODE |
| LOW | tools/coverage-html/slang-coverage-html.py | 621 | def _render_file_functions_row( | CODE |
| LOW | tools/coverage-html/slang-coverage-html.py | 848 | def _fn_function_coverage_cells(is_hit: bool) -> str: | CODE |
| LOW | tools/coverage-html/slang-coverage-html.py | 859 | def _fn_branch_coverage_cells(b_total: int, b_hit: int) -> str: | CODE |
| LOW | tools/coverage-html/slang-coverage-html.py | 921 | def _render_inline_functions_table( | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 42 | def test_empty_is_plain_spaces(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 110 | def test_cell_bg_uses_high_lightness(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 117 | def test_rate_cell_emits_gradient_inline_style(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 145 | def test_no_filters_is_identity(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 170 | def test_glob_and_regex_compose(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 228 | def test_demo_fixture_round_trip(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 253 | def test_refuses_foreign_output_dir(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 269 | def test_exit_nonzero_on_corrupt_lcov(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 278 | def test_empty_lcov_produces_empty_index(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 290 | def test_real_lcov_with_branches_and_functions(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 311 | def test_metric_cards_only_on_per_file_pages(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 342 | def test_top_chrome_is_sticky(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 379 | def test_directory_grouping_in_index(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 411 | def test_nested_directory_levels_each_collapsible(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 447 | def test_index_uses_full_width_no_center(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 464 | def test_title_no_lcov_branding(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 480 | def test_slang_brand_palette_applied(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 497 | def test_chevron_placeholder_keeps_columns_aligned(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 536 | def test_inline_function_table_fixed_width_layout(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 562 | def test_invocation_cwd_resolves_repo_relative_paths(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 603 | def test_function_dropdown_includes_branch_coverage(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 647 | def test_index_has_expandable_function_rows(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 691 | def test_per_file_page_no_longer_has_functions_table(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 721 | def test_real_lcov_renders_inline_branch_column(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 785 | def test_idempotent_modulo_timestamp(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 834 | def test_json_input_renders_regions_column(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 865 | def test_json_input_drops_auth_summary(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 879 | def test_json_summary_drives_overall_numbers(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 895 | def test_json_gz_extension_accepted(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 912 | def test_no_auth_no_regions_zero_total(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 919 | def test_regions_list_drives_unauthed_totals(self): | CODE |
| LOW | tools/coverage-html/tests/test_renderer.py | 931 | def test_auth_override_overrides_regions_list(self): | CODE |
| LOW | tools/coverage-html/tests/test_llvm_cov_json.py | 38 | def test_summary_drives_totals(self): | CODE |
| LOW⚡ | tools/coverage-html/tests/test_llvm_cov_json.py | 52 | def test_zero_summary_zeros_out(self): | CODE |
| LOW⚡ | tools/coverage-html/tests/test_llvm_cov_json.py | 60 | def test_branches_dict_has_two_arms_per_branch(self): | CODE |
| LOW⚡ | tools/coverage-html/tests/test_llvm_cov_json.py | 69 | def test_functions_attached_to_primary_file(self): | CODE |
| LOW⚡ | tools/coverage-html/tests/test_llvm_cov_json.py | 77 | def test_regions_filter_to_code_kind(self): | CODE |
| LOW⚡ | tools/coverage-html/tests/test_llvm_cov_json.py | 87 | def test_segments_drive_per_line_hits(self): | CODE |
| LOW⚡ | tools/coverage-html/tests/test_llvm_cov_json.py | 95 | def test_lcov_specific_fields_unset(self): | CODE |
| LOW | tools/coverage-html/tests/test_llvm_cov_json.py | 113 | def test_half_open_at_segment_boundary(self): | CODE |
| LOW | tools/coverage-html/tests/test_llvm_cov_json.py | 129 | def test_final_segment_attributed_only_to_its_own_line(self): | CODE |
| LOW | tools/coverage-html/tests/test_llvm_cov_json.py | 138 | def test_five_element_segments_accepted(self): | CODE |
| LOW | tools/coverage-html/tests/test_llvm_cov_json.py | 151 | def test_deactivating_segment_skipped(self): | CODE |
| LOW | tools/coverage-html/tests/test_llvm_cov_json.py | 198 | def test_gz_extension_auto_decompresses(self): | CODE |
| LOW | tools/coverage-html/tests/test_llvm_cov_json.py | 246 | def test_last_block_wins_for_duplicate_filenames(self): | CODE |
| LOW⚡ | tools/coverage-html/tests/test_merge.py | 56 | def test_windows_backslashes_normalize_to_forward(self): | CODE |
| LOW⚡ | tools/coverage-html/tests/test_merge.py | 63 | def test_unmatched_path_passes_through(self): | CODE |
| LOW⚡ | tools/coverage-html/tests/test_merge.py | 70 | def test_no_prefixes_passes_through(self): | CODE |
| LOW⚡ | tools/coverage-html/tests/test_merge.py | 160 | def test_functions_first_line_fallback(self): | CODE |
| LOW⚡ | tools/coverage-html/tests/test_merge.py | 170 | def test_files_unique_per_input_are_preserved(self): | CODE |
| LOW⚡ | tools/coverage-html/tests/test_merge.py | 227 | def test_no_op_when_no_sibling_has_functions(self): | CODE |
| LOW⚡ | tools/coverage-html/tests/test_merge.py | 236 | def test_only_applies_to_files_with_no_functions(self): | CODE |
| LOW⚡ | tools/coverage-html/tests/test_merge.py | 255 | def test_round_trip_preserves_coverage(self): | CODE |
| LOW⚡ | tools/coverage-html/tests/test_merge.py | 336 | def test_rejects_json_input_with_exit_two(self): | CODE |
| 207 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/compile-perf/sweep_report.py | 174 | somewhere, where a log-log fit is undefined). | STRING |
| HIGH | tools/compile-perf/lib/workloads.py | 28 | # complexity_ladder is marked "Scaling reference (not a null)" because it | COMMENT |
| HIGH | tools/compile-perf/lib/workloads.py | 266 | Scaling reference (not a null): several axes co-scale, so the sweep's linear line means 'cost tracks code size' — a | STRING |
| HIGH | extras/ci-gpu-stress-loop.py | 206 | rm -f /usr/share/glvnd/egl_vendor.d/10_nvidia.json 2>/dev/null || true | CODE |
| HIGH⚡ | extras/ci-gpu-stress-loop.py | 218 | sudo nvidia-modprobe -m 2>/dev/null || true | CODE |
| HIGH⚡ | extras/ci-gpu-stress-loop.py | 227 | mkdir -p workspace/slang && cd workspace/slang | CODE |
| HIGH⚡ | extras/ci-gpu-stress-loop.py | 230 | chmod +x {cmake_config}/bin/* 2>/dev/null || true | CODE |
| HIGH⚡ | extras/ci-gpu-stress-loop.py | 267 | nvidia-smi 2>&1 || echo 'NVIDIA-SMI FAILED' | CODE |
| HIGH⚡ | extras/ci-gpu-stress-loop.py | 270 | nvidia-smi -q 2>&1 || echo 'NVIDIA-SMI QUERY FAILED' | CODE |
| HIGH⚡ | extras/ci-gpu-stress-loop.py | 273 | nvidia-smi -q -d XID_ERRORS 2>&1 || echo 'XID QUERY FAILED' | CODE |
| HIGH⚡ | extras/ci-gpu-stress-loop.py | 276 | lspci 2>/dev/null | grep -i nvidia || echo 'lspci not available' | CODE |
| HIGH⚡ | extras/ci-gpu-stress-loop.py | 279 | sudo dmesg 2>/dev/null || echo '(dmesg not available)' | CODE |
| HIGH | extras/ci-gpu-stress-loop.py | 396 | " lspci 2>/dev/null | grep -i nvidia || echo 'lspci not available'", | CODE |
| HIGH⚡ | extras/ci/analytics/ci_visualization.py | 203 | if (ctx.measureText(test).width > maxWidth && cur) { | CODE |
| HIGH⚡ | extras/ci/analytics/ci_visualization.py | 204 | lines.push(cur); | CODE |
| HIGH⚡ | extras/ci/analytics/ci_visualization.py | 210 | if (cur) lines.push(cur); | CODE |
| HIGH⚡ | extras/ci/analytics/ci_visualization.py | 215 | if (!canvas || !bg) return null; | CODE |
| HIGH | extras/ci/analytics/ci_visualization.py | 1177 | charts.push({{chart: c, id, type, config}}); | CODE |
| HIGH⚡ | extras/ci/analytics/ci_visualization.py | 1532 | const matchWf = !wf || el.dataset.wf === wf; | CODE |
| HIGH⚡ | extras/ci/analytics/ci_visualization.py | 1533 | const matchBr = !br || el.dataset.branch === br; | CODE |
| HIGH⚡ | extras/ci/analytics/ci_visualization.py | 1534 | el.style.display = (matchWf && matchBr) ? 'block' : 'none'; | CODE |
| HIGH | extras/ci/analytics/ci_health.py | 905 | runnerDatasets.push({{ | CODE |
| HIGH | extras/ci/analytics/ci_health.py | 958 | if (!gpuCanvas || Object.keys(quotaChart.regionData).length === 0) continue; | CODE |
| HIGH | extras/ci/analytics/ci_health.py | 962 | gpuDatasets.push({{ | CODE |
| HIGH | extras/ci/analytics/ci_health.py | 973 | gpuDatasets.push({{ | CODE |
| HIGH⚡ | extras/ci/analytics/ci_health.py | 1018 | if (hostedCanvas && hostedRunnerChart) {{ | CODE |
| HIGH⚡ | extras/ci/analytics/ci_health.py | 1022 | hostedDatasets.push({{ | CODE |
| HIGH⚡ | extras/ci/analytics/ci_health.py | 1032 | hostedDatasets.push({{ | CODE |
| HIGH | extras/ci/analytics/ci_health.py | 1106 | if (total == null) return ''; | CODE |
| HIGH | extras/ci/analytics/ci_health.py | 1120 | if (mqCanvas && hasMqSnapshots) {{ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/compile-perf/bench.py | 356 | # won't occur here because the bench harness always builds valid invocations. | COMMENT |
| MEDIUM | tools/compile-perf/lib/manifest.py | 89 | # / holistic first, then the API-path workloads, then the compiler | COMMENT |
| MEDIUM | tools/compile-perf/lib/manifest.py | 105 | # Sweep this to see the holistic compile-time curve as a representative | COMMENT |
| MEDIUM | …/slang-unit-test/unit-precompiled-module-attribute.cpp | 18 | // This test checks a nuanced case: | COMMENT |
| MEDIUM | tools/slang-unit-test/unit-test-persistent-cache.cpp | 312 | // Tests the cache to be robust against various corruptions. | COMMENT |
| MEDIUM | tools/gfx/renderer-shared.h | 83 | // This setup is robust to any destruction ordering. If user releases reference to `device` first, | COMMENT |
| MEDIUM | source/slang/slang-ir-autodiff-primal-hoist.cpp | 344 | // Essentially we want to split the uses dominated by the true block and the false block of the | COMMENT |
| MEDIUM | source/slang/slang-ir-eliminate-phis.cpp | 421 | // In an attempt to make this code as robust as possible, we | COMMENT |
| MEDIUM | source/slang/slang-check-overload.cpp | 2368 | // structural/type concerns, but a more nuanced approach may be | COMMENT |
| MEDIUM | source/slang/slang-check-inheritance.cpp | 1439 | // compared to C3 so that it is robust to such ordering issues. | COMMENT |
| MEDIUM | source/slang/slang-ir-restructure.cpp | 539 | // The logic here isn't going to be robust in edge cases | COMMENT |
| MEDIUM | source/slang/slang-parser.cpp | 7034 | // TODO(tfoley): this wouldn't be robust for more | COMMENT |
| MEDIUM | source/slang/slang-ir.cpp | 246 | // this more robust. | COMMENT |
| MEDIUM | source/slang/slang-ir-typeflow-specialize.cpp | 512 | // In the future, we may want to extend this check to something more nuanced, | COMMENT |
| MEDIUM | source/slang/slang-ir-synthesize-active-mask.cpp | 228 | // TODO: The logic here isn't robust against cases where we | COMMENT |
| MEDIUM | source/slang/slang-lower-to-ir.cpp | 7276 | // Check the AST type (robust to generic instantiations whose | COMMENT |
| MEDIUM | source/slang/slang-lower-to-ir.cpp | 8177 | // TODO: We might want to have a more robust check | COMMENT |
| MEDIUM | source/slang/slang-lower-to-ir.cpp | 14972 | // TODO: This isn't a robust strategy if we ever have to deal | COMMENT |
| MEDIUM | source/slang/slang-ir-collect-global-uniforms.cpp | 260 | // TODO: It would be more consistent and robust to *always* wrap up | COMMENT |
| MEDIUM | source/slang/slang-ir-ssa.cpp | 1603 | // robust to the presence of nested functions in general. | COMMENT |
| MEDIUM | source/slang/slang-ir-specialize.cpp | 2053 | // TODO: We probably need/want a more robust test here. | COMMENT |
| MEDIUM | source/slang/slang-parameter-binding.cpp | 3538 | // TODO: Ideally we should make the layout process more robust to empty/void | COMMENT |
| MEDIUM | source/slang/slang-emit-c-like.h | 759 | // Source language (based on the more nuanced m_target) | COMMENT |
| MEDIUM | source/slang/slang-check-decl.cpp | 2237 | // applies to such types. A more robust fix would involve a truly | COMMENT |
| MEDIUM | source/slang/slang-check-decl.cpp | 2238 | // recursive walk of the AST declarations, and an even *more* robust | COMMENT |
| MEDIUM | source/slang/slang-check-decl.cpp | 10801 | // The only robust solution long-term is probably to treat this | COMMENT |
| MEDIUM | source/slang/slang-check-decl.cpp | 13801 | // they are allowed to co-exist using these more nuanced rules. | COMMENT |
| MEDIUM | source/slang/slang-check-constraint.cpp | 2354 | // nodes. The visited set makes the walk robust and keeps one complex | COMMENT |
| MEDIUM | source/slang/slang-ir-autodiff-fwd.cpp | 1084 | // role is robust to the order in which requirements (and the relocated | COMMENT |
| MEDIUM | source/slang/slang-ir-autodiff-fwd.cpp | 3728 | // rather than by operand position, so this is robust to the order in which the requirements | COMMENT |
| MEDIUM | source/slang/slang-ir-entry-point-raw-ptr-params.cpp | 60 | // that ranges are robust against changes to instructions outside | COMMENT |
| MEDIUM | examples/gpu-printing/gpu-printing.cpp | 244 | // TODO: This code isn't robust against strings with | COMMENT |
| MEDIUM | .github/actions/claude-code-runner/action.yml | 294 | # Generate token with comprehensive error handling (using Basic auth) | COMMENT |
| MEDIUM | external/spirv-tools-generated/options-pinned.h | 39 | // Diamond dependency problems can be avoided if all packages utilize the same | COMMENT |
| MEDIUM | extras/ci-gpu-stress-loop.py | 326 | # internal harness, e.g. `getBufferResourceHandleVulkan.internal`) result | COMMENT |
| MEDIUM | extras/ci/analyze-ci-parallelization.py | 67 | """Perform comprehensive parallelization analysis.""" | STRING |
| MEDIUM | extras/scaler/cmd/scaler/main.go | 400 | // jobs to finish. This enables seamless binary updates: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | REVIEW.md | 44 | ## Step 1: Verify the pre-staged PR diff | COMMENT |
| LOW | REVIEW.md | 76 | ## Step 2: Determine applicable reviewers and dispatch | COMMENT |
| LOW | REVIEW.md | 114 | ## Step 3: Wait for all dispatched agents, then editorially filter | COMMENT |
| LOW | REVIEW.md | 144 | ## Step 4: Analyze changes for the review | COMMENT |
| LOW | REVIEW.md | 159 | ## Step 5: Post ONE review with inline comments | COMMENT |
| LOW | …s/slang-unit-test/unit-test-obfuscation-with-debug.cpp | 433 | // Step 1: Compile slang modules with -g2 + Obfuscation ON | COMMENT |
| LOW | …s/slang-unit-test/unit-test-obfuscation-with-debug.cpp | 455 | // Step 2: Generate SPIR-V with separate debug | COMMENT |
| LOW | …s/slang-unit-test/unit-test-obfuscation-with-debug.cpp | 540 | // Step 3: Verification | COMMENT |
| LOW | source/slang/slang-ir-typeflow-specialize.cpp | 3414 | // Step 1: treat any non-concrete table (the explicit "none" | COMMENT |
| LOW | source/slang/slang-ir-typeflow-specialize.cpp | 3428 | // Step 2: it is safe to dereference `witnessTab` now. | COMMENT |
| LOW | .claude/skills/slangpy-debug/SKILL.md | 23 | ## Step 1: Build Slang | COMMENT |
| LOW | .claude/skills/slangpy-debug/SKILL.md | 31 | ## Step 2: Clone slangpy Repository | COMMENT |
| LOW | .claude/skills/slangpy-debug/SKILL.md | 42 | ## Step 3: Build and Install slangpy with Local Slang | COMMENT |
| LOW | .claude/skills/slangpy-debug/SKILL.md | 63 | ## Step 4: Install Test Dependencies | COMMENT |
| LOW | .claude/skills/slangpy-debug/SKILL.md | 71 | ## Step 5: Run Tests | COMMENT |
| LOW | .claude/skills/slang-release-process/SKILL.md | 18 | ## Step 1: Trigger Release CI | COMMENT |
| LOW | .claude/skills/slang-release-process/SKILL.md | 37 | ## Step 2: Determine the Version | COMMENT |
| LOW | .claude/skills/slang-release-process/SKILL.md | 73 | ## Step 3: Generate Release Notes | COMMENT |
| LOW | .claude/skills/slang-release-process/SKILL.md | 83 | ## Step 4: Create and Push the Tag | COMMENT |
| LOW | docs/replays.md | 387 | ### Step 1: Create or Update Proxy | COMMENT |
| LOW | docs/replays.md | 402 | ### Step 2: Implement Methods with Recording | COMMENT |
| LOW⚡ | docs/replays.md | 415 | ### Step 3: Register Wrapping (if new interface) | COMMENT |
| LOW⚡ | docs/replays.md | 423 | ### Step 4: Register Replay Handler | COMMENT |
| LOW⚡ | docs/replays.md | 431 | ### Step 5: Add Type Serialization (if needed) | COMMENT |
| LOW | examples/stacktrace-windows/common.cpp | 72 | // NOTE: This function is not thread-safe, due to usage of StackWalk64 and static buffers. | COMMENT |
| LOW⚡ | extras/update-spirv-tools.sh | 41 | # Step 1: Synchronize and update submodules | COMMENT |
| LOW⚡ | extras/update-spirv-tools.sh | 46 | # Step 2: Fetch and resolve the commit hash | COMMENT |
| LOW⚡ | extras/update-spirv-tools.sh | 65 | # Step 3: Create a branch for the update | COMMENT |
| LOW⚡ | extras/update-spirv-tools.sh | 72 | # Step 4: Update the SPIRV-Tools submodule to the specified version | COMMENT |
| LOW⚡ | extras/update-spirv-tools.sh | 76 | # Step 5: Build spirv-tools to generate files | COMMENT |
| LOW | extras/update-spirv-tools.sh | 91 | # Step 6: Update SPIRV-Headers to what SPIRV-Tools uses | COMMENT |
| LOW | extras/update-spirv-tools.sh | 108 | # Step 7: Copy the generated files from spirv-tools/build/ to spirv-tools-generated/ | COMMENT |
| LOW | extras/update-spirv-tools.sh | 130 | # Step 8: Stage the changes | COMMENT |
| LOW⚡ | extras/repro-remix.sh | 81 | # Step 1: Verify Slang Debug Build | COMMENT |
| LOW⚡ | extras/repro-remix.sh | 101 | # Step 2: Clone dxvk-remix | COMMENT |
| LOW⚡ | extras/repro-remix.sh | 127 | # Step 3: Comment out Slang in packman-external.xml | COMMENT |
| LOW⚡ | extras/repro-remix.sh | 163 | # Step 4: Download packman dependencies (excluding Slang) | COMMENT |
| LOW⚡ | extras/repro-remix.sh | 175 | # Step 5: Create Slang directory with our Debug build | COMMENT |
| LOW⚡ | extras/repro-remix.sh | 220 | # Step 6: Build shaders | COMMENT |
| LOW⚡ | extras/repro-remix.sh | 253 | # Step 7: Verify shader compilation output | COMMENT |
| LOW | extras/scaler/deploy/setup-scaler-host.sh | 57 | # Step 1: Create VM if it doesn't exist | COMMENT |
| LOW⚡ | extras/scaler/deploy/setup-scaler-host.sh | 78 | # Step 2: Create scaler user and directories on VM | COMMENT |
| LOW⚡ | extras/scaler/deploy/setup-scaler-host.sh | 87 | # Step 3: Upload binary and config | COMMENT |
| LOW | extras/scaler/deploy/setup-scaler-host.sh | 104 | # Step 4: Upload and install systemd services | COMMENT |
| LOW | extras/scaler/deploy/setup-scaler-host.sh | 130 | # Step 5: Start Windows scaler (Linux scaler needs its image first) | COMMENT |
| LOW | extras/scaler/internal/gcp/startup.sh | 105 | # Step 0: Remove any pre-existing runner service from the base image. | COMMENT |
| LOW | extras/scaler/internal/gcp/startup.sh | 262 | # Step 1: Read JIT config from GCP instance metadata | COMMENT |
| LOW⚡ | extras/scaler/internal/gcp/startup.sh | 282 | # Step 2: Log GPU and system info | COMMENT |
| LOW⚡ | extras/scaler/internal/gcp/startup.sh | 287 | # Step 3: Run the GitHub Actions runner as the correct user | COMMENT |
| LOW⚡ | extras/scaler/internal/gcp/startup.sh | 296 | # Step 4: Shut down the VM | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/compile-perf/bench.py | 223 | except Exception: # noqa: BLE001 | CODE |
| LOW | tools/compile-perf/bench.py | 253 | except Exception: # noqa: BLE001 | CODE |
| LOW | tools/compile-perf/bench.py | 489 | except Exception as e: # noqa: BLE001 — isolation is the contract | CODE |
| MEDIUM | tools/compile-perf/bench.py | 218 | def _detect_gnu_time(): | CODE |
| LOW | tools/compile-perf/fetch_releases.py | 159 | except Exception as e: # noqa: BLE001 | CODE |
| MEDIUM | tools/compile-perf/fetch_releases.py | 155 | def verify(slangc): | CODE |
| LOW | .claude/hooks/stop.py | 56 | except Exception: | CODE |
| LOW | .claude/hooks/stop.py | 114 | except Exception: | CODE |
| MEDIUM | .claude/hooks/stop.py | 61 | def main(): | CODE |
| LOW | .claude/hooks/pre_tool_use.py | 44 | except Exception as e: | CODE |
| LOW | .claude/hooks/pre_tool_use.py | 52 | except Exception: | CODE |
| MEDIUM | .claude/hooks/pre_tool_use.py | 9 | def main(): | CODE |
| LOW | extras/insttrace.py | 80 | except Exception as e: | CODE |
| LOW | extras/ci-gpu-stress-loop.py | 66 | except Exception as e: | CODE |
| MEDIUM | extras/split-ir-dump.py | 168 | print(f"Error: Dump file '{dump_file}' not found") | CODE |
| MEDIUM | extras/split-ir-dump.py | 177 | print("Error: Too many arguments") | CODE |
| LOW | extras/extract-spirv-sources.py | 58 | except Exception: | CODE |
| LOW | extras/extract-spirv-sources.py | 124 | except Exception: | CODE |
| LOW | extras/extract-spirv-sources.py | 129 | except Exception: | CODE |
| LOW⚡ | extras/extract-spirv-sources.py | 469 | except Exception: | CODE |
| MEDIUM | extras/ci/analyze-ci-parallelization.py | 69 | print("Error: No jobs to analyze") | CODE |
| MEDIUM⚡ | extras/ci/analyze-ci-parallelization.py | 309 | print(f"Error: File not found: {sys.argv[1]}", file=sys.stderr) | CODE |
| MEDIUM⚡ | extras/ci/analyze-ci-parallelization.py | 312 | print(f"Error: Permission denied: {sys.argv[1]}", file=sys.stderr) | CODE |
| MEDIUM⚡ | extras/ci/analyze-ci-parallelization.py | 315 | print(f"Error: Invalid JSON in {sys.argv[1]}: {e}", file=sys.stderr) | CODE |
| MEDIUM⚡ | extras/ci/analyze-ci-parallelization.py | 320 | print("Error: Invalid or empty JSON input", file=sys.stderr) | CODE |
| MEDIUM | extras/ci/analyze-ci-parallelization.py | 338 | print("Error: Expected JSON with 'jobs' array or array of jobs", file=sys.stderr) | CODE |
| MEDIUM | extras/ci/analyze-ci-parallelization.py | 345 | print("Error: No valid jobs found in input", file=sys.stderr) | CODE |
| MEDIUM | extras/ci/analytics/ci_job_collector.py | 531 | print("Error: --migrate requires --output-dir", file=sys.stderr) | CODE |
| MEDIUM | extras/ci/analytics/ci_job_collector.py | 574 | print(f"Error: {e}", file=sys.stderr) | CODE |
| MEDIUM | extras/ci/analytics/ci_post_status.py | 125 | print(f"Error: could not read {STATUS_FILE}: {e}", file=sys.stderr) | CODE |
| MEDIUM | extras/ci/analytics/ci_post_status.py | 186 | print(f"Error: commit failed:\n{result.stderr}", file=sys.stderr) | CODE |
| MEDIUM | extras/ci/analytics/ci_post_status.py | 201 | print(f"Error: pull --rebase failed:\n{pull.stderr}", file=sys.stderr) | CODE |
| MEDIUM | extras/ci/analytics/ci_post_status.py | 248 | print("Error: body cannot be empty.", file=sys.stderr) | CODE |
| MEDIUM | extras/ci/analytics/ci_visualization.py | 105 | print(f"Error: invalid runner config at {config_path}: {e}", file=sys.stderr) | CODE |
| MEDIUM | extras/ci/analytics/ci_visualization.py | 1578 | print(f"Error: no ci_jobs_*.json files found in {input_dir}", file=sys.stderr) | CODE |
| MEDIUM | extras/ci/analytics/ci_visualization.py | 1593 | print(f"Error: failed reading {path}: {e}", file=sys.stderr) | CODE |
| MEDIUM⚡ | extras/ci/analytics/ci_visualization.py | 1615 | print(f"Error: input JSON not found: {args.input}", file=sys.stderr) | CODE |
| MEDIUM⚡ | extras/ci/analytics/ci_visualization.py | 1618 | print(f"Error: invalid JSON in {args.input}: {e}", file=sys.stderr) | CODE |
| MEDIUM⚡ | extras/ci/analytics/ci_visualization.py | 1621 | print(f"Error: failed reading {args.input}: {e}", file=sys.stderr) | CODE |
| LOW | extras/ci/analytics/ci_health.py | 1535 | except Exception as e: # noqa: BLE001 — sampler must never break the health run | STRING |
| MEDIUM | extras/ci/analytics/pr_collector.py | 215 | print(f"Error: {e}", file=sys.stderr) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …s/slang-unit-test/unit-test-obfuscation-with-debug.cpp | 433 | // Step 1: Compile slang modules with -g2 + Obfuscation ON | COMMENT |
| LOW | …s/slang-unit-test/unit-test-obfuscation-with-debug.cpp | 455 | // Step 2: Generate SPIR-V with separate debug | COMMENT |
| LOW | …s/slang-unit-test/unit-test-obfuscation-with-debug.cpp | 540 | // Step 3: Verification | COMMENT |
| LOW | source/slang/slang-ir-specialize-address-space.cpp | 149 | // TODO: if the inst is a phi node, we need to check if the address space of | COMMENT |
| LOW | source/slang/slang-ir-glsl-legalize.cpp | 4923 | // Specifically, we need to check if the function has | COMMENT |
| LOW | source/slang/slang-ir-typeflow-specialize.cpp | 3414 | // Step 1: treat any non-concrete table (the explicit "none" | COMMENT |
| LOW | source/slang/slang-ir-typeflow-specialize.cpp | 3428 | // Step 2: it is safe to dereference `witnessTab` now. | COMMENT |
| LOW | source/slang/slang-ir-liveness.cpp | 466 | // We need to check if we are in the live start block, as we then need to process | COMMENT |
| LOW | source/slang/slang-ir-constexpr.cpp | 707 | // In the forward direction we need to check if all of the operands | COMMENT |
| LOW | source/slang/slang-ir-legalize-matrix-types.cpp | 613 | // lowered (e.g. uint4x4), so we need to check if we should lower the operand even if we | COMMENT |
| LOW | source/slang/slang-check-expr.cpp | 728 | // We need to check if the lookup should resolve to a definition in an implementation type | COMMENT |
| LOW | source/slang/slang-check-constraint.cpp | 3884 | // If they refer to different declarations, we need to check if one type's super type | COMMENT |
| LOW | source/slang/slang-serialize-fossil.cpp | 1265 | // Now we need to check if we've previously read in | COMMENT |
| LOW | source/slang/slang-emit-spirv.cpp | 5947 | // we need to check if we actually write to it. | COMMENT |
| LOW | source/slang/slang-emit-spirv.cpp | 10568 | // First we need to check if the debug variable has a backing ordinary | COMMENT |
| LOW | source/slang/slang-ir-entry-point-uniforms.cpp | 203 | // If the base cases above failed, we need to check if we are dealing with | COMMENT |
| LOW⚡ | extras/update-spirv-tools.sh | 41 | # Step 1: Synchronize and update submodules | COMMENT |
| LOW⚡ | extras/update-spirv-tools.sh | 46 | # Step 2: Fetch and resolve the commit hash | COMMENT |
| LOW⚡ | extras/update-spirv-tools.sh | 65 | # Step 3: Create a branch for the update | COMMENT |
| LOW⚡ | extras/update-spirv-tools.sh | 72 | # Step 4: Update the SPIRV-Tools submodule to the specified version | COMMENT |
| LOW⚡ | extras/update-spirv-tools.sh | 76 | # Step 5: Build spirv-tools to generate files | COMMENT |
| LOW | extras/update-spirv-tools.sh | 91 | # Step 6: Update SPIRV-Headers to what SPIRV-Tools uses | COMMENT |
| LOW | extras/update-spirv-tools.sh | 108 | # Step 7: Copy the generated files from spirv-tools/build/ to spirv-tools-generated/ | COMMENT |
| LOW | extras/update-spirv-tools.sh | 130 | # Step 8: Stage the changes | COMMENT |
| LOW⚡ | extras/repro-remix.sh | 81 | # Step 1: Verify Slang Debug Build | COMMENT |
| LOW⚡ | extras/repro-remix.sh | 101 | # Step 2: Clone dxvk-remix | COMMENT |
| LOW⚡ | extras/repro-remix.sh | 127 | # Step 3: Comment out Slang in packman-external.xml | COMMENT |
| LOW⚡ | extras/repro-remix.sh | 163 | # Step 4: Download packman dependencies (excluding Slang) | COMMENT |
| LOW⚡ | extras/repro-remix.sh | 175 | # Step 5: Create Slang directory with our Debug build | COMMENT |
| LOW⚡ | extras/repro-remix.sh | 220 | # Step 6: Build shaders | COMMENT |
| LOW⚡ | extras/repro-remix.sh | 253 | # Step 7: Verify shader compilation output | COMMENT |
| LOW | extras/scaler/deploy/setup-scaler-host.sh | 57 | # Step 1: Create VM if it doesn't exist | COMMENT |
| LOW⚡ | extras/scaler/deploy/setup-scaler-host.sh | 78 | # Step 2: Create scaler user and directories on VM | COMMENT |
| LOW⚡ | extras/scaler/deploy/setup-scaler-host.sh | 87 | # Step 3: Upload binary and config | COMMENT |
| LOW | extras/scaler/deploy/setup-scaler-host.sh | 104 | # Step 4: Upload and install systemd services | COMMENT |
| LOW | extras/scaler/deploy/setup-scaler-host.sh | 130 | # Step 5: Start Windows scaler (Linux scaler needs its image first) | COMMENT |
| LOW | extras/scaler/internal/gcp/startup.sh | 105 | # Step 0: Remove any pre-existing runner service from the base image. | COMMENT |
| LOW | extras/scaler/internal/gcp/startup.sh | 262 | # Step 1: Read JIT config from GCP instance metadata | COMMENT |
| LOW⚡ | extras/scaler/internal/gcp/startup.sh | 282 | # Step 2: Log GPU and system info | COMMENT |
| LOW⚡ | extras/scaler/internal/gcp/startup.sh | 287 | # Step 3: Run the GitHub Actions runner as the correct user | COMMENT |
| LOW⚡ | extras/scaler/internal/gcp/startup.sh | 296 | # Step 4: Shut down the VM | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | source/core/core_lldb.py | 34 | # Check if a pointer is nullptr | COMMENT |
| LOW | .claude/hooks/stop.py | 24 | # Check if this is an assistant message with TodoWrite tool use | COMMENT |
| LOW | .claude/hooks/stop.py | 48 | # Check if all todos are completed | COMMENT |
| LOW | .claude/hooks/stop.py | 84 | # Check if validation returned a tuple (incomplete todos found) | COMMENT |
| LOW | .claude/hooks/pre_tool_use.py | 17 | # Check if this is a Bash tool with git add/commit command | COMMENT |
| LOW | .claude/hooks/pre_tool_use.py | 21 | # Check if command starts with git add or git commit | COMMENT |
| LOW | docs/scripts/release-note.sh | 101 | # Check if the PR is marked as a breaking change | COMMENT |
| LOW | .github/workflows/release.yml | 196 | # Check if symlink exists | COMMENT |
| LOW | .github/workflows/release.yml | 210 | # Check if resolved file exists | COMMENT |
| LOW | .github/workflows/ci-slang-sanitizer.yml | 329 | # Check if all findings in this log are expected. | COMMENT |
| LOW | .github/workflows/ci-slang-sanitizer.yml | 351 | # Check if any Direct leak block matches an expected pattern. | COMMENT |
| LOW | .github/workflows/ci-materialx-regression-test.yml | 177 | # Check if shader was created | COMMENT |
| LOW | .github/actions/common-test-setup/action.yml | 98 | # Check if the output contains "llvm" (case-insensitive) | COMMENT |
| LOW | extras/verify-documented-compiler-version.sh | 9 | # Check if required files exist | COMMENT |
| LOW | extras/verify-documented-compiler-version.sh | 122 | # Check if current version matches any expected version | COMMENT |
| LOW | extras/split-ir-dump.py | 138 | # Check if we're reading from stdin or a file | COMMENT |
| LOW | extras/install-git-hooks.sh | 40 | # Check if hook already exists | COMMENT |
| LOW | extras/update-spirv-tools.sh | 30 | # Check if we're in the repository root | COMMENT |
| LOW | extras/check-markdown-relative-links.py | 75 | # Check if this is a relative path outside the | STRING |
| LOW⚡ | extras/repro-remix.sh | 135 | # Check if file exists | COMMENT |
| LOW⚡ | extras/repro-remix.sh | 145 | # Check if Slang section is already commented out | COMMENT |
| LOW | extras/check-inst-version-changes.sh | 14 | # Check if running in GitHub Actions | COMMENT |
| LOW | extras/check-inst-version-changes.sh | 32 | # Check if slang-ir.h was modified and if the version constants were changed | COMMENT |
| LOW | extras/check-inst-version-changes.sh | 34 | # Check if either version constant was modified | COMMENT |
| LOW | extras/check-inst-version-changes.sh | 49 | # Check if the serialization version constant was modified | COMMENT |
| LOW | extras/check-inst-version-changes.sh | 108 | # Check if we need to add warnings | COMMENT |
| LOW | extras/check-inst-version-changes.sh | 110 | # Check if the version constants have already been updated | COMMENT |
| LOW | extras/check-inst-version-changes.sh | 134 | # Check if the serialization version has already been updated | COMMENT |
| LOW | extras/check-inst-version-changes.sh | 175 | # Set output to indicate artifact was created | COMMENT |
| LOW | extras/check-inst-version-changes.sh | 184 | # Set output to indicate no artifact was created | COMMENT |
| LOW | extras/ci/analytics/ci_post_status.py | 178 | # Check if there are changes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/coverage-html/slang-coverage-merge.py | 177 | CODE | |
| LOW | tools/coverage-html/slang-coverage-html.py | 1033 | CODE | |
| LOW | tools/coverage-html/lcov_io.py | 523 | CODE | |
| LOW | tools/shader-coverage/slang-coverage-to-lcov.py | 147 | CODE | |
| LOW | tools/shader-coverage/slang-coverage-to-lcov.py | 190 | CODE | |
| LOW | tools/compile-perf/breakdown.py | 385 | CODE | |
| LOW | tools/compile-perf/track.py | 44 | CODE | |
| LOW | tools/compile-perf/track.py | 214 | CODE | |
| LOW | tools/compile-perf/bench.py | 34 | CODE | |
| LOW | tools/compile-perf/bench.py | 230 | CODE | |
| LOW | tools/compile-perf/fetch_releases.py | 105 | CODE | |
| LOW | tools/compile-perf/sweep.py | 25 | CODE | |
| LOW | tools/compile-perf/lib/analyze.py | 110 | CODE | |
| LOW | .claude/hooks/stop.py | 9 | CODE | |
| LOW | .claude/hooks/stop.py | 61 | CODE | |
| LOW | .claude/hooks/pre_tool_use.py | 9 | CODE | |
| LOW | …slang-review-post-github/scripts/post_github_review.py | 175 | CODE | |
| LOW | …slang-review-post-github/scripts/post_github_review.py | 424 | CODE | |
| LOW | extras/insttrace.py | 20 | CODE | |
| LOW | extras/ci-gpu-stress-loop.py | 284 | CODE | |
| LOW | extras/ci-gpu-stress-loop.py | 351 | CODE | |
| LOW | extras/ci-gpu-stress-loop.py | 627 | CODE | |
| LOW | extras/split-ir-dump.py | 55 | CODE | |
| LOW | extras/extract-spirv-sources.py | 452 | CODE | |
| LOW | extras/extract-spirv-sources.py | 165 | CODE | |
| LOW | extras/extract-spirv-sources.py | 323 | CODE | |
| LOW | extras/extract-spirv-sources.py | 167 | CODE | |
| LOW | extras/check-markdown-relative-links.py | 44 | CODE | |
| LOW | extras/ci/gh_api.py | 90 | CODE | |
| LOW | extras/ci/ci-queue-status.py | 108 | CODE | |
| LOW | extras/ci/ci-queue-status.py | 266 | CODE | |
| LOW | extras/ci/ci-queue-status.py | 404 | CODE | |
| LOW | extras/ci/ci-queue-status.py | 460 | CODE | |
| LOW | extras/ci/analytics/ci_job_collector.py | 205 | CODE | |
| LOW | extras/ci/analytics/ci_job_collector.py | 435 | CODE | |
| LOW | extras/ci/analytics/ci_post_status.py | 228 | CODE | |
| LOW | extras/ci/analytics/ci_visualization.py | 341 | CODE | |
| LOW | extras/ci/analytics/ci_visualization.py | 653 | CODE | |
| LOW | extras/ci/analytics/ci_visualization.py | 663 | CODE | |
| LOW | extras/ci/analytics/ci_health.py | 404 | CODE | |
| LOW | extras/ci/analytics/ci_health.py | 1149 | CODE | |
| LOW | extras/ci/analytics/ci_health.py | 1235 | CODE | |
| LOW | extras/ci/analytics/ci_hosted_runner_usage.py | 124 | CODE | |
| LOW | extras/ci/analytics/pr_collector.py | 80 | CODE | |
| LOW | extras/ci/analytics/tests/test_ci_analytics.py | 290 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .claude/hooks/stop.py | 88 | # Create a detailed message about incomplete todos | COMMENT |
| MEDIUM | .github/workflows/ci-slang-build.yml | 275 | # Create a staging directory for artifacts with config-specific subdirectory | COMMENT |
| MEDIUM | .github/workflows/ci-slang-build-container.yml | 173 | # Create a staging directory for artifacts with config-specific subdirectory | COMMENT |
| MEDIUM | extras/split-ir-dump.py | 115 | # Create an index file | COMMENT |
| MEDIUM⚡ | extras/repro-remix.sh | 182 | # Create the directory (packman didn't create it since we commented it out) | COMMENT |
| MEDIUM⚡ | extras/ci/analytics/tests/test_ci_analytics.py | 1126 | # Create a monthly file and a non-monthly file | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/pr-board-sync.yml | 8 | # on the event-driven happy path, | COMMENT |
| MEDIUM | .github/workflows/pr-board-sync.yml | 33 | # This is the event-driven half of the slang-pr-maintenance state machine. It | COMMENT |
| MEDIUM | .github/workflows/nightly-slang-test.yml | 5 | # This is Phase B2 of the agentic-tests framework — the suite is | COMMENT |
| MEDIUM | .github/workflows/nightly-slang-test.yml | 119 | # `OpSource Unknown`. The agentic suite was generated against | COMMENT |
| MEDIUM | .github/workflows/ci-slang-coverage-test.yml | 272 | # --with-agentic-tests rolls the doc-anchored bundles under | COMMENT |
| MEDIUM | .github/workflows/ci-slang-coverage-test.yml | 276 | # agentic pass uses the same gate as nightly-slang-test.yml | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/gfx-unit-test/gfx-test-texture-util.cpp | 165 | // TODO: Add testing support for BC formats | COMMENT |
| LOW | tools/slang-fiddle/slang-fiddle-template.cpp | 417 | // TODO: implement the important stuff... | COMMENT |
| LOW | tools/gfx/immediate-renderer-base.cpp | 708 | // TODO: implement fence signal. | COMMENT |
| LOW | tools/gfx/cuda/cuda-command-queue.cpp | 45 | // TODO: implement fence. | COMMENT |
| LOW | source/slang/slang-parser.cpp | 101 | // TODO: implement two pass parsing for file reference and struct type recognition | COMMENT |
| LOW | source/slang/slang-compile-request.cpp | 613 | // TODO: implement the logic to output generated documents to target directory/zip file. | COMMENT |
| LOW | source/slang/slang-ir-legalize-types.cpp | 359 | // TODO: implement legalization of non-simple return types | COMMENT |
| LOW | source/slang/slang-ir-legalize-types.cpp | 455 | // TODO: implement legalization of non-simple return types | COMMENT |
| LOW | source/slang/slang-ir-legalize-types.cpp | 555 | // TODO: implement legalization of non-simple return types | COMMENT |
| LOW | source/slang/slang-ir-legalize-types.cpp | 689 | // TODO: implement legalization of non-simple return types | COMMENT |
| LOW | source/slang/slang-reflection-api.cpp | 254 | // TODO: implement more helpers here | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | source/slang/slang-ast-decl.h | 308 | // we have auto-generated code for things like dumping and serialization | COMMENT |
| HIGH | source/slang/slang-ir-insts.h | 3371 | // Keep the 1,2,3,4 parameter helper methods as requested | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | source/compiler-core/slang-spirv-core-grammar.h | 70 | // Adding to this? Don't forget to update the embedding generator | COMMENT |
| LOW | source/compiler-core/slang-perfect-hash.cpp | 42 | // If you change this, don't forget to also sync the version below in | COMMENT |
| MEDIUM | source/slang/slang-ir-legalize-varying-params.cpp | 796 | // As discussed above, sometimes `varLayout` will refer to an | COMMENT |
| MEDIUM | source/slang/slang-ir-synthesize-active-mask.cpp | 1567 | // As discussed above, we only process the first `case` with | COMMENT |
| LOW | source/slang/slang-lower-to-ir.cpp | 15620 | // that if we have obfuscation enabled we don't forget to obfuscate. | COMMENT |
| LOW | external/bump-glslang.sh | 234 | echo "Please also don't forget to push the new commits in external/glslang and" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/coverage-html/slang-coverage-merge.py | 38 | CODE | |
| LOW | tools/coverage-html/slang-coverage-html.py | 38 | CODE | |
| LOW | tools/coverage-html/lcov_io.py | 20 | CODE | |
| LOW | tools/coverage-html/tests/test_merge.py | 11 | CODE | |
| LOW | .claude/hooks/pre_tool_use.py | 6 | CODE | |
| LOW | …slang-review-post-github/scripts/post_github_review.py | 8 | CODE | |
| LOW | …-review-post-github/scripts/test_post_github_review.py | 4 | CODE | |
| LOW | extras/split-ir-dump.py | 25 | CODE | |
| LOW | extras/extract-spirv-sources.py | 21 | CODE | |
| LOW | extras/ci/analyze-ci-parallelization.py | 32 | CODE | |
| LOW | extras/ci/ci-queue-status.py | 26 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/coverage-html/tests/test_renderer.py | 501 | out_dir = os.path.join(self.tmp, "placeholder") | CODE |
| LOW⚡ | tools/slang-unit-test/unit-test-crypto.cpp | 50 | const String str("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " | CODE |
| LOW⚡ | tools/slang-unit-test/unit-test-crypto.cpp | 50 | const String str("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " | CODE |
| LOW⚡ | tools/slang-unit-test/unit-test-crypto.cpp | 60 | const String str1("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " | CODE |
| LOW⚡ | tools/slang-unit-test/unit-test-crypto.cpp | 60 | const String str1("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " | CODE |
| LOW | tools/slang-unit-test/unit-test-crypto.cpp | 74 | const String str("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " | CODE |
| LOW | tools/slang-unit-test/unit-test-crypto.cpp | 74 | const String str("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/shader-coverage-tutorial/run-tutorial.sh | 11 | # Usage: | COMMENT |
| LOW | extras/falcor.sh | 38 | # Usage: | COMMENT |
| LOW | extras/compile-sascha-willems-shaders.sh | 11 | # Usage: | COMMENT |
| LOW | extras/repro-remix.sh | 10 | # Usage: | COMMENT |
| LOW | extras/scaler/deploy/update-scaler.sh | 6 | # Usage: | COMMENT |
| LOW | extras/scaler/deploy/setup-scaler-host.sh | 12 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/user-guide/06-interfaces-generics.md | 21 | Slang's syntax for defining interfaces is similar to `interface`s in C# and `protocol`s in Swift. In this example, the ` | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …-review-post-github/scripts/test_post_github_review.py | 23 | CODE |