Deduplicating archiver with compression and authenticated encryption.
This report presents the forensic synthetic code analysis of borgbackup/borg, a Python project with 13,509 GitHub stars. SynthScan v2.0 examined 68,335 lines of code across 249 source files, recording 1211 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 19.6 places this repository in the Moderate AI signal 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 1211 distinct pattern matches across 15 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 | src/borg/fslocking.py | 427 | def _wait_for_readers_finishing(self, remove, sleep): | CODE |
| LOW | src/borg/conftest.py | 196 | def maybe_clear_flags_and_retry(func, path, _exc_info): | CODE |
| LOW | src/borg/patterns.py | 127 | def get_unmatched_include_patterns(self): | CODE |
| LOW | src/borg/manifest.py | 46 | def get_first_and_last_archive_ts(archives_list): | CODE |
| LOW | src/borg/manifest.py | 513 | def check_repository_compatibility(self, operations): | CODE |
| LOW | src/borg/manifest.py | 527 | def get_all_mandatory_features(self): | CODE |
| LOW | src/borg/security.py | 147 | def assert_no_manifest_replay(self, manifest, key): | CODE |
| LOW | src/borg/cache.py | 60 | def discover_files_cache_names(path, files_cache_name="files"): | CODE |
| LOW | src/borg/cache.py | 350 | def discover_files_cache_names(self, path): | CODE |
| LOW | src/borg/cache.py | 539 | def chunkindex_fragment_entry_size(): | CODE |
| LOW | src/borg/cache.py | 554 | def list_chunkindex_fragments(repository): | CODE |
| LOW | src/borg/cache.py | 579 | def delete_chunkindex_from_repo(repository): | CODE |
| LOW | src/borg/cache.py | 593 | def _store_chunkindex_fragment(repository, batch, stored_hashes, *, force_write): | CODE |
| LOW | src/borg/cache.py | 701 | def read_chunkindex_from_repo(repository, hash): | CODE |
| LOW | src/borg/cache.py | 768 | def build_chunkindex_from_repo( | CODE |
| LOW | src/borg/cache.py | 917 | def _maybe_write_chunks_index(self, now, force=False, clear=False): | CODE |
| LOW | src/borg/cache.py | 1047 | def check_cache_compatibility(self): | CODE |
| LOW | src/borg/archive.py | 1932 | def rebuild_archives_directory(self): | CODE |
| LOW | src/borg/crypto/key.py | 144 | def encryption_argument_names(): | CODE |
| LOW | src/borg/crypto/key.py | 655 | def get_existing_or_new_target(self, args): | CODE |
| LOW | src/borg/crypto/key.py | 683 | def _find_all_keys_in_keys_dir(self): | CODE |
| LOW | src/borg/crypto/key.py | 710 | def _find_key_file_from_environment(self): | CODE |
| LOW | src/borg/testsuite/compress_test.py | 154 | def test_additive_obfuscation(specs, c_type, obfuscation_padding: int): | CODE |
| LOW | src/borg/testsuite/compress_test.py | 192 | def test_default_compression_level(c_type, c_name): | CODE |
| LOW | src/borg/testsuite/compress_test.py | 204 | def test_specified_compression_level(c_type, c_name, c_levels): | CODE |
| LOW | src/borg/testsuite/compress_test.py | 212 | def test_invalid_compression_level(invalid_spec): | CODE |
| LOW | src/borg/testsuite/compress_test.py | 254 | def test_robj_specific_obfuscation(data_length, expected_padding, robj_type): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 80 | def test_finish_returns_empty_dict(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 90 | def test_ids_returns_binary_ids(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 96 | def test_ids_store_object_not_found_gives_empty(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 102 | def test_ids_passes_deleted_flag(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 159 | def test_exists_name_and_id_true(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 165 | def test_exists_name_and_id_false_wrong_name(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 171 | def test_exists_name_and_id_false_wrong_id(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 177 | def test_exists_name_and_ts_true(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 183 | def test_exists_name_and_ts_false_wrong_ts(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 189 | def test_exists_name_and_ts_false_wrong_name(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 195 | def test_get_archive_meta_object_not_found(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 258 | def test_get_archive_meta_bad_version(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 267 | def test_get_missing_returns_none(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 273 | def test_get_returns_archive_archiveinfo(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 333 | def test_create_calls_store_store(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 339 | def test_create_with_datetime_ts(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 346 | def test_create_overwrite_kwarg_ignored(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 523 | def test_get_one_no_match_raises(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 529 | def test_get_one_multiple_matches_raises(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 537 | def test_get_one_deleted_passes_flag(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 545 | def test_list_considering_raises_if_name_set(): | CODE |
| LOW⚡ | src/borg/testsuite/archives_test.py | 553 | def test_list_considering_delegates(): | CODE |
| LOW | src/borg/testsuite/archives_test.py | 54 | def _stub_matching_info_tuples(infos): | CODE |
| LOW | src/borg/testsuite/archives_test.py | 66 | def test_archives_satisfies_archives_interface(): | CODE |
| LOW | src/borg/testsuite/archives_test.py | 210 | def test_get_archive_meta_success(): | CODE |
| LOW | src/borg/testsuite/archives_test.py | 238 | def test_get_archive_meta_success_with_tags(): | CODE |
| LOW | src/borg/testsuite/archives_test.py | 292 | def test_get_by_id_missing_returns_none(): | CODE |
| LOW | src/borg/testsuite/archives_test.py | 315 | def test_get_by_id_exists_false_returns_none(): | CODE |
| LOW | src/borg/testsuite/archives_test.py | 378 | def test_list_sort_by_str_raises(): | CODE |
| LOW | src/borg/testsuite/archives_test.py | 384 | def test_list_sort_generator_not_materialised_regression(): | CODE |
| LOW | src/borg/testsuite/archives_test.py | 439 | def test_list_deleted_passes_flag(): | CODE |
| LOW | src/borg/testsuite/archives_test.py | 453 | def test_list_match_name_prefix(): | CODE |
| LOW | src/borg/testsuite/archives_test.py | 488 | def test_list_match_aid_ambiguous(): | CODE |
| 477 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/errorlist.py | 7 | CODE | |
| LOW | scripts/errorlist.py | 8 | CODE | |
| LOW | src/borg/repoobj.py | 4 | CODE | |
| LOW | src/borg/repoobj.py | 170 | CODE | |
| LOW | src/borg/manifest.py | 15 | CODE | |
| LOW | src/borg/cache.py | 170 | CODE | |
| LOW | src/borg/cache.py | 170 | CODE | |
| LOW | src/borg/cache.py | 170 | CODE | |
| LOW | src/borg/cache.py | 170 | CODE | |
| LOW | src/borg/cache.py | 170 | CODE | |
| LOW | src/borg/fuse_impl.py | 8 | CODE | |
| LOW | src/borg/archive.py | 28 | CODE | |
| LOW | src/borg/repository.py | 15 | CODE | |
| LOW | src/borg/crypto/key.py | 17 | CODE | |
| LOW | src/borg/crypto/key.py | 991 | CODE | |
| LOW | src/borg/crypto/key.py | 992 | CODE | |
| LOW | src/borg/crypto/key.py | 994 | CODE | |
| LOW | src/borg/crypto/keymanager.py | 198 | CODE | |
| LOW | src/borg/chunkers/__init__.py | 6 | CODE | |
| LOW | src/borg/testsuite/__init__.py | 23 | CODE | |
| LOW | src/borg/testsuite/__init__.py | 23 | CODE | |
| LOW | src/borg/testsuite/__init__.py | 23 | CODE | |
| LOW | src/borg/testsuite/__init__.py | 23 | CODE | |
| LOW | src/borg/testsuite/__init__.py | 23 | CODE | |
| LOW | src/borg/testsuite/chunkers/buzhash64_self_test.py | 8 | CODE | |
| LOW | src/borg/testsuite/chunkers/buzhash64_test.py | 11 | CODE | |
| LOW | src/borg/testsuite/chunkers/fixed_self_test.py | 7 | CODE | |
| LOW | src/borg/testsuite/chunkers/buzhash_self_test.py | 8 | CODE | |
| LOW | src/borg/testsuite/chunkers/__init__.py | 4 | CODE | |
| LOW | src/borg/testsuite/chunkers/interaction_test.py | 6 | CODE | |
| LOW | src/borg/testsuite/chunkers/reader_test.py | 9 | CODE | |
| LOW | src/borg/testsuite/chunkers/fixed_test.py | 10 | CODE | |
| LOW | src/borg/testsuite/chunkers/buzhash_test.py | 10 | CODE | |
| LOW | src/borg/testsuite/chunkers/failing_test.py | 6 | CODE | |
| LOW | src/borg/testsuite/chunkers/fastcdc_test.py | 11 | CODE | |
| LOW | src/borg/testsuite/archiver/repo_list_cmd_test.py | 6 | CODE | |
| LOW | src/borg/testsuite/archiver/tar_cmds_test.py | 8 | CODE | |
| LOW | src/borg/testsuite/archiver/prune_cmd_test.py | 7 | CODE | |
| LOW | src/borg/testsuite/archiver/extract_cmd_test.py | 13 | CODE | |
| LOW | src/borg/testsuite/archiver/help_cmd_test.py | 3 | CODE | |
| LOW | src/borg/testsuite/archiver/return_codes_test.py | 3 | CODE | |
| LOW | src/borg/testsuite/archiver/list_cmd_test.py | 5 | CODE | |
| LOW | src/borg/testsuite/archiver/recreate_cmd_test.py | 8 | CODE | |
| LOW | src/borg/testsuite/archiver/delete_cmd_test.py | 1 | CODE | |
| LOW | src/borg/testsuite/archiver/debug_cmds_test.py | 5 | CODE | |
| LOW | src/borg/testsuite/archiver/compact_cmd_test.py | 6 | CODE | |
| LOW | src/borg/testsuite/archiver/repo_space_cmd_test.py | 1 | CODE | |
| LOW | src/borg/testsuite/archiver/create_cmd_test.py | 13 | CODE | |
| LOW | src/borg/testsuite/archiver/corruption_test.py | 7 | CODE | |
| LOW | src/borg/testsuite/archiver/__init__.py | 20 | CODE | |
| LOW | src/borg/testsuite/archiver/__init__.py | 29 | CODE | |
| LOW | src/borg/testsuite/archiver/repo_delete_cmd_test.py | 5 | CODE | |
| LOW | src/borg/testsuite/archiver/repo_create_cmd_test.py | 7 | CODE | |
| LOW | src/borg/testsuite/archiver/undelete_cmd_test.py | 1 | CODE | |
| LOW | src/borg/testsuite/archiver/analyze_cmd_test.py | 3 | CODE | |
| LOW | src/borg/testsuite/archiver/check_cmd_remote_test.py | 3 | CODE | |
| LOW | src/borg/testsuite/archiver/rename_cmd_test.py | 1 | CODE | |
| LOW | src/borg/testsuite/archiver/patterns_test.py | 2 | CODE | |
| LOW | src/borg/testsuite/archiver/transfer_cmd_test.py | 13 | CODE | |
| LOW | src/borg/testsuite/archiver/mount_cmds_test.py | 15 | CODE | |
| 302 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | scripts/rest_perf_test.sh | 24 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/rest_perf_test.sh | 26 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/rest_perf_test.sh | 63 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/rest_perf_test.sh | 65 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/rest_perf_test.sh | 105 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/rest_perf_test.sh | 107 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/rest_perf_test.sh | 129 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/rest_perf_test.sh | 134 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/rest_perf_test.sh | 162 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/rest_perf_test.sh | 164 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/rest_perf_test.sh | 196 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/rest_perf_test.sh | 198 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/rest_perf_test.sh | 206 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/rest_perf_test.sh | 208 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/borg/testsuite/legacy_upgrade_test.py | 43 | # ── upgrade_item ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/borg/testsuite/legacy_upgrade_test.py | 117 | # ── upgrade_archive_metadata ────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/borg/testsuite/legacy_upgrade_test.py | 180 | # ── upgrade_compressed_chunk ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/borg/testsuite/legacy_upgrade_test.py | 18 | # ── helpers ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/borg/testsuite/legacy_helpers_test.py | 15 | # ── borg1_hardlinkable ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/borg/testsuite/legacy_helpers_test.py | 46 | # ── borg1_hardlink_master ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/borg/testsuite/legacy_helpers_test.py | 64 | # ── borg1_hardlink_slave ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/borg/testsuite/legacy_archives_test.py | 121 | # ── create ─────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/borg/testsuite/legacy_archives_test.py | 149 | # ── get / get_by_id ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/borg/testsuite/legacy_archives_test.py | 189 | # ── NotImplementedError stubs ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/borg/testsuite/legacy_archives_test.py | 228 | # ── _get_archive_meta ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/borg/testsuite/legacy_archives_test.py | 401 | # ── get_one ─────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/borg/testsuite/legacy_archives_test.py | 424 | # ── list_considering ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/borg/testsuite/legacy_archives_test.py | 454 | # ── ArchivesInterface Protocol / Manifest dispatch ──────────────────────────────── | COMMENT |
| MEDIUM | src/borg/testsuite/legacy_archives_test.py | 16 | # ── helpers ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/borg/testsuite/legacy_archives_test.py | 65 | # ── init / raw-dict operations ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/borg/testsuite/legacy_archives_test.py | 278 | # ── _infos / _info_tuples ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/borg/testsuite/legacy_archives_test.py | 293 | # ── list ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/borg/testsuite/crypto/legacy_key_test.py | 10 | # ── Pbkdf2FileMixin ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/borg/archiver/tar_cmds.py | 191 | # ---------- | COMMENT |
| MEDIUM | src/borg/archiver/tar_cmds.py | 199 | # ----------- | COMMENT |
| MEDIUM | src/borg/cockpit/widgets.py | 317 | # -------------------------- | COMMENT |
| MEDIUM | src/borg/cockpit/widgets.py | 328 | # -------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/make.py | 46 | CODE | |
| LOW | scripts/make.py | 113 | CODE | |
| LOW | scripts/make.py | 164 | CODE | |
| LOW | scripts/chunker_bench.py | 106 | CODE | |
| LOW | src/borg/fslocking.py | 138 | CODE | |
| LOW | src/borg/fslocking.py | 207 | CODE | |
| LOW | src/borg/fslocking.py | 291 | CODE | |
| LOW | src/borg/version.py | 35 | CODE | |
| LOW | src/borg/manifest.py | 214 | CODE | |
| LOW | src/borg/hlfuse.py | 193 | CODE | |
| LOW | src/borg/hlfuse.py | 262 | CODE | |
| LOW | src/borg/hlfuse.py | 468 | CODE | |
| LOW | src/borg/hlfuse.py | 628 | CODE | |
| LOW | src/borg/hlfuse.py | 471 | CODE | |
| LOW | src/borg/cache.py | 768 | CODE | |
| LOW | src/borg/cache.py | 287 | CODE | |
| LOW | src/borg/cache.py | 353 | CODE | |
| LOW | src/borg/cache.py | 396 | CODE | |
| LOW | src/borg/xattr.py | 60 | CODE | |
| LOW | src/borg/xattr.py | 99 | CODE | |
| LOW | src/borg/archive.py | 197 | CODE | |
| LOW | src/borg/archive.py | 323 | CODE | |
| LOW | src/borg/archive.py | 743 | CODE | |
| LOW | src/borg/archive.py | 765 | CODE | |
| LOW | src/borg/archive.py | 947 | CODE | |
| LOW | src/borg/archive.py | 1150 | CODE | |
| LOW | src/borg/archive.py | 1323 | CODE | |
| LOW | src/borg/archive.py | 1419 | CODE | |
| LOW | src/borg/archive.py | 1569 | CODE | |
| LOW | src/borg/archive.py | 1720 | CODE | |
| LOW | src/borg/archive.py | 1860 | CODE | |
| LOW | src/borg/archive.py | 1932 | CODE | |
| LOW | src/borg/archive.py | 2002 | CODE | |
| LOW | src/borg/archive.py | 2342 | CODE | |
| LOW | src/borg/archive.py | 2046 | CODE | |
| LOW | src/borg/storelocking.py | 178 | CODE | |
| LOW | src/borg/storelocking.py | 318 | CODE | |
| LOW | src/borg/repository.py | 914 | CODE | |
| LOW | src/borg/fuse.py | 528 | CODE | |
| LOW | src/borg/fuse.py | 712 | CODE | |
| LOW | src/borg/fuse.py | 531 | CODE | |
| LOW | src/borg/crypto/key.py | 435 | CODE | |
| LOW | src/borg/crypto/key.py | 809 | CODE | |
| LOW | src/borg/crypto/keymanager.py | 195 | CODE | |
| LOW | src/borg/chunkers/failing.py | 30 | CODE | |
| LOW | src/borg/testsuite/cache_test.py | 380 | CODE | |
| LOW | src/borg/testsuite/repository_test.py | 107 | CODE | |
| LOW | src/borg/testsuite/chunkers/buzhash64_test.py | 24 | CODE | |
| LOW | src/borg/testsuite/chunkers/interaction_test.py | 21 | CODE | |
| LOW | src/borg/testsuite/chunkers/fixed_test.py | 13 | CODE | |
| LOW | src/borg/testsuite/chunkers/buzhash_test.py | 18 | CODE | |
| LOW | src/borg/testsuite/chunkers/fastcdc_test.py | 24 | CODE | |
| LOW | src/borg/testsuite/platform/platform_test.py | 31 | CODE | |
| LOW | src/borg/testsuite/archiver/extract_cmd_test.py | 208 | CODE | |
| LOW | src/borg/testsuite/archiver/extract_cmd_test.py | 211 | CODE | |
| LOW | src/borg/testsuite/archiver/create_cmd_test.py | 1083 | CODE | |
| LOW | src/borg/testsuite/archiver/create_cmd_test.py | 1113 | CODE | |
| LOW | src/borg/testsuite/archiver/create_cmd_test.py | 1144 | CODE | |
| LOW | src/borg/testsuite/archiver/__init__.py | 50 | CODE | |
| LOW | src/borg/testsuite/archiver/__init__.py | 124 | CODE | |
| 57 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/conf.py | 4 | # This file is execfile()d with the current directory set to its containing directory. | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 511 | # Create a FFS image with extended attributes enabled and use it for TMPDIR. | COMMENT |
| MEDIUM | src/borg/hlfuse.py | 168 | # Create a directory item for the archive | COMMENT |
| MEDIUM | src/borg/testsuite/cache_test.py | 123 | # Create an index entry so list_chunkindex_hashes finds it. | COMMENT |
| MEDIUM | src/borg/testsuite/repoobj_test.py | 146 | # Create a repository object containing user data (file content data). | COMMENT |
| MEDIUM | src/borg/testsuite/repoobj_test.py | 158 | # Create a repository object containing user data (file content data). | COMMENT |
| MEDIUM | src/borg/testsuite/crypto/csprng_test.py | 170 | # Create a large list | COMMENT |
| MEDIUM⚡ | src/borg/testsuite/crypto/crypto_test.py | 286 | # Create a simple KeyBase subclass with a non-empty crypt_key | COMMENT |
| MEDIUM | src/borg/testsuite/chunkers/reader_test.py | 133 | # Create a mock FileFMAPReader that yields specific chunks | COMMENT |
| MEDIUM | src/borg/testsuite/chunkers/reader_test.py | 145 | # Create a FileReader with a dummy BytesIO to satisfy the assertion | COMMENT |
| MEDIUM | src/borg/testsuite/chunkers/reader_test.py | 271 | # Create a file with all zeros | COMMENT |
| MEDIUM | src/borg/testsuite/chunkers/reader_test.py | 288 | # Create a sparse file | COMMENT |
| MEDIUM | src/borg/testsuite/chunkers/reader_test.py | 336 | # Create a reader with sparse=False | COMMENT |
| MEDIUM⚡ | src/borg/testsuite/archiver/tar_cmds_test.py | 220 | # Create a simple directory structure | COMMENT |
| MEDIUM⚡ | src/borg/testsuite/archiver/tar_cmds_test.py | 223 | # Create a tar file with paths starting with './' | COMMENT |
| MEDIUM | src/borg/testsuite/archiver/transfer_cmd_test.py | 380 | # Create an archive with a comment | COMMENT |
| MEDIUM | src/borg/testsuite/archiver/diff_cmd_test.py | 48 | # Create the first snapshot | COMMENT |
| MEDIUM | src/borg/testsuite/archiver/diff_cmd_test.py | 78 | # Create the second snapshot | COMMENT |
| MEDIUM | …borg/testsuite/archiver/restricted_permissions_test.py | 18 | # Create a repository with unrestricted permissions. | COMMENT |
| MEDIUM | …borg/testsuite/archiver/restricted_permissions_test.py | 43 | # Create a repository first (need unrestricted permissions for that). | COMMENT |
| MEDIUM⚡ | …borg/testsuite/archiver/restricted_permissions_test.py | 98 | # Create a repository first (need unrestricted permissions for that). | COMMENT |
| MEDIUM⚡ | …borg/testsuite/archiver/restricted_permissions_test.py | 102 | # Create an archive to test with. | COMMENT |
| MEDIUM⚡ | …borg/testsuite/archiver/restricted_permissions_test.py | 147 | # Create a repository first (need unrestricted permissions for that). | COMMENT |
| MEDIUM⚡ | …borg/testsuite/archiver/restricted_permissions_test.py | 151 | # Create an initial archive to test with. | COMMENT |
| MEDIUM | src/borg/testsuite/helpers/fs_test.py | 353 | # Create a directory with both a CACHEDIR.TAG and a custom tag file | COMMENT |
| MEDIUM | src/borg/testsuite/helpers/fs_test.py | 360 | # Create a directory without any tag files | COMMENT |
| MEDIUM | src/borg/archiver/transfer_cmd.py | 52 | # Create a chunker with the specified parameters | COMMENT |
| MEDIUM | src/borg/archiver/repo_space_cmd.py | 70 | # Create a new repository: | STRING |
| MEDIUM | src/borg/archiver/help_cmd.py | 223 | # Define the recursion root | STRING |
| MEDIUM | src/borg/legacy/fs.py | 111 | # This file is a cache directory tag created by Borg. | STRING |
| MEDIUM | src/borg/helpers/fs.py | 134 | # This file is a cache directory tag created by Borg. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | src/borg/archiver/completion_cmd.py | 108 | out=$( borg repo-list "${repo_arg[@]}" --format '{id}{NL}' 2>/dev/null </dev/null ) | CODE |
| HIGH⚡ | src/borg/archiver/completion_cmd.py | 110 | out=$( borg repo-list --format '{id}{NL}' 2>/dev/null </dev/null ) | CODE |
| HIGH | src/borg/archiver/completion_cmd.py | 127 | out=$( borg repo-list "${repo_arg[@]}" --format '{archive}{NL}' 2>/dev/null </dev/null ) | CODE |
| HIGH | src/borg/archiver/completion_cmd.py | 129 | out=$( borg repo-list --format '{archive}{NL}' 2>/dev/null </dev/null ) | CODE |
| HIGH | src/borg/archiver/completion_cmd.py | 178 | out=$( borg repo-list "${repo_arg[@]}" --format '{tags}{NL}' 2>/dev/null </dev/null ) | CODE |
| HIGH | src/borg/archiver/completion_cmd.py | 180 | out=$( borg repo-list --format '{tags}{NL}' 2>/dev/null </dev/null ) | CODE |
| HIGH | src/borg/archiver/completion_cmd.py | 380 | 2>/dev/null </dev/null ) | CODE |
| HIGH | src/borg/archiver/completion_cmd.py | 383 | 2>/dev/null </dev/null ) | CODE |
| HIGH | src/borg/archiver/completion_cmd.py | 407 | out=$( borg repo-list "${repo_arg[@]}" --format '{archive}{NL}' 2>/dev/null </dev/null ) | CODE |
| HIGH | src/borg/archiver/completion_cmd.py | 409 | out=$( borg repo-list --format '{archive}{NL}' 2>/dev/null </dev/null ) | CODE |
| HIGH | src/borg/archiver/completion_cmd.py | 463 | out=$( borg repo-list "${repo_arg[@]}" --format '{tags}{NL}' 2>/dev/null </dev/null ) | CODE |
| HIGH | src/borg/archiver/completion_cmd.py | 465 | out=$( borg repo-list --format '{tags}{NL}' 2>/dev/null </dev/null ) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/borg/conftest.py | 31 | except Exception: | CODE |
| LOW | src/borg/conftest.py | 63 | except Exception: # nosec B110 | CODE |
| LOW | src/borg/cache.py | 1035 | except Exception as exc: | CODE |
| LOW | src/borg/logger.py | 183 | except Exception as err: # XXX be more precise | CODE |
| LOW | src/borg/archive.py | 2116 | except Exception: | CODE |
| LOW | src/borg/storelocking.py | 329 | except Exception as e: | CODE |
| LOW | src/borg/repository.py | 187 | except Exception: | CODE |
| LOW | src/borg/repository.py | 431 | except Exception: | CODE |
| LOW | src/borg/crypto/key.py | 772 | except Exception as exc: # noqa: BLE001 - a corrupted borg key must not break unlocking via the others | CODE |
| LOW | src/borg/crypto/key.py | 880 | except Exception as exc: # noqa: BLE001 - a corrupted borg key must stay visible and removable | CODE |
| MEDIUM | src/borg/crypto/key.py | 460 | def _load(self, key_data, passphrase): | CODE |
| LOW | src/borg/crypto/keymanager.py | 76 | except Exception: # noqa: BLE001 - best-effort: a borg key without a parseable envelope has no label | CODE |
| LOW | src/borg/testsuite/logger_test.py | 56 | except Exception: | CODE |
| LOW | src/borg/testsuite/archiver/extract_cmd_test.py | 645 | except Exception: | CODE |
| LOW | src/borg/testsuite/archiver/remote_repo_test.py | 26 | except Exception: | CODE |
| LOW | src/borg/testsuite/archiver/remote_repo_test.py | 31 | except Exception: | CODE |
| LOW | src/borg/archiver/__init__.py | 528 | except Exception: | CODE |
| LOW | src/borg/archiver/__init__.py | 536 | except Exception: | CODE |
| LOW | src/borg/archiver/__init__.py | 610 | except Exception: | STRING |
| LOW | src/borg/archiver/__init__.py | 650 | except Exception as e: | STRING |
| LOW | src/borg/legacy/remote.py | 314 | except Exception: | CODE |
| MEDIUM | src/borg/legacy/remote.py | 73 | def __init__(self, data): | CODE |
| LOW⚡ | src/borg/legacy/fs.py | 48 | except Exception: | CODE |
| LOW⚡ | src/borg/legacy/fs.py | 54 | except Exception: # nosec B110 | CODE |
| LOW | src/borg/legacy/fs.py | 71 | except Exception: # nosec B110 | CODE |
| LOW | src/borg/legacy/repository.py | 998 | except Exception as exc: | CODE |
| LOW | src/borg/cockpit/runner.py | 58 | except Exception as e: | CODE |
| LOW⚡ | src/borg/helpers/msgpack.py | 105 | except Exception as e: | CODE |
| LOW⚡ | src/borg/helpers/msgpack.py | 113 | except Exception as e: | CODE |
| LOW⚡ | src/borg/helpers/msgpack.py | 121 | except Exception as e: | CODE |
| LOW | src/borg/helpers/msgpack.py | 163 | except Exception as e: | CODE |
| LOW | src/borg/helpers/msgpack.py | 171 | except Exception as e: | CODE |
| LOW | src/borg/helpers/msgpack.py | 184 | except Exception as e: | CODE |
| LOW | src/borg/helpers/msgpack.py | 195 | except Exception as e: | CODE |
| MEDIUM | src/borg/helpers/msgpack.py | 102 | def pack(self, obj): | CODE |
| MEDIUM | src/borg/helpers/msgpack.py | 158 | def unpack(self): | CODE |
| MEDIUM | src/borg/helpers/msgpack.py | 166 | def __next__(self): | CODE |
| LOW | src/borg/helpers/__init__.py | 208 | except Exception: # nosec B110 | CODE |
| LOW | src/borg/helpers/process.py | 386 | except Exception: | CODE |
| LOW | src/borg/helpers/parseformat.py | 437 | except Exception as e: | CODE |
| MEDIUM | src/borg/helpers/parseformat.py | 49 | def hex_to_bin(hex, length=None): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyproject.toml | 121 | # E402 module level import not at top | COMMENT |
| LOW | docs/conf.py | 1 | # Documentation build configuration file, created by | COMMENT |
| LOW | docs/conf.py | 61 | # language = None | COMMENT |
| LOW | docs/conf.py | 81 | # add_function_parentheses = True | COMMENT |
| LOW | docs/conf.py | 121 | COMMENT | |
| LOW | docs/conf.py | 181 | COMMENT | |
| LOW | scripts/rest_perf_test.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | src/borg/manifest.py | 441 | COMMENT | |
| LOW | src/borg/paperkey.html | 21 | // https://github.com/kazuhikoarase/qrcode-generator/blob/master/js/qrcode.js | COMMENT |
| LOW | src/borg/constants.py | 61 | COMMENT | |
| LOW | src/borg/constants.py | 101 | # repo.list() result count limit used by the Borg client | COMMENT |
| LOW | src/borg/cache.py | 621 | # True, else the whole index. borghash cannot serialize just the F_NEW entries, so either way we | COMMENT |
| LOW | src/borg/archive.py | 1481 | # Do NOT wrap this in backup_io("read"): the source-file reads are already | COMMENT |
| LOW | src/borg/archive.py | 1501 | elif self.files_changed == "ctime": | COMMENT |
| LOW | src/borg/fuse.py | 121 | COMMENT | |
| LOW | src/borg/fuse.py | 141 | COMMENT | |
| LOW | src/borg/fuse.py | 241 | COMMENT | |
| LOW | src/borg/testsuite/legacyrepository_test.py | 441 | # this tests the shadowing-by-double-put behaviour, see issue #5661 | COMMENT |
| LOW | src/borg/testsuite/archiver/prune_cmd_test.py | 201 | COMMENT | |
| LOW | src/borg/testsuite/archiver/__init__.py | 121 | return exec_fn | COMMENT |
| LOW | src/borg/testsuite/archiver/__init__.py | 241 | # Ironically, due to how fakeroot works, comparing FUSE file xattrs to original file xattrs | COMMENT |
| LOW | src/borg/testsuite/archiver/__init__.py | 501 | # specified, the default value is `True`, regardless of | COMMENT |
| LOW | src/borg/archiver/tar_cmds.py | 61 | # A quick note about the general design of tar_filter and tarfile; | COMMENT |
| LOW | src/borg/archiver/tar_cmds.py | 181 | "%s: unsupported file type %o for tar export", remove_surrogates(item.path), modebits | COMMENT |
| LOW | src/borg/archiver/__init__.py | 321 | def get_args(self, argv, cmd): | COMMENT |
| LOW | src/borg/legacy/remote.py | 81 | COMMENT | |
| LOW | src/borg/legacy/repository.py | 661 | # (which may grow the index up to twice its current size). | COMMENT |
| LOW | src/borg/legacy/repository.py | 821 | # However, this only happens if the crash also affects the FS to the effect that file deletions | COMMENT |
| LOW | src/borg/legacy/repository.py | 841 | # Now we crash. But only segment 2 gets deleted, while segment 1 is still around. Now key 1 | COMMENT |
| LOW | src/borg/helpers/fs.py | 321 | assert isinstance(path, str) | COMMENT |
| LOW | src/borg/helpers/process.py | 321 | # (non-matching) libraries from there. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/rest_perf_test.sh | 3 | # rest_perf_test.sh - borg2 performance harness for rest:// repositories. | COMMENT |
| LOW | src/borg/archive.py | 848 | # we just use the existing one and do not remove it. | COMMENT |
| LOW | src/borg/archive.py | 1926 | # collecting any key we encounter in a damaged repo seems unwise, thus we just use | COMMENT |
| MEDIUM | src/borg/archive.py | 1697 | """A restartable/robust version of the streaming msgpack unpacker""" | STRING |
| LOW | src/borg/testsuite/repoobj_test.py | 84 | # Here, we just use len_data. For Borg transfer, we also know the size from another metadata source. | COMMENT |
| MEDIUM | src/borg/testsuite/platform/linux_test.py | 85 | # Testing non-ASCII ACL processing to see whether our code is robust. | STRING |
| LOW | src/borg/testsuite/archiver/extract_cmd_test.py | 839 | # we should just use the existing directory and not remove/recreate it. | COMMENT |
| MEDIUM | src/borg/testsuite/archiver/benchmark_cmd_test.py | 21 | # Filter for JSON lines only; the test harness merges stdout and stderr, | COMMENT |
| MEDIUM⚡ | src/borg/legacy/fs.py | 38 | # 2. Prefer HOME, but be robust against mount helpers that set HOME to root's home for non-root users. | COMMENT |
| LOW | src/borg/helpers/fs.py | 528 | fname, parent_fd = path, None # just use the path | CODE |
| LOW | src/borg/helpers/fs.py | 573 | fname, parent_fd = path, None # just use the path | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/borg/manifest.py | 102 | CODE | |
| LOW | src/borg/manifest.py | 352 | CODE | |
| LOW | src/borg/cache.py | 191 | CODE | |
| LOW | src/borg/archive.py | 500 | CODE | |
| LOW | src/borg/archive.py | 1751 | CODE | |
| LOW | src/borg/archive.py | 2002 | CODE | |
| LOW | src/borg/archive.py | 2218 | CODE | |
| LOW | src/borg/testsuite/archiver/__init__.py | 186 | CODE | |
| LOW | src/borg/archiver/_common.py | 78 | CODE | |
| LOW | src/borg/archiver/__init__.py | 567 | CODE | |
| LOW | src/borg/legacy/archives.py | 203 | CODE | |
| LOW | src/borg/helpers/msgpack.py | 126 | CODE | |
| LOW | src/borg/helpers/yes_no.py | 15 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/borg/fuse.py | 353 | # Check if this is an archive we need to load | COMMENT |
| LOW | src/borg/testsuite/shell_completions_test.py | 14 | # Check if Fish is available | COMMENT |
| LOW⚡ | src/borg/archiver/completion_cmd.py | 100 | # Check if completing aid: prefix | COMMENT |
| LOW | src/borg/archiver/completion_cmd.py | 369 | # Check if completing aid: prefix | COMMENT |
| LOW | src/borg/archiver/transfer_cmd.py | 58 | # Check if the chunk is already in the repository | COMMENT |
| LOW | src/borg/archiver/list_cmd.py | 38 | # Check if the item matches the patterns/paths. | COMMENT |
| LOW | src/borg/archiver/__init__.py | 489 | # Open the file early, before running the main program, to avoid | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | src/borg/paperkey.html | 2346 | typein.classList.add("placeholder"); | CODE |
| LOW⚡ | src/borg/paperkey.html | 2347 | svg.classList.add("placeholder"); | CODE |
| LOW⚡ | src/borg/paperkey.html | 2357 | typein.classList.remove("placeholder"); | CODE |
| LOW⚡ | src/borg/paperkey.html | 2358 | svg.classList.remove("placeholder"); | CODE |
| LOW | src/borg/testsuite/legacyrepository_test.py | 959 | assert remote_repository.ssh_cmd(Location("ssh://user@example.com/foo")) == ["ssh", "user@example.com"] | CODE |
| LOW | src/borg/testsuite/legacyrepository_test.py | 964 | "user@example.com", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/borg/constants.py | 215 | # if you still need to, you can use "borg key migrate-to-repokey" with borg 1.0, 1.1 and 1.2. | COMMENT |
| LOW | src/borg/archiver/create_cmd.py | 415 | # we better do a fresh stat on the file, just to make sure to get the current file | COMMENT |
| LOW | src/borg/legacy/upgrade.py | 62 | # make sure we only have desired stuff in the new item. specifically, make sure to get rid of: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | scripts/rest_perf_test.sh | 15 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/borg/cockpit/widgets.py | 197 | def _update_art(self) -> None: | CODE |
| LOW | src/borg/cockpit/widgets.py | 256 | def update_art(self) -> None: | CODE |