AI Slop Code RIsk Monitor

Breakthrough/PySceneDetect

:movie_camera: Python and OpenCV-based scene cut/transition detection program & library.

29.2 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for Breakthrough/PySceneDetect, a Python project with 5,227 GitHub stars. SynthScan examined 29,470 lines of code across 134 source files, recording 525 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 29.2 (Elevated pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

29.2
Adjusted Signal
29.2
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
5.2K
Stars
Python
Language
29.5K
Lines of Code
134
Files
525
Pattern Hits
2026-10-12
Scan Date
0.28
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 44.8/100 · MEDIUM

Can maintainers explain intent, assumptions, and trade-offs? 335 finding(s).

Hallucinated Dependency & Supply Chain Risk 15.7/100 · LOW

Are imports declared and package/API names verified? 65 finding(s).

Agent Over-Engineering Ratio 63.5/100 · HIGH

Are wrappers, guards, and repeated structures necessary? 314 finding(s).

PR Review Velocity Impact 78.7/100 · CRITICAL

Which changes need focused human review? 525 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 38MEDIUM 98LOW 389

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 525 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Decorative Section Separators88 hits · 267 pts
SeverityFileLineSnippetContext
MEDIUMpyproject.toml3# ---------------------------------------------------------------COMMENT
MEDIUMbenchmark/report_sweep.py3# -------------------------------------------------------------------COMMENT
MEDIUMbenchmark/_common.py3# -------------------------------------------------------------------COMMENT
MEDIUMbenchmark/dataset.py3# -------------------------------------------------------------------COMMENT
MEDIUMbenchmark/analyze_sweep.py3# -------------------------------------------------------------------COMMENT
MEDIUMbenchmark/sweep.py3# -------------------------------------------------------------------COMMENT
MEDIUMbenchmark/evaluator.py3# -------------------------------------------------------------------COMMENT
MEDIUMbenchmark/__main__.py3# -------------------------------------------------------------------COMMENT
MEDIUMpackaging/build_all.py3# ---------------------------------------------------------------COMMENT
MEDIUMpackaging/variants/pyproject-scenedetect-headless.toml3# ---------------------------------------------------------------COMMENT
MEDIUMpackaging/variants/pyproject-scenedetect.toml3# ---------------------------------------------------------------COMMENT
MEDIUMpackaging/windows/pyi_rth_scenedetect.py3# ---------------------------------------------------------------COMMENT
MEDIUMtests/test_stats_manager.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/test_backend_pyav.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/test_detectors.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/conftest.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/test_scene_manager.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/test_benchmark_evaluator.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/test_video_stream.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/test_backend_opencv.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/test_timecode.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/__init__.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/test_output.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/test_concat.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/test_threshold_detector.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/test_fan_out.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/test_platform.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/test_api.py3# -------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_cli.py225 # -------------------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_cli.py227 # -------------------------------------------------------------------------------------COMMENT
MEDIUMtests/test_cli.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/test_cli.py239 # -------------------------------------------------------------------------------------COMMENT
MEDIUMtests/helpers.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/test_vfr.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/test_vfr.py279# ------------------------------------------------------------------COMMENT
MEDIUMtests/test_vfr.py281# ------------------------------------------------------------------COMMENT
MEDIUMtests/release/synthetic.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/release/conftest.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/release/test_validation.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/release/test_cli_permutations.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/release/test_long_video.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/release/test_backends.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/release/test_input_matrix.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/release/test_golden.py3# -------------------------------------------------------------------COMMENT
MEDIUMtests/release/test_vfr.py3# -------------------------------------------------------------------COMMENT
MEDIUMscenedetect/detector.py3# -------------------------------------------------------------------COMMENT
MEDIUMscenedetect/scene_manager.py3# -------------------------------------------------------------------COMMENT
MEDIUMscenedetect/stats_manager.py3# -------------------------------------------------------------------COMMENT
MEDIUMscenedetect/__init__.py3# -------------------------------------------------------------------COMMENT
MEDIUMscenedetect/platform.py3# -------------------------------------------------------------------COMMENT
MEDIUMscenedetect/frame_timecode.py3# -------------------------------------------------------------------COMMENT
MEDIUMscenedetect/common.py3# -------------------------------------------------------------------COMMENT
MEDIUMscenedetect/scene_detector.py3# -------------------------------------------------------------------COMMENT
MEDIUMscenedetect/video_splitter.py3# -------------------------------------------------------------------COMMENT
MEDIUMscenedetect/video_stream.py3# -------------------------------------------------------------------COMMENT
MEDIUMscenedetect/__main__.py3# -------------------------------------------------------------------COMMENT
MEDIUMscenedetect/_fan_out.py3# -------------------------------------------------------------------COMMENT
MEDIUMscenedetect/backends/moviepy.py3# -------------------------------------------------------------------COMMENT
MEDIUMscenedetect/backends/pyav.py3# -------------------------------------------------------------------COMMENT
MEDIUMscenedetect/backends/concat.py3# -------------------------------------------------------------------COMMENT
28 more matches not shown…
Hyper-Verbose Identifiers184 hits · 177 pts
SeverityFileLineSnippetContext
LOWbenchmark/evaluator.py182 def mean_abs_offset_hard_cuts(self) -> float:CODE
LOWtests/test_stats_manager.py101def test_save_no_detect_scenes(tmp_path: Path):CODE
LOWtests/test_stats_manager.py137def test_save_load_from_video(test_video_file, tmp_path: Path):CODE
LOWtests/test_backend_pyav.py29def test_video_stream_pyav_bytesio(test_video_file: str, auto_close):CODE
LOWtests/test_backend_pyav.py63def test_read_tolerates_corrupt_frame(test_video_file: str, auto_close):CODE
LOWtests/test_backend_pyav.py83def test_read_gives_up_after_consecutive_failures(test_video_file: str, caplog, auto_close):CODE
LOWtests/test_backend_pyav.py100def test_rationals_are_fractions(test_video_file: str, auto_close):CODE
LOWtests/test_backend_pyav.py122def test_to_fraction_from_stub_rational():CODE
LOWtests/test_backend_pyav.py142def test_duration_fallback_from_stream_duration(CODE
LOWtests/test_backend_pyav.py160def test_aspect_ratio_unset_dar(CODE
LOWtests/test_backend_pyav.py177def test_rate_normalizes_stream_rational(CODE
LOWtests/test_backend_pyav.py190def test_duration_fallback_unset_time_base(CODE
LOWtests/test_detectors.py141def get_fade_in_out_test_cases():CODE
LOWtests/test_detectors.py216def test_detectors_with_stats(test_video_file):CODE
LOWtests/test_detectors.py247def test_min_scene_len_accepts_time_values(detector_type, min_scene_len):CODE
LOWtests/test_detectors.py267def test_adaptive_detector_min_scene_len_uses_target_frame():CODE
LOWtests/conftest.py70def pytest_assertrepr_compare(op, left, right):STRING
LOWtests/test_scene_manager.py64def test_get_scene_list_start_in_scene(test_video_file):CODE
LOWtests/test_scene_manager.py109def test_detect_scenes_callback(test_video_file):CODE
LOWtests/test_scene_manager.py145def test_detect_scenes_callback_adaptive(test_video_file):CODE
LOWtests/test_scene_manager.py215def test_expand_scenes_to_bounds_two_scenes():CODE
LOWtests/test_scene_manager.py230def test_expand_scenes_to_bounds_empty():CODE
LOWtests/test_scene_manager.py236def test_expand_scenes_to_bounds_single_scene():CODE
LOWtests/test_scene_manager.py250def test_expand_scenes_to_bounds_does_not_mutate_input():CODE
LOW⚡tests/test_benchmark_evaluator.py49def test_hard_tolerance_one_admits_one_frame_offset():CODE
LOW⚡tests/test_benchmark_evaluator.py55def test_hard_tolerance_one_rejects_two_frame_offset():CODE
LOW⚡tests/test_benchmark_evaluator.py60def test_hard_greedy_picks_closer_match():CODE
LOW⚡tests/test_benchmark_evaluator.py68def test_hard_equidistant_tie_resolves_deterministically():CODE
LOW⚡tests/test_benchmark_evaluator.py77def test_hard_one_to_one_no_double_assignment():CODE
LOW⚡tests/test_benchmark_evaluator.py114def test_fade_pred_inside_interval_is_match():CODE
LOW⚡tests/test_benchmark_evaluator.py120def test_fade_pred_outside_interval_not_consumed():CODE
LOW⚡tests/test_benchmark_evaluator.py126def test_fade_multiple_preds_in_same_interval():CODE
LOW⚡tests/test_benchmark_evaluator.py136def test_fade_interval_endpoints_inclusive():CODE
LOWtests/test_benchmark_evaluator.py38def test_hard_exact_match_tolerance_zero():CODE
LOWtests/test_benchmark_evaluator.py93def test_hard_empty_preds_with_nonempty_gt():CODE
LOWtests/test_benchmark_evaluator.py101def test_hard_empty_gt_with_nonempty_preds():CODE
LOWtests/test_benchmark_evaluator.py147def test_score_video_fade_consumes_pred_before_hard():CODE
LOWtests/test_benchmark_evaluator.py159def test_score_video_pred_outside_fade_falls_to_hard():CODE
LOWtests/test_benchmark_evaluator.py172def test_mean_abs_offset_only_hard_matches_tolerance_zero():CODE
LOWtests/test_benchmark_evaluator.py184def test_mean_abs_offset_only_hard_matches_tolerance_one():CODE
LOWtests/test_benchmark_evaluator.py196def test_mean_abs_offset_nan_when_no_matches():CODE
LOWtests/test_benchmark_evaluator.py202def test_benchmark_result_mean_abs_offset_nan_when_no_matches_across_videos():CODE
LOWtests/test_benchmark_evaluator.py227def test_benchmark_result_aggregate_matches_sum_of_counts():CODE
LOWtests/test_benchmark_evaluator.py256def test_benchmark_result_by_category_buckets_videos():CODE
LOWtests/test_benchmark_evaluator.py281def test_benchmark_result_by_category_buckets_untagged_videos_as_unknown():CODE
LOWtests/test_benchmark_evaluator.py307def test_event_metrics_addition():CODE
LOWtests/test_benchmark_evaluator.py314def test_event_metrics_to_dict_round_trip():CODE
LOWtests/test_video_stream.py44def get_moviepy_major_version() -> int:CODE
LOWtests/test_video_stream.py361def test_framerate_legacy_alias(vs_type: ty.Callable[..., VideoStream], auto_close):CODE
LOWtests/test_video_stream.py397def test_decode_failures_clean_video(vs_type: ty.Callable[..., VideoStream], auto_close):CODE
LOWtests/test_video_stream.py406def test_delayed_start_normalized(CODE
LOWtests/test_backend_opencv.py45def test_open_png_sequence_skips_ffmpeg_probe(test_image_sequence: str, monkeypatch):CODE
LOWtests/test_backend_opencv.py80def test_capture_adapter_framerate_legacy_alias(test_movie_clip: str):CODE
LOWtests/test_backend_opencv.py99def test_decode_failures_exposed(corrupt_video_file: str):CODE
LOW⚡tests/test_timecode.py412def test_ntsc_framerate_detection_arbitrary_base():CODE
LOW⚡tests/test_timecode.py419def test_ntsc_framerate_detection_low_precision():CODE
LOW⚡tests/test_timecode.py426def test_framerate_to_fraction_non_ntsc_fallback():CODE
LOW⚡tests/test_timecode.py456def test_frame_timecode_accepts_rational_fps():CODE
LOW⚡tests/test_timecode.py462def test_frame_timecode_rejects_integral_fps():CODE
LOW⚡tests/test_timecode.py471def test_timecode_normalizes_rational_time_base():CODE
124 more matches not shown…
Over-Commented Block111 hits · 108 pts
SeverityFileLineSnippetContext
LOWappveyor.yml61 # moviepy.config reads FFMPEG_BINARY (which routes through imageio_ffmpeg) at import time.COMMENT
LOWappveyor.yml101 # Re-sync APPDIR from CI's dist/scenedetect (handles drift between local andCOMMENT
LOWscenedetect.cfg1COMMENT
LOWscenedetect.cfg21# GLOBAL OPTIONSCOMMENT
LOWscenedetect.cfg41# Video backend interface, must be one of: opencv, pyav, moviepy.COMMENT
LOWscenedetect.cfg61# Amount of frames to skip between performing scene detection. Not recommended.COMMENT
LOWscenedetect.cfg81COMMENT
LOWscenedetect.cfg101# Weight to place on each component when calculating frame score (the valueCOMMENT
LOWscenedetect.cfg121# merge: Consecutive scenes shorter than min-scene-len are combined.COMMENT
LOWscenedetect.cfg141#min-scene-len = 0.6sCOMMENT
LOWscenedetect.cfg161# Percent from -100.0 to 100.0 of timecode skew for where cuts should be placed.COMMENT
LOWscenedetect.cfg181#COMMENT
LOWscenedetect.cfg201# Use mkvmerge for copying instead of encoding. Has the same drawbacks as copy = yes.COMMENT
LOWscenedetect.cfg221# Folder to output videos. Overrides [global] output option.COMMENT
LOWscenedetect.cfg241# seconds with `s` suffix (0.1s), or timecode (00:00:00.100).COMMENT
LOWscenedetect.cfg261COMMENT
LOWscenedetect.cfg281# Filename format to use when saving scene list. $VIDEO_NAME can be used toCOMMENT
LOWscenedetect.cfg321# Folder to output EDL file to. Overrides [global] output option.COMMENT
LOWscenedetect.cfg361#filename = $VIDEO_NAME-keyframes.txtCOMMENT
LOWscenedetect.cfg381#COMMENT
LOWbenchmark/report_sweep.py1#COMMENT
LOWbenchmark/_common.py1#COMMENT
LOWbenchmark/dataset.py1#COMMENT
LOWbenchmark/analyze_sweep.py1#COMMENT
LOWbenchmark/sweep.py1#COMMENT
LOWbenchmark/evaluator.py1#COMMENT
LOWbenchmark/__main__.py1#COMMENT
LOWpackaging/variants/pyproject-scenedetect-headless.toml1#COMMENT
LOWpackaging/variants/pyproject-scenedetect.toml1#COMMENT
LOWpackaging/windows/pyi_rth_scenedetect.py1#COMMENT
LOWtests/test_stats_manager.py1#COMMENT
LOWtests/test_backend_pyav.py1#COMMENT
LOWtests/test_detectors.py1#COMMENT
LOWtests/conftest.py1#COMMENT
LOWtests/test_scene_manager.py1#COMMENT
LOWtests/test_benchmark_evaluator.py1#COMMENT
LOWtests/test_video_stream.py1#COMMENT
LOWtests/test_backend_opencv.py1#COMMENT
LOWtests/test_timecode.py1#COMMENT
LOWtests/__init__.py1#COMMENT
LOWtests/test_output.py1#COMMENT
LOWtests/test_concat.py1#COMMENT
LOWtests/test_threshold_detector.py1#COMMENT
LOWtests/test_fan_out.py1#COMMENT
LOWtests/test_platform.py1#COMMENT
LOWtests/test_api.py1#COMMENT
LOWtests/test_cli.py1#COMMENT
LOWtests/test_cli.py221COMMENT
LOWtests/helpers.py1#COMMENT
LOWtests/test_vfr.py1#COMMENT
LOWtests/release/synthetic.py1#COMMENT
LOWtests/release/conftest.py1#COMMENT
LOWtests/release/test_validation.py1#COMMENT
LOWtests/release/test_cli_permutations.py1#COMMENT
LOWtests/release/test_long_video.py1#COMMENT
LOWtests/release/test_backends.py1#COMMENT
LOWtests/release/test_input_matrix.py1#COMMENT
LOWtests/release/test_golden.py1#COMMENT
LOWtests/release/test_vfr.py1#COMMENT
LOWscenedetect/detector.py1#COMMENT
51 more matches not shown…
Cross-File Repetition16 hits · 80 pts
SeverityFileLineSnippetContext
HIGHtests/test_detectors.py0returns the absolute path to a (relative) path of a file that should exist within the tests/ directory. throws filenotfoSTRING
HIGHtests/conftest.py0returns the absolute path to a (relative) path of a file that should exist within the tests/ directory. throws filenotfoSTRING
HIGHtests/test_video_stream.py0returns the absolute path to a (relative) path of a file that should exist within the tests/ directory. throws filenotfoSTRING
HIGHtests/test_detectors.py0test video file ({path}) must be present to run test case. this file can be obtained by running the following commands fSTRING
HIGHtests/test_video_stream.py0test video file ({path}) must be present to run test case. this file can be obtained by running the following commands fSTRING
HIGHtests/conftest.py0test video file ({path}) must be present to run test case. this file can be obtained by running the following commands fSTRING
HIGHscenedetect/video_stream.py0duration of the stream as a frametimecode, or none if non terminating.STRING
HIGHscenedetect/backends/moviepy.py0duration of the stream as a frametimecode, or none if non terminating.STRING
HIGHscenedetect/backends/opencv.py0duration of the stream as a frametimecode, or none if non terminating.STRING
HIGHscenedetect/video_stream.py0reported size of each video frame in pixels as a tuple of (width, height).STRING
HIGHscenedetect/backends/moviepy.py0reported size of each video frame in pixels as a tuple of (width, height).STRING
HIGHscenedetect/backends/pyav.py0reported size of each video frame in pixels as a tuple of (width, height).STRING
HIGHscenedetect/backends/opencv.py0reported size of each video frame in pixels as a tuple of (width, height).STRING
HIGHscenedetect/backends/moviepy.py0close and re-open the videostream (should be equivalent to calling `seek(0)`).STRING
HIGHscenedetect/backends/pyav.py0close and re-open the videostream (should be equivalent to calling `seek(0)`).STRING
HIGHscenedetect/backends/opencv.py0close and re-open the videostream (should be equivalent to calling `seek(0)`).STRING
Unused Imports55 hits · 50 pts
SeverityFileLineSnippetContext
LOWbenchmark/report_sweep.py25CODE
LOWbenchmark/_common.py20CODE
LOWbenchmark/analyze_sweep.py40CODE
LOWbenchmark/sweep.py38CODE
LOWbenchmark/evaluator.py29CODE
LOWbenchmark/__main__.py20CODE
LOWtests/test_benchmark_evaluator.py17CODE
LOWtests/test_fan_out.py14CODE
LOWscenedetect/scene_manager.py100CODE
LOWscenedetect/__init__.py35CODE
LOWscenedetect/__init__.py35CODE
LOWscenedetect/__init__.py35CODE
LOWscenedetect/__init__.py35CODE
LOWscenedetect/__init__.py48CODE
LOWscenedetect/__init__.py48CODE
LOWscenedetect/__init__.py48CODE
LOWscenedetect/__init__.py48CODE
LOWscenedetect/__init__.py48CODE
LOWscenedetect/__init__.py48CODE
LOWscenedetect/__init__.py48CODE
LOWscenedetect/__init__.py48CODE
LOWscenedetect/__init__.py48CODE
LOWscenedetect/__init__.py48CODE
LOWscenedetect/__init__.py61CODE
LOWscenedetect/__init__.py61CODE
LOWscenedetect/__init__.py61CODE
LOWscenedetect/__init__.py61CODE
LOWscenedetect/__init__.py61CODE
LOWscenedetect/__init__.py68CODE
LOWscenedetect/__init__.py68CODE
LOWscenedetect/__init__.py68CODE
LOWscenedetect/__init__.py68CODE
LOWscenedetect/__init__.py78CODE
LOWscenedetect/__init__.py25CODE
LOWscenedetect/frame_timecode.py22CODE
LOWscenedetect/scene_detector.py22CODE
LOWscenedetect/video_splitter.py22CODE
LOWscenedetect/_fan_out.py23CODE
LOWscenedetect/backends/__init__.py95CODE
LOWscenedetect/backends/__init__.py96CODE
LOWscenedetect/backends/__init__.py97CODE
LOWscenedetect/output/__init__.py46CODE
LOWscenedetect/output/__init__.py47CODE
LOWscenedetect/output/__init__.py50CODE
LOWscenedetect/output/__init__.py53CODE
LOWscenedetect/output/__init__.py56CODE
LOWscenedetect/output/__init__.py59CODE
LOWscenedetect/output/__init__.py62CODE
LOWscenedetect/output/__init__.py65CODE
LOWscenedetect/output/__init__.py68CODE
LOWscenedetect/detectors/__init__.py38CODE
LOWscenedetect/detectors/__init__.py39CODE
LOWscenedetect/detectors/__init__.py40CODE
LOWscenedetect/detectors/__init__.py41CODE
LOWscenedetect/detectors/__init__.py42CODE
Empty Error Handlers10 hits · 50 pts
SeverityFileLineSnippetContext
HIGHbenchmark/sweep.py77except ValueError:CODE
HIGHbenchmark/sweep.py81except ValueError:CODE
HIGHbenchmark/evaluator.py209except ValueError:CODE
HIGHscenedetect/platform.py261except OSError:CODE
HIGHscenedetect/platform.py271except ModuleNotFoundError:CODE
HIGHscenedetect/platform.py274except OSError:CODE
HIGHscenedetect/platform.py277except RuntimeError:CODE
HIGHscenedetect/platform.py332except importlib.metadata.PackageNotFoundError:CODE
HIGHscenedetect/backends/pyav.py184except Exception:CODE
HIGHscenedetect/output/image.py222except queue.Empty:CODE
Cross-Language Confusion10 hits · 50 pts
SeverityFileLineSnippetContext
HIGHtests/test_cli.py1117 "available_image_bounds": null,CODE
HIGHtests/test_cli.py1157 "available_image_bounds": null,CODE
HIGHtests/test_cli.py1205 "available_image_bounds": null,CODE
HIGHtests/test_cli.py1245 "available_image_bounds": null,CODE
HIGHtests/test_cli.py1335 "available_image_bounds": null,CODE
HIGHtests/test_cli.py1375 "available_image_bounds": null,CODE
HIGHscenedetect/detectors/transnet_v2.py79 cuts.extend(self.det.push(pred[i, 25:75, 0], time[i, 25:75]))CODE
HIGHscenedetect/detectors/transnet_v2.py178 cuts = self.predictor.push(self.px[self.j], self.time[self.j])CODE
HIGHscenedetect/detectors/transnet_v2.py199 cuts.extend(self.predictor.push(self.px[self.j], self.time[self.j]))CODE
HIGHscenedetect/detectors/transnet_v2.py205 cuts.extend(self.predictor.push(self.px[self.j], self.time[self.j]))CODE
Deep Nesting21 hits · 21 pts
SeverityFileLineSnippetContext
LOWbenchmark/dataset.py173CODE
LOWbenchmark/evaluator.py269CODE
LOWtests/helpers.py24CODE
LOWscenedetect/scene_manager.py410CODE
LOWscenedetect/scene_manager.py446CODE
LOWscenedetect/scene_manager.py625CODE
LOWscenedetect/stats_manager.py221CODE
LOWscenedetect/common.py505CODE
LOWscenedetect/_fan_out.py123CODE
LOWscenedetect/backends/opencv.py262CODE
LOWscenedetect/backends/opencv.py306CODE
LOWscenedetect/output/video.py255CODE
LOWscenedetect/output/image.py38CODE
LOWscenedetect/output/image.py352CODE
LOWscenedetect/_cli/config.py585CODE
LOWscenedetect/_cli/config.py156CODE
LOWscenedetect/_cli/context.py176CODE
LOWscenedetect/detectors/threshold_detector.py111CODE
LOWscripts/validate_release.py209CODE
LOWscripts/generate_goldens.py59CODE
LOWscripts/_release_common.py67CODE
AI Slop Vocabulary6 hits · 14 pts
SeverityFileLineSnippetContext
MEDIUMbenchmark/sweep.py98 # Small epsilon to keep an inclusive upper bound robust against float drift.COMMENT
LOW⚡tests/test_timecode.py496 # Should not raise or warn - just return the approximate frame number.COMMENT
LOWscenedetect/backends/opencv.py324 # We didn't manage to grab a frame even after retrying, so just return.COMMENT
LOWscenedetect/backends/opencv.py561 # We didn't manage to grab a frame even after retrying, so just return.COMMENT
MEDIUMscenedetect/detectors/histogram_detector.py94 # TODO: We can have EMA of histograms to make it more robustCOMMENT
MEDIUMscenedetect/detectors/content_detector.py42 # Create a more comprehensive test suite to optimize against.COMMENT
Excessive Try-Catch Wrapping9 hits · 11 pts
SeverityFileLineSnippetContext
LOWtests/release/test_validation.py137 except Exception as exc:CODE
LOWtests/release/test_backends.py71 except Exception as exc:CODE
LOWtests/release/test_backends.py122 except Exception as exc:CODE
LOWscenedetect/backends/pyav.py149 except Exception as ex:CODE
LOWscenedetect/backends/pyav.py184 except Exception:CODE
LOWscenedetect/backends/pyav.py324 except Exception as ex:CODE
LOWscripts/generate_goldens.py82 except Exception as e:CODE
MEDIUMscripts/stage_windows_dist.py42 print("Error: stage_windows_dist.py must be run on Windows.", file=sys.stderr)CODE
MEDIUMscripts/generate_assets.py165 print("Error: Inkscape not found. Please install it or add it to PATH.", file=sys.stderr)CODE
Docstring Block Structure2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHscenedetect/__init__.py96Open a video at the given path. If `backend` is specified but not available on the current system, OpenCV (`VideoStrSTRING
HIGHscenedetect/platform.py225Same as calling Python's subprocess.call() method, but explicitly raises a different exception when the command lengSTRING
Self-Referential Comments3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMscenedetect.cfg3# This file contains every possible PySceneDetect config option.COMMENT
MEDIUMscenedetect/detectors/histogram_detector.py158 # Create the histogram with a bin for every rgb valueCOMMENT
MEDIUMscenedetect/detectors/content_detector.py42 # Create a more comprehensive test suite to optimize against.COMMENT
AI Structural Patterns5 hits · 5 pts
SeverityFileLineSnippetContext
LOWtests/release/test_cli_permutations.py31CODE
LOWscenedetect/output/video.py255CODE
LOWscenedetect/output/image.py352CODE
LOWscenedetect/output/image.py109CODE
LOWscenedetect/_cli/__init__.py1523CODE
Dead Code1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_backend_pyav.py89CODE
Modern AI Meta-Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/release.yml33 actions: write # `gh workflow run` on the workflows this one orchestratesCODE
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWtests/test_output.py99# TODO: Add tests for `split_video_mkvmerge`.COMMENT
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWscenedetect/detectors/histogram_detector.py100 # Check if a new scene should be triggeredCOMMENT
Modern Structural Boilerplate1 hit · 1 pts
SeverityFileLineSnippetContext
LOWscenedetect/stats_manager.py137 def set_metrics(self, timecode: int | FrameTimecode, metric_kv_dict: dict[str, ty.Any]) -> None:CODE