A tool for extracting plain text from Wikipedia dumps
This report summarizes scanner evidence for WikiExtractor/wikiextractor, a Python project with 4,003 GitHub stars. SynthScan examined 21,028 lines of code across 83 source files, recording 993 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 61.7 (High 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.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 933 finding(s).
Are imports declared and package/API names verified? 8 finding(s).
Are wrappers, guards, and repeated structures necessary? 874 finding(s).
Which changes need focused human review? 993 finding(s).
Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.
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.
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.
The scanner identified 993 distinct pattern matches across 11 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/confirm_redirect_keyword_causation.py | 137 | def get_source_wikitext_by_id(dump_path, wanted_ids): | CODE |
| LOW | tools/confirm_redirect_keyword_causation.py | 211 | def find_redirect_templates_invoked(ex, page_id, wikitext, non_english_redirect_titles, templates, | CODE |
| LOW | tools/confirm_redirect_keyword_causation.py | 245 | def find_non_english_redirect_titles(templates_path, redirect_keywords): | CODE |
| LOW | tools/extract_templates_by_id.py | 128 | def determine_template_prefix(templates_path): | CODE |
| LOW | tools/extract_templates_by_id.py | 222 | def find_titles_in_templates_file(templates_path, wanted_titles): | CODE |
| LOW | tools/extract_page_range.py | 268 | def extract_templates_for_pages(out, page_texts_by_id, templates_path, max_passes): | CODE |
| LOW | tools/report_page_timing.py | 133 | def report_last_job_per_worker(timings, in_progress): | CODE |
| LOW⚡ | tests/test_punctuation_spacing_cleanup.py | 46 | def test_space_before_comma_is_removed(self): | CODE |
| LOW⚡ | tests/test_punctuation_spacing_cleanup.py | 49 | def test_space_before_colon_is_removed(self): | CODE |
| LOW⚡ | tests/test_punctuation_spacing_cleanup.py | 52 | def test_space_before_period_is_removed(self): | CODE |
| LOW⚡ | tests/test_punctuation_spacing_cleanup.py | 55 | def test_space_before_closing_paren_is_removed(self): | CODE |
| LOW⚡ | tests/test_punctuation_spacing_cleanup.py | 58 | def test_space_before_closing_bracket_is_removed(self): | CODE |
| LOW⚡ | tests/test_punctuation_spacing_cleanup.py | 61 | def test_space_before_guillemet_is_removed(self): | CODE |
| LOW⚡ | tests/test_punctuation_spacing_cleanup.py | 64 | def test_space_after_opening_paren_is_removed(self): | CODE |
| LOW⚡ | tests/test_punctuation_spacing_cleanup.py | 67 | def test_space_after_opening_bracket_is_removed(self): | CODE |
| LOW⚡ | tests/test_punctuation_spacing_cleanup.py | 70 | def test_space_after_opening_guillemet_is_removed(self): | CODE |
| LOW⚡ | tests/test_punctuation_spacing_cleanup.py | 73 | def test_the_exact_real_article_regression(self): | CODE |
| LOW⚡ | tests/test_punctuation_spacing_cleanup.py | 81 | def test_multiple_spaces_before_punctuation_still_collapse_correctly(self): | CODE |
| LOW⚡ | tests/test_punctuation_spacing_cleanup.py | 86 | def test_punctuation_with_no_adjacent_space_is_unaffected(self): | CODE |
| LOW⚡ | tests/test_br_close_tag.py | 47 | def test_closing_br_between_words_becomes_a_space(self): | CODE |
| LOW⚡ | tests/test_br_close_tag.py | 53 | def test_closing_br_with_whitespace_variants(self): | CODE |
| LOW⚡ | tests/test_br_close_tag.py | 59 | def test_closing_hr_between_words_becomes_a_space(self): | CODE |
| LOW⚡ | tests/test_br_close_tag.py | 63 | def test_closing_br_at_start_of_line_does_not_add_leading_space(self): | CODE |
| LOW⚡ | tests/test_br_close_tag.py | 70 | def test_closing_br_at_end_of_line_does_not_add_trailing_space(self): | CODE |
| LOW⚡ | tests/test_br_close_tag.py | 74 | def test_paired_br_and_closing_br_both_handled(self): | CODE |
| LOW⚡ | tests/test_br_close_tag.py | 81 | def test_real_world_sindhi_article_shape(self): | CODE |
| LOW | tests/test_urlencode_urldecode.py | 45 | def test_reserved_characters_are_encoded(self): | CODE |
| LOW | tests/test_urlencode_urldecode.py | 48 | def test_non_ascii_text_is_encoded(self): | CODE |
| LOW | tests/test_urlencode_urldecode.py | 61 | def test_reserved_characters_are_decoded(self): | CODE |
| LOW⚡ | tests/test_urlencode_urldecode.py | 72 | def test_round_trip_ascii_with_reserved_characters(self): | CODE |
| LOW⚡ | tests/test_urlencode_urldecode.py | 76 | def test_round_trip_non_ascii_text(self): | CODE |
| LOW⚡ | tests/test_urlencode_urldecode.py | 80 | def test_real_pipeline_round_trip_through_nested_template_calls(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 54 | def test_year_four_and_two_digit(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 58 | def test_month_padded_and_unpadded(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 62 | def test_day_padded_and_unpadded(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 91 | def test_day_of_year_is_zero_based(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 95 | def test_combined_format_used_by_citation_templates(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 103 | def test_non_alphabetic_characters_pass_through(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 106 | def test_backslash_escapes_the_next_character(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 112 | def test_double_quotes_mark_a_literal_run(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 115 | def test_unclosed_quote_is_itself_a_literal(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 118 | def test_trailing_backslash_is_dropped(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 128 | def test_month_name_format_is_declined(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 131 | def test_day_name_format_is_declined(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 134 | def test_declining_is_not_the_error_span(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 137 | def test_one_unsupported_character_declines_the_whole_format(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 149 | def test_year_and_month_only_defaults_the_day(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 152 | def test_iso_datetime_with_t_separator(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 155 | def test_trailing_z_is_accepted(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 158 | def test_mediawiki_fourteen_digit_timestamp(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 162 | def test_empty_timestamp_means_now(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 166 | def test_relative_offset_moves_from_now(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 171 | def test_negative_relative_offset(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 176 | def test_relative_units_without_a_fixed_length_are_rejected(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 184 | def test_unparseable_text_gives_the_error_span(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 187 | def test_well_formed_but_impossible_date_gives_the_error_span(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 191 | def test_trailing_junk_after_a_date_gives_the_error_span(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 196 | def test_the_error_span_is_what_iferror_detects(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 199 | def test_a_good_date_does_not_trip_iferror(self): | CODE |
| LOW⚡ | tests/test_sharp_time.py | 203 | def test_the_error_span_leaves_no_visible_text(self): | CODE |
| 760 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | wikiextractor/cirrus-extract.py | 4 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | wikiextractor/cirrus-extract.py | 8 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | wikiextractor/cirrus-extract.py | 10 | # ============================================================================= | COMMENT |
| MEDIUM | wikiextractor/cirrus-extract.py | 24 | # ============================================================================= | COMMENT |
| MEDIUM | wikiextractor/cirrus-extract.py | 55 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | wikiextractor/cirrus-extract.py | 124 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | wikiextractor/clean.py | 1 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | wikiextractor/clean.py | 3 | # ============================================================================= | COMMENT |
| MEDIUM | wikiextractor/clean.py | 17 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | wikiextractor/WikiExtractor.py | 19 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | wikiextractor/WikiExtractor.py | 21 | # ============================================================================= | COMMENT |
| MEDIUM | wikiextractor/WikiExtractor.py | 4 | # ============================================================================= | COMMENT |
| MEDIUM | wikiextractor/WikiExtractor.py | 35 | # ============================================================================= | COMMENT |
| MEDIUM | wikiextractor/WikiExtractor.py | 81 | # =========================================================================== | COMMENT |
| MEDIUM | wikiextractor/WikiExtractor.py | 171 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | wikiextractor/WikiExtractor.py | 183 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | wikiextractor/WikiExtractor.py | 257 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | wikiextractor/WikiExtractor.py | 873 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | wikiextractor/WikiExtractor.py | 1164 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | wikiextractor/extractPage.py | 4 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | wikiextractor/extractPage.py | 8 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | wikiextractor/extractPage.py | 10 | # ============================================================================= | COMMENT |
| MEDIUM | wikiextractor/extractPage.py | 24 | # ============================================================================= | COMMENT |
| MEDIUM | wikiextractor/extractPage.py | 39 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | wikiextractor/extract.py | 3 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | wikiextractor/extract.py | 5 | # ============================================================================= | COMMENT |
| MEDIUM | wikiextractor/extract.py | 19 | # ============================================================================= | COMMENT |
| MEDIUM | wikiextractor/extract.py | 59 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | wikiextractor/extract.py | 244 | # ====================================================================== | COMMENT |
| MEDIUM | wikiextractor/extract.py | 688 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | wikiextractor/extract.py | 759 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | wikiextractor/extract.py | 837 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | wikiextractor/extract.py | 1157 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | wikiextractor/extract.py | 1301 | # ========================================================================= | COMMENT |
| MEDIUM | wikiextractor/extract.py | 1335 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | wikiextractor/extract.py | 1631 | # ====================================================================== | COMMENT |
| MEDIUM | wikiextractor/extract.py | 1758 | # ====================================================================== | COMMENT |
| MEDIUM | wikiextractor/extract.py | 2011 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | wikiextractor/extract.py | 2350 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | wikiextractor/extract.py | 2737 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | wikiextractor/extract.py | 2809 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | wikiextractor/extract.py | 3281 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | wikiextractor/extract.py | 3940 | # ---------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_sharp_switch.py | 41 | self.assertEqual(ex.sharp_switch('zzz', 'a=A', 'b=B'), '') | COMMENT |
| LOW | tests/test_template_loop_guard.py | 161 | COMMENT | |
| LOW | tests/test_link_bracket_collapse.py | 201 | self.assertEqual(result, "پاکستانبھارت") | COMMENT |
| LOW | tests/test_comment_removal.py | 101 | COMMENT | |
| LOW | tests/test_frame_cleanup.py | 81 | # still have been correctly popped back to empty, not left | COMMENT |
| LOW | tests/test_sharp_expr_security.py | 81 | def test_classic_sandbox_escape_chain_does_not_execute(self): | COMMENT |
| LOW | tests/test_sharp_expr_security.py | 101 | # that one, and sharp_expr()'s own warnings.catch_warnings() | COMMENT |
| LOW | wikiextractor/cirrus-extract.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | wikiextractor/clean.py | 1 | # ============================================================================= | COMMENT |
| LOW | wikiextractor/WikiExtractor.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | wikiextractor/WikiExtractor.py | 21 | # ============================================================================= | COMMENT |
| LOW | wikiextractor/WikiExtractor.py | 81 | # =========================================================================== | COMMENT |
| LOW | wikiextractor/WikiExtractor.py | 161 | ## | COMMENT |
| LOW | wikiextractor/WikiExtractor.py | 721 | with template_blob_ctx as (_wrapper, template_blob_names), \ | COMMENT |
| LOW | wikiextractor/WikiExtractor.py | 741 | # but that particular issue is now fixed. | COMMENT |
| LOW | wikiextractor/WikiExtractor.py | 761 | Process = mp_context.Process | COMMENT |
| LOW | wikiextractor/WikiExtractor.py | 941 | else contextlib.nullcontext(None)) | COMMENT |
| LOW | wikiextractor/extractPage.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | wikiextractor/template_blob.py | 121 | COMMENT | |
| LOW | wikiextractor/extract.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | wikiextractor/extract.py | 41 | # be enabled without the other. | COMMENT |
| LOW | wikiextractor/extract.py | 61 | # <nowiki>...</nowiki> marks its contents as literal text, exempt from | COMMENT |
| LOW | wikiextractor/extract.py | 81 | # containing no brace, bracket, or pipe character at all, so it can't | COMMENT |
| LOW | wikiextractor/extract.py | 161 | # | COMMENT |
| LOW | wikiextractor/extract.py | 201 | # includeonly is the direct counterpart of noinclude above, and the | COMMENT |
| LOW | wikiextractor/extract.py | 221 | ] | COMMENT |
| LOW | wikiextractor/extract.py | 301 | end = nextTag.end() | COMMENT |
| LOW | wikiextractor/extract.py | 321 | # base and reading run together into one string that is neither: | COMMENT |
| LOW | wikiextractor/extract.py | 421 | text = text.replace("'''", '').replace("''", '"') | COMMENT |
| LOW | wikiextractor/extract.py | 441 | # where there's actually something to merge with on both sides -- | COMMENT |
| LOW | wikiextractor/extract.py | 481 | # "geo/18aug2018-1"), so only a '/' immediately before the | COMMENT |
| LOW | wikiextractor/extract.py | 501 | COMMENT | |
| LOW | wikiextractor/extract.py | 581 | # | COMMENT |
| LOW | wikiextractor/extract.py | 921 | i, j = m.start(), m.end() | COMMENT |
| LOW | wikiextractor/extract.py | 961 | pos = cur | COMMENT |
| LOW | wikiextractor/extract.py | 981 | # the far side of a whole separate "زبان|..." phrase, not | COMMENT |
| LOW | wikiextractor/extract.py | 1301 | # ========================================================================= | COMMENT |
| LOW | wikiextractor/extract.py | 1321 | COMMENT | |
| LOW | wikiextractor/extract.py | 1341 | # implicit line break around each of these), unlike the rest of | COMMENT |
| LOW | wikiextractor/extract.py | 1401 | ns = normalizeNamespace(prefix) | COMMENT |
| LOW | wikiextractor/extract.py | 1461 | return (left, right) | COMMENT |
| LOW | wikiextractor/extract.py | 1481 | # ref/references/nowiki/templatestyles are NOT treated this way: | COMMENT |
| LOW | wikiextractor/extract.py | 1501 | # in clean() above): matched the same permissive way as nobr (trailing | COMMENT |
| LOW | wikiextractor/extract.py | 1521 | # ends up referring to alternative 0's group (renumbered from that | COMMENT |
| LOW | wikiextractor/extract.py | 1541 | COMMENT | |
| LOW | wikiextractor/extract.py | 1641 | # we must handle nesting, s.a. | COMMENT |
| LOW | wikiextractor/extract.py | 1661 | e += 3 | COMMENT |
| LOW | wikiextractor/extract.py | 2101 | # will get default values (if available) during actual instantiation. | COMMENT |
| LOW | wikiextractor/extract.py | 2121 | # Therefore, we don't check if the parameter has been assigned a | COMMENT |
| LOW | wikiextractor/extract.py | 2261 | title = redirected | COMMENT |
| LOW | wikiextractor/extract.py | 2281 | # A tplarg may contain other parameters as well as templates, e.g.: | COMMENT |
| LOW | wikiextractor/extract.py | 2301 | COMMENT | |
| LOW | wikiextractor/extract.py | 2421 | COMMENT | |
| LOW | wikiextractor/extract.py | 2541 | if i >= 0: | COMMENT |
| LOW | wikiextractor/extract.py | 2581 | # brace outside it, taken as plain text. For any pattern of braces this | COMMENT |
| LOW | wikiextractor/extract.py | 2601 | # We must resolve ambiguities like this: | COMMENT |
| LOW | wikiextractor/extract.py | 2781 | m = _TEMPLATE_TITLE_COLON_RE.match(templateTitle) | COMMENT |
| LOW | wikiextractor/extract.py | 2941 | for value_node in node.values: | COMMENT |
| LOW | wikiextractor/extract.py | 2961 | # of which lean on #expr comparisons heavily for their own internal | COMMENT |
| LOW | wikiextractor/extract.py | 3021 | # "trunc EXPR" is #expr's own prefix, unary truncate-toward- | COMMENT |
| 8 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/confirm_redirect_keyword_causation.py | 111 | CODE | |
| LOW | tools/confirm_redirect_keyword_causation.py | 137 | CODE | |
| LOW | tools/confirm_redirect_keyword_causation.py | 245 | CODE | |
| LOW | tools/classify_missing_pages.py | 154 | CODE | |
| LOW | tools/classify_missing_pages.py | 191 | CODE | |
| LOW | tools/classify_missing_pages.py | 332 | CODE | |
| LOW | tools/extract_templates_by_id.py | 85 | CODE | |
| LOW | tools/check_magic_words_case.py | 93 | CODE | |
| LOW | tools/find_redirect_keywords.py | 152 | CODE | |
| LOW | tools/extract_page_range.py | 217 | CODE | |
| LOW | tools/extract_page_range.py | 337 | CODE | |
| LOW | tools/extract_page_range.py | 379 | CODE | |
| LOW | tests/test_dump_completeness.py | 93 | CODE | |
| LOW | tests/test_load_templates_output_file_whitespace.py | 84 | CODE | |
| LOW | tests/test_load_templates_output_file_whitespace.py | 128 | CODE | |
| LOW | tests/test_streaming_template_blob.py | 96 | CODE | |
| LOW | tests/test_template_loading_content.py | 125 | CODE | |
| LOW | tests/test_article_extraction_content.py | 144 | CODE | |
| LOW | wikiextractor/WikiExtractor.py | 264 | CODE | |
| LOW | wikiextractor/WikiExtractor.py | 415 | CODE | |
| LOW | wikiextractor/WikiExtractor.py | 505 | CODE | |
| LOW | wikiextractor/WikiExtractor.py | 640 | CODE | |
| LOW | wikiextractor/WikiExtractor.py | 877 | CODE | |
| LOW | wikiextractor/WikiExtractor.py | 1052 | CODE | |
| LOW | wikiextractor/WikiExtractor.py | 1170 | CODE | |
| LOW | wikiextractor/extractPage.py | 46 | CODE | |
| LOW | wikiextractor/extract.py | 270 | CODE | |
| LOW | wikiextractor/extract.py | 559 | CODE | |
| LOW | wikiextractor/extract.py | 690 | CODE | |
| LOW | wikiextractor/extract.py | 1099 | CODE | |
| LOW | wikiextractor/extract.py | 2354 | CODE | |
| LOW | wikiextractor/extract.py | 2573 | CODE | |
| LOW | wikiextractor/extract.py | 2847 | CODE | |
| LOW | wikiextractor/extract.py | 3013 | CODE | |
| LOW | wikiextractor/extract.py | 3204 | CODE | |
| LOW | wikiextractor/extract.py | 2065 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | wikiextractor/cirrus-extract.py | 11 | # This file is part of Tanl. | COMMENT |
| MEDIUM⚡ | wikiextractor/clean.py | 4 | # This file is part of Tanl. | COMMENT |
| MEDIUM⚡ | wikiextractor/WikiExtractor.py | 22 | # This file is part of Tanl. | COMMENT |
| MEDIUM⚡ | wikiextractor/extractPage.py | 11 | # This file is part of Tanl. | COMMENT |
| MEDIUM⚡ | wikiextractor/extract.py | 6 | # This file is part of Tanl. | COMMENT |
| MEDIUM | wikiextractor/extract.py | 3851 | # This function is used in some pages to construct links | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/confirm_redirect_keyword_causation.py | 240 | except Exception: | CODE |
| HIGH | tools/extract_templates_by_id.py | 191 | except Exception: | CODE |
| HIGH | tests/test_frame_cleanup.py | 111 | except RuntimeError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_sharp_time.py | 37 | CODE | |
| LOW | tests/test_streaming_template_blob.py | 31 | CODE | |
| LOW | tests/test_template_loading_content.py | 44 | CODE | |
| LOW | tests/test_extract_process_worker_summary.py | 40 | CODE | |
| LOW | wikiextractor/cirrus-extract.py | 37 | CODE | |
| LOW | wikiextractor/cirrus-extract.py | 41 | CODE | |
| LOW | wikiextractor/extract.py | 30 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/confirm_redirect_keyword_causation.py | 240 | except Exception: | CODE |
| LOW | tools/classify_missing_pages.py | 306 | except Exception as e: | CODE |
| LOW | tools/extract_templates_by_id.py | 191 | except Exception: | CODE |
| LOW | tools/find_redirect_keywords.py | 138 | except Exception as e: | CODE |
| MEDIUM | wikiextractor/extract.py | 3013 | def sharp_expr(expr, page_title=None, page_id=None, extractor=None): | CODE |
| LOW | wikiextractor/extract.py | 3048 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_template_argument_names.py | 108 | Splitting there leaves {{{1}}} undefined, Template:Blockquote | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wikiextractor/extractPage.py | 46 | def process_data(input_file, id, templates=False): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | wikiextractor/extract.py | 1827 | CODE | |
| LOW | wikiextractor/extract.py | 2063 | CODE |