:books: Web app for browsing, reading and downloading eBooks stored in a Calibre database
This report summarizes scanner evidence for janeczku/calibre-web, a Fluent project with 18,358 GitHub stars. SynthScan examined 152,295 lines of code across 434 source files, recording 659 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 6.5 (Moderate 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? 441 finding(s).
Are imports declared and package/API names verified? 80 finding(s).
Are wrappers, guards, and repeated structures necessary? 278 finding(s).
Which changes need focused human review? 659 finding(s).
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.
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 659 distinct pattern matches across 16 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 |
|---|---|---|---|---|
| MEDIUM | cps.py | 4 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/subproc_wrapper.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/themes.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/search_metadata.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/gevent_wsgi.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/db.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/isoLanguages.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/server.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/shelf.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/cover.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/web.py | 1 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/string_helper.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/mobi.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/kobo_sync_status.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/ub.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/embed_helper.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/oauth_bb.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/fb2.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/constants.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/file_helper.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/uploader.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/converter.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/__init__.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/editbooks.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/debug_info.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/about.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/logger.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/gdriveutils.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/updater.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/opds.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/comic.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/admin.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/cli.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/kobo_auth.py | 4 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/kobo_auth.py | 21 | """This module is used to control authentication/authorization of Kobo sync requests. | STRING |
| MEDIUM | cps/basic.py | 1 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/fs.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/cache_buster.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/gdrive.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/helper.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/jinjia.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/usermanagement.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/search.py | 1 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/tornado_wsgi.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/audio.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/error_handler.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/kobo.py | 4 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/tasks_status.py | 1 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/config_sql.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/schedule.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/pagination.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/clean_html.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/remotelogin.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/MyLoginManager.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/main.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/epub.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/render_template.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/epub_helper.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/oauth.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| MEDIUM | cps/iso_language_names.py | 3 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| 23 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cps/search_metadata.py | 57 | def _sanitize_metadata_record(record): | CODE |
| LOW | cps/search_metadata.py | 66 | def _serialize_metadata_records(records): | CODE |
| LOW | cps/search_metadata.py | 130 | def metadata_change_active_provider(prov_name): | CODE |
| LOW | cps/db.py | 863 | def fill_indexpage_with_archived_books(self, page, database, pagesize, db_filter, order, allow_show_archived, | CODE |
| LOW | cps/isoLanguages.py | 70 | def get_language_code_from_name(locale, language_names, remainder=None): | CODE |
| LOW | cps/isoLanguages.py | 83 | def get_valid_language_codes_from_code(locale, language_names, remainder=None): | CODE |
| LOW | cps/server.py | 100 | def _make_gevent_socket_activated(): | CODE |
| LOW⚡ | cps/shelf.py | 342 | def check_shelf_edit_permissions(cur_shelf): | CODE |
| LOW⚡ | cps/shelf.py | 352 | def check_shelf_view_permissions(cur_shelf): | CODE |
| LOW | cps/ub.py | 69 | def signal_store_user_session(object, user): | CODE |
| LOW | cps/ub.py | 205 | def list_denied_column_values(self): | CODE |
| LOW | cps/ub.py | 209 | def list_allowed_column_values(self): | CODE |
| LOW | cps/ub.py | 580 | def migrate_registration_table(engine, _session): | CODE |
| LOW | cps/ub.py | 594 | def migrate_user_session_table(engine, _session): | CODE |
| LOW | cps/ub.py | 606 | def migrate_remote_auth_token_table(engine, _session): | CODE |
| LOW | cps/oauth_bb.py | 218 | def generate_oauth_blueprints(): | CODE |
| LOW | cps/editbooks.py | 593 | def table_xchange_author_title(): | CODE |
| LOW | cps/editbooks.py | 878 | def prepare_authors_on_upload(title, authr): | CODE |
| LOW | cps/editbooks.py | 1067 | def render_delete_book_result(book_format, book_id, location=""): | CODE |
| LOW | cps/editbooks.py | 1683 | def create_objects_for_addition(db_element, add_element, db_type): | CODE |
| LOW | cps/gdriveutils.py | 614 | def get_metadata_backup_via_gdrive(metadata_path): | CODE |
| LOW | cps/updater.py | 424 | def _nightly_available_updates(self, request_method): | CODE |
| LOW | cps/updater.py | 481 | def _stable_updater_set_status(self, i, newer, status, parents, commit): | CODE |
| LOW | cps/updater.py | 502 | def _stable_updater_parse_major_version(self, commit, i, parents, current_version, status): | CODE |
| LOW | cps/updater.py | 527 | def _stable_available_updates(self, request_method): | CODE |
| LOW | cps/opds.py | 450 | def get_metadata_calibre_companion(uuid, library): | CODE |
| LOW | cps/comic.py | 71 | def _extract_cover_from_archive(original_file_extension, tmp_file_name, rar_executable): | CODE |
| LOW | cps/cw_babel.py | 40 | def get_available_translations(): | CODE |
| LOW | cps/admin.py | 574 | def update_view_configuration(): | CODE |
| LOW | cps/admin.py | 974 | def check_valid_restricted_column(column): | CODE |
| LOW | cps/admin.py | 1133 | def _validate_reverse_proxy_trusted_ips(value): | CODE |
| LOW | cps/admin.py | 1152 | def _validate_reverse_proxy_header_name(value, label): | CODE |
| LOW | cps/admin.py | 1158 | def _configuration_gdrive_helper(to_save): | CODE |
| LOW | cps/admin.py | 1189 | def _configuration_oauth_helper(to_save): | CODE |
| LOW | cps/admin.py | 1211 | def _configuration_logfile_helper(to_save): | CODE |
| LOW | cps/admin.py | 1227 | def _configuration_ldap_helper(to_save): | CODE |
| LOW | cps/admin.py | 1744 | def _db_configuration_update_helper(): | CODE |
| LOW | cps/admin.py | 1814 | def _configuration_update_helper(): | CODE |
| LOW | cps/admin.py | 2193 | def extract_user_data_from_field(user, field): | CODE |
| LOW | cps/admin.py | 2201 | def extract_dynamic_field_from_filter(user, filtr): | CODE |
| LOW | cps/kobo_auth.py | 137 | def disable_failed_auth_redirect_for_blueprint(bp): | CODE |
| LOW | cps/kobo_auth.py | 148 | def register_url_value_preprocessor(kobo): | CODE |
| LOW | cps/cache_buster.py | 70 | def reverse_to_cache_busted_url(endpoint, values): | CODE |
| LOW | cps/gdrive.py | 54 | def authenticate_google_drive(): | CODE |
| LOW | cps/gdrive.py | 123 | def on_received_watch_confirmation(): | CODE |
| LOW⚡ | cps/helper.py | 1135 | def clear_cover_thumbnail_cache(book_id): | CODE |
| LOW⚡ | cps/helper.py | 1140 | def replace_cover_thumbnail_cache(book_id): | CODE |
| LOW⚡ | cps/helper.py | 1150 | def add_book_to_thumbnail_cache(book_id): | CODE |
| LOW | cps/helper.py | 155 | def check_send_to_ereader_with_converter(formats): | CODE |
| LOW | cps/helper.py | 397 | def rename_all_files_on_change(one_book, new_path, old_path, all_new_name, gdrive=False): | CODE |
| LOW | cps/helper.py | 451 | def update_dir_structure_file(book_id, calibre_path, original_filepath, new_author, db_filename): | CODE |
| LOW | cps/helper.py | 500 | def update_dir_structure_gdrive(book_id, first_author): | CODE |
| LOW | cps/helper.py | 789 | def get_series_thumbnail_on_failure(series_id, resolution): | CODE |
| LOW | cps/helper.py | 800 | def get_series_cover_thumbnail(series_id, resolution=None): | CODE |
| LOW | cps/helper.py | 804 | def get_series_cover_internal(series_id, resolution=None): | CODE |
| LOW | cps/helper.py | 855 | def save_cover_from_filestorage(filepath, saved_filename, img): | CODE |
| LOW | cps/helper.py | 992 | def do_kepubify_metadata_replace(book, file_path): | CODE |
| LOW | cps/reverse_proxy_auth.py | 24 | def parse_trusted_proxy_networks(trusted_proxy_config): | CODE |
| LOW | cps/usermanagement.py | 61 | def requires_basic_auth_if_no_ano(f): | CODE |
| LOW | cps/usermanagement.py | 117 | def _is_request_from_trusted_reverse_proxy(req): | CODE |
| 79 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cps.py | 61 | except Exception: | CODE |
| MEDIUM | cps/db.py | 766 | def delete_dirty_metadata(self, book_id): | CODE |
| MEDIUM | cps/db.py | 1176 | def lcase(s): | CODE |
| LOW | cps/db.py | 541 | except Exception: | CODE |
| LOW | cps/db.py | 658 | except Exception: | CODE |
| LOW | cps/db.py | 709 | except Exception as ex: | CODE |
| LOW | cps/db.py | 901 | except Exception as ex: | CODE |
| LOW | cps/db.py | 985 | except Exception: | CODE |
| LOW | cps/db.py | 999 | except Exception as ex: | CODE |
| LOW | cps/db.py | 1179 | except Exception as ex: | CODE |
| LOW | cps/server.py | 223 | except Exception: | CODE |
| LOW | cps/server.py | 280 | except Exception: | CODE |
| LOW | cps/server.py | 300 | except Exception as ex: | CODE |
| MEDIUM | cps/server.py | 302 | print("Error starting server: %s" % ex) | CODE |
| MEDIUM | cps/server.py | 293 | def start(self): | CODE |
| LOW⚡ | cps/shelf.py | 359 | except Exception as e: | CODE |
| LOW | cps/shelf.py | 402 | except Exception as ex: | CODE |
| MEDIUM | cps/shelf.py | 352 | def check_shelf_view_permissions(cur_shelf): | CODE |
| LOW | cps/web.py | 203 | except Exception as ex: | CODE |
| LOW | cps/web.py | 1310 | except Exception as ex: | CODE |
| LOW | cps/web.py | 1333 | except Exception: | CODE |
| LOW | cps/web.py | 1503 | except Exception as ex: | CODE |
| MEDIUM | cps/web.py | 706 | def render_language_books(page, name, order): | CODE |
| LOW | cps/mobi.py | 296 | except Exception as ex: | CODE |
| LOW⚡ | cps/ub.py | 673 | except Exception: | CODE |
| LOW⚡ | cps/ub.py | 690 | except Exception: | CODE |
| LOW | cps/ub.py | 734 | except Exception: | CODE |
| LOW | cps/ub.py | 766 | except Exception: | CODE |
| LOW | cps/ub.py | 771 | except Exception: | CODE |
| MEDIUM | cps/ub.py | 94 | def delete_user_session(user_id, session_key): | CODE |
| LOW | cps/oauth_bb.py | 160 | except Exception as ex: | CODE |
| LOW | cps/oauth_bb.py | 208 | except Exception as ex: | CODE |
| LOW | cps/uploader.py | 111 | except Exception as ex: | CODE |
| LOW | cps/uploader.py | 145 | except Exception as ex: | CODE |
| LOW | cps/uploader.py | 193 | except Exception as exc: | CODE |
| LOW | cps/uploader.py | 262 | except Exception as ex: | CODE |
| LOW | cps/converter.py | 45 | except Exception as ex: | CODE |
| LOW | cps/__init__.py | 219 | except Exception as e: | CODE |
| LOW | cps/editbooks.py | 774 | except Exception as ex: | CODE |
| LOW | cps/editbooks.py | 1126 | except Exception as ex: | CODE |
| LOW | cps/editbooks.py | 1154 | except Exception as ex: | CODE |
| LOW | cps/logger.py | 199 | except Exception: | CODE |
| MEDIUM | cps/logger.py | 192 | def write(self, message): | CODE |
| LOW | cps/gdriveutils.py | 182 | except Exception as ex: | CODE |
| LOW | cps/gdriveutils.py | 199 | except Exception as ex: | CODE |
| LOW | cps/gdriveutils.py | 252 | except Exception: | CODE |
| LOW | cps/gdriveutils.py | 531 | except Exception as ex: | CODE |
| MEDIUM | cps/gdriveutils.py | 130 | def __init__(self): | CODE |
| LOW | cps/updater.py | 372 | except Exception: | CODE |
| LOW | cps/comic.py | 102 | except Exception as ex: | CODE |
| MEDIUM | cps/admin.py | 693 | def delete_domain(): | CODE |
| LOW | cps/admin.py | 411 | except Exception as ex: | CODE |
| LOW | cps/admin.py | 547 | except Exception as ex: | CODE |
| LOW | cps/admin.py | 1073 | except Exception: | CODE |
| LOW | cps/admin.py | 1081 | except Exception: | CODE |
| LOW | cps/admin.py | 1355 | except Exception as ex: | CODE |
| LOW | cps/admin.py | 1376 | except Exception as e: | CODE |
| LOW | cps/admin.py | 1603 | except Exception: | CODE |
| LOW | cps/admin.py | 1638 | except Exception as ex: | CODE |
| LOW | cps/admin.py | 1658 | except Exception as ex: | CODE |
| 53 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | cps.py | 61 | except Exception: | CODE |
| HIGH | cps/search_metadata.py | 138 | except AttributeError: | CODE |
| HIGH | cps/db.py | 1166 | except sqliteOperationalError: | CODE |
| HIGH | cps/db.py | 848 | except KeyError: | CODE |
| HIGH | cps/web.py | 926 | except AttributeError: | CODE |
| HIGH | cps/mobi.py | 182 | except UnicodeDecodeError: | CODE |
| HIGH | cps/ub.py | 224 | except AttributeError: | CODE |
| HIGH | cps/ub.py | 766 | except Exception: | CODE |
| HIGH | cps/ub.py | 771 | except Exception: | CODE |
| HIGH | cps/oauth_bb.py | 41 | except NameError: | CODE |
| HIGH | cps/admin.py | 703 | except KeyError: | CODE |
| HIGH | cps/admin.py | 562 | except AttributeError: | CODE |
| HIGH | cps/admin.py | 1349 | except AttributeError: | CODE |
| HIGH | cps/gdrive.py | 157 | except AttributeError: | CODE |
| HIGH | cps/gdrive.py | 113 | except (HttpError, AttributeError): | CODE |
| HIGH | cps/error_handler.py | 72 | except Exception: | CODE |
| HIGH | cps/kobo.py | 230 | except AttributeError: | CODE |
| HIGH | cps/kobo.py | 245 | except AttributeError: | CODE |
| HIGH | cps/config_sql.py | 431 | except AttributeError: | CODE |
| HIGH | cps/config_sql.py | 594 | except ValueError: | CODE |
| HIGH | cps/oauth.py | 26 | except ImportError: | CODE |
| HIGH | cps/tasks/clean.py | 38 | except FileNotFoundError: | CODE |
| HIGH | cps/metadata_provider/amazon.py | 26 | except ImportError: | CODE |
| HIGH | cps/services/simpleldap.py | 28 | except ImportError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cps.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | qodana.yaml | 1 | #-------------------------------------------------------------------------------# | COMMENT |
| LOW | cps/subproc_wrapper.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/themes.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/search_metadata.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/gevent_wsgi.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/db.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/isoLanguages.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/server.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/shelf.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/cover.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/web.py | 1 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| LOW | cps/string_helper.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/mobi.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/kobo_sync_status.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/ub.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/redirect.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/embed_helper.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/oauth_bb.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/fb2.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/constants.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/file_helper.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/uploader.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/converter.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/__init__.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/editbooks.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/debug_info.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/about.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/logger.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/gdriveutils.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/gdriveutils.py | 441 | "mimeType": "application/vnd.google-apps.folder"}) | COMMENT |
| LOW | cps/updater.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/opds.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/comic.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/admin.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/cli.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/kobo_auth.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | cps/basic.py | 1 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| LOW | cps/fs.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/cache_buster.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/gdrive.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/helper.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/jinjia.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/usermanagement.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/search.py | 1 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| LOW | cps/tornado_wsgi.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/audio.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/error_handler.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/kobo.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | cps/tasks_status.py | 1 | # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | COMMENT |
| LOW | cps/config_sql.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/schedule.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/pagination.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/clean_html.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/remotelogin.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/MyLoginManager.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/main.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/epub.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/render_template.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | cps/epub_helper.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| 49 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cps/db.py | 122 | CODE | |
| LOW | cps/db.py | 167 | CODE | |
| LOW | cps/db.py | 511 | CODE | |
| LOW | cps/db.py | 567 | CODE | |
| LOW | cps/db.py | 863 | CODE | |
| LOW | cps/server.py | 154 | CODE | |
| LOW | cps/shelf.py | 107 | CODE | |
| LOW | cps/shelf.py | 153 | CODE | |
| LOW | cps/shelf.py | 466 | CODE | |
| LOW | cps/web.py | 377 | CODE | |
| LOW | cps/web.py | 839 | CODE | |
| LOW | cps/web.py | 1198 | CODE | |
| LOW | cps/web.py | 1393 | CODE | |
| LOW | cps/web.py | 1573 | CODE | |
| LOW | cps/dep_check.py | 24 | CODE | |
| LOW | cps/dep_check.py | 75 | CODE | |
| LOW | cps/embed_helper.py | 29 | CODE | |
| LOW | cps/oauth_bb.py | 128 | CODE | |
| LOW | cps/file_helper.py | 63 | CODE | |
| LOW | cps/uploader.py | 90 | CODE | |
| LOW | cps/uploader.py | 184 | CODE | |
| LOW | cps/editbooks.py | 108 | CODE | |
| LOW | cps/editbooks.py | 331 | CODE | |
| LOW | cps/editbooks.py | 472 | CODE | |
| LOW | cps/editbooks.py | 555 | CODE | |
| LOW | cps/editbooks.py | 634 | CODE | |
| LOW | cps/editbooks.py | 813 | CODE | |
| LOW | cps/editbooks.py | 1021 | CODE | |
| LOW | cps/editbooks.py | 1076 | CODE | |
| LOW | cps/editbooks.py | 1108 | CODE | |
| LOW | cps/editbooks.py | 1337 | CODE | |
| LOW | cps/editbooks.py | 1412 | CODE | |
| LOW | cps/editbooks.py | 1459 | CODE | |
| LOW | cps/editbooks.py | 1645 | CODE | |
| LOW | cps/editbooks.py | 1683 | CODE | |
| LOW | cps/gdriveutils.py | 277 | CODE | |
| LOW | cps/updater.py | 162 | CODE | |
| LOW | cps/updater.py | 213 | CODE | |
| LOW | cps/updater.py | 263 | CODE | |
| LOW | cps/updater.py | 341 | CODE | |
| LOW | cps/updater.py | 527 | CODE | |
| LOW | cps/comic.py | 71 | CODE | |
| LOW | cps/comic.py | 119 | CODE | |
| LOW | cps/comic.py | 140 | CODE | |
| LOW | cps/admin.py | 210 | CODE | |
| LOW | cps/admin.py | 452 | CODE | |
| LOW | cps/admin.py | 622 | CODE | |
| LOW | cps/admin.py | 850 | CODE | |
| LOW | cps/admin.py | 898 | CODE | |
| LOW | cps/admin.py | 1573 | CODE | |
| LOW | cps/admin.py | 2103 | CODE | |
| LOW | cps/cli.py | 54 | CODE | |
| LOW | cps/cache_buster.py | 31 | CODE | |
| LOW | cps/helper.py | 266 | CODE | |
| LOW | cps/helper.py | 282 | CODE | |
| LOW | cps/helper.py | 309 | CODE | |
| LOW | cps/helper.py | 358 | CODE | |
| LOW | cps/helper.py | 397 | CODE | |
| LOW | cps/helper.py | 425 | CODE | |
| LOW | cps/helper.py | 533 | CODE | |
| 32 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | cps/static/js/libs/epub.min.js | 1 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("JSZip")):"function"==typeof d | CODE |
| CRITICAL | cps/static/js/libs/jquery.min.js | 2 | !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):f | CODE |
| CRITICAL⚡ | …atic/js/libs/bootstrap-table/bootstrap-editable.min.js | 5 | !function(a){"use strict";var b=function(b,c){this.options=a.extend({},a.fn.editableform.defaults,c),this.$div=a(b),this | CODE |
| CRITICAL⚡ | …atic/js/libs/bootstrap-table/bootstrap-editable.min.js | 7 | daysMin:["Su","Mo","Tu","We","Th","Fr","Sa","Su"],months:["January","February","March","April","May","June","July","Augu | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cps/subproc_wrapper.py | 19 | CODE | |
| LOW | cps/search_metadata.py | 22 | CODE | |
| LOW | cps/cover.py | 19 | CODE | |
| LOW | cps/web.py | 50 | CODE | |
| LOW | cps/web.py | 50 | CODE | |
| LOW | cps/mobi.py | 19 | CODE | |
| LOW | cps/gdriveutils.py | 25 | CODE | |
| LOW | cps/comic.py | 25 | CODE | |
| LOW | cps/admin.py | 76 | CODE | |
| LOW | cps/tornado_wsgi.py | 32 | CODE | |
| LOW | cps/tornado_wsgi.py | 33 | CODE | |
| LOW | cps/schedule.py | 22 | CODE | |
| LOW | cps/tasks/convert.py | 22 | CODE | |
| LOW | cps/metadata_provider/amazon.py | 25 | CODE | |
| LOW | cps/cw_login/__init__.py | 2 | CODE | |
| LOW | cps/cw_login/__init__.py | 3 | CODE | |
| LOW | cps/cw_login/__init__.py | 4 | CODE | |
| LOW | cps/cw_login/__init__.py | 5 | CODE | |
| LOW | cps/cw_login/__init__.py | 6 | CODE | |
| LOW | cps/cw_login/__init__.py | 7 | CODE | |
| LOW | cps/cw_login/__init__.py | 8 | CODE | |
| LOW | cps/cw_login/__init__.py | 9 | CODE | |
| LOW | cps/cw_login/__init__.py | 10 | CODE | |
| LOW | cps/cw_login/__init__.py | 11 | CODE | |
| LOW | cps/cw_login/__init__.py | 12 | CODE | |
| LOW | cps/cw_login/__init__.py | 13 | CODE | |
| LOW | cps/cw_login/__init__.py | 14 | CODE | |
| LOW | cps/cw_login/__init__.py | 15 | CODE | |
| LOW | cps/cw_login/__init__.py | 16 | CODE | |
| LOW | cps/cw_login/__init__.py | 17 | CODE | |
| LOW | cps/cw_login/__init__.py | 18 | CODE | |
| LOW | cps/cw_login/__init__.py | 19 | CODE | |
| LOW | cps/cw_login/__init__.py | 20 | CODE | |
| LOW | cps/cw_login/__init__.py | 21 | CODE | |
| LOW | cps/cw_login/__init__.py | 22 | CODE | |
| LOW | cps/cw_login/__init__.py | 23 | CODE | |
| LOW | cps/cw_login/__init__.py | 25 | CODE | |
| LOW | cps/cw_login/__init__.py | 26 | CODE | |
| LOW | cps/cw_login/__init__.py | 27 | CODE | |
| LOW | cps/cw_login/__init__.py | 28 | CODE | |
| LOW | cps/cw_login/__init__.py | 29 | CODE | |
| LOW | cps/cw_login/__init__.py | 30 | CODE | |
| LOW | cps/cw_login/__init__.py | 31 | CODE | |
| LOW | cps/cw_login/__init__.py | 32 | CODE | |
| LOW | cps/cw_login/__init__.py | 33 | CODE | |
| LOW | cps/cw_login/__init__.py | 34 | CODE | |
| LOW | cps/cw_login/__init__.py | 35 | CODE | |
| LOW | cps/cw_login/__init__.py | 36 | CODE | |
| LOW | cps/cw_login/__init__.py | 37 | CODE | |
| LOW | cps/cw_advocate/__init__.py | 19 | CODE | |
| LOW | cps/cw_advocate/__init__.py | 20 | CODE | |
| LOW | cps/cw_advocate/__init__.py | 21 | CODE | |
| LOW | cps/cw_advocate/__init__.py | 22 | CODE | |
| LOW | cps/services/background_scheduler.py | 19 | CODE | |
| LOW | cps/services/background_scheduler.py | 26 | CODE | |
| LOW | cps/services/SyncToken.py | 20 | CODE | |
| LOW | cps/services/simpleldap.py | 19 | CODE | |
| LOW | cps/services/simpleldap.py | 27 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | cps/ub.py | 681 | user.email = "admin@example.org" | CODE |
| LOW | cps/static/js/libs/wysihtml5-0.0.3.js | 51 | this.setAttr('placeholder'); | CODE |
| LOW⚡ | cps/static/js/libs/viewer.js | 2370 | input: ["alt", "placeholder"], | CODE |
| LOW⚡ | cps/static/js/libs/viewer.js | 2377 | textarea: ["placeholder"], | CODE |
| LOW⚡ | cps/static/js/libs/viewer.js | 2385 | textbox: ["placeholder", "value"] | CODE |
| LOW | cps/static/js/libs/wysihtml5-0.3.0.min.js | 110 | hasCurrentStyleProperty:function(){return"currentStyle"in c},insertsLineBreaksOnReturn:function(){return d},supportsPlac | CODE |
| LOW | cps/static/js/libs/wysihtml5-0.3.0.min.js | 156 | (function(b){b.simulatePlaceholder=function(c,a,d){var e=function(){a.hasPlaceholderSet()&&a.clear();b.removeClass(a.ele | CODE |
| LOW⚡ | cps/static/js/libs/wysihtml5-0.3.0.min.js | 218 | this.hasPlaceholderSet()&&this.clear();this.base();var c=this.element.lastChild;a&&c&&("BR"===c.nodeName?this.selection. | CODE |
| LOW⚡ | cps/static/js/libs/wysihtml5-0.3.0.min.js | 221 | e),c.addClass(this.iframe,e));(e="string"===typeof this.config.placeholder?this.config.placeholder:this.textarea.element | CODE |
| LOW⚡ | cps/static/js/libs/wysihtml5-0.3.0.min.js | 228 | q=p.hasAttribute("placeholder"),r=q&&p.getAttribute("placeholder");this.focusStylesHost=this.focusStylesHost||e.cloneNod | CODE |
| LOW⚡ | cps/static/js/libs/wysihtml5-0.3.0.min.js | 229 | var m=b.lang.array(g).without(["display"]);n?n.focus():p.blur();q&&p.setAttribute("placeholder",r);if(!b.browser.hasCurr | CODE |
| LOW | cps/static/js/libs/wysihtml5-0.3.0.min.js | 240 | wysihtml5.views.Textarea=wysihtml5.views.View.extend({name:"textarea",constructor:function(b,c,a){this.base(b,c,a);this. | CODE |
| LOW⚡ | cps/static/js/libs/tinymce/tinymce.min.js | 9 | !function(){"use strict";function r(e){if(null===e)return"null";if(void 0===e)return"undefined";var t=typeof e;return"ob | CODE |
| LOW | cps/static/js/libs/tinymce/themes/silver/theme.min.js | 9 | !function(){"use strict";function t(o){return function(t){return e=typeof(n=t),(null===n?"null":"object"==e&&(Array.prot | CODE |
| LOW⚡ | …atic/js/libs/bootstrap-table/bootstrap-editable.min.js | 5 | !function(a){"use strict";var b=function(b,c){this.options=a.extend({},a.fn.editableform.defaults,c),this.$div=a(b),this | CODE |
| LOW⚡ | …atic/js/libs/bootstrap-table/bootstrap-editable.min.js | 7 | daysMin:["Su","Mo","Tu","We","Th","Fr","Sa","Su"],months:["January","February","March","April","May","June","July","Augu | CODE |
| LOW | test/Calibre-Web TestSummary_Linux.html | 2962 | AssertionError: 'series' unexpectedly found in {'id': 5, 'reader': [], 'title': 'tes | CODE |
| LOW | test/Calibre-Web TestSummary_Linux.html | 2962 | AssertionError: 'series' unexpectedly found in {'id': 5, 'reader': [], 'title': 'tes | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | cps/static/js/libs/compromise.min.js | 3 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define | CODE |
| MEDIUM⚡ | cps/static/js/libs/epub.min.js | 1 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("JSZip")):"function"==typeof d | CODE |
| MEDIUM⚡ | cps/static/js/libs/epub.min.js | 1 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("JSZip")):"function"==typeof d | CODE |
| MEDIUM⚡ | cps/static/js/libs/tinymce/tinymce.min.js | 9 | !function(){"use strict";function r(e){if(null===e)return"null";if(void 0===e)return"undefined";var t=typeof e;return"ob | CODE |
| MEDIUM⚡ | cps/static/js/libs/tinymce/tinymce.min.js | 9 | !function(){"use strict";function r(e){if(null===e)return"null";if(void 0===e)return"undefined";var t=typeof e;return"ob | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cps/db.py | 978 | # Check if FTS5 table exists before attempting search | COMMENT |
| LOW | cps/db.py | 1090 | # Check if there are more results | COMMENT |
| LOW | cps/updater.py | 573 | # Check if major versions are identical search for newest non-equal commit and update to this one | COMMENT |
| LOW | cps/helper.py | 202 | # Check if a reader is existing for any of the book formats, if not, return empty list, otherwise return | COMMENT |
| LOW | cps/tasks/thumbnail.py | 99 | # Check if job has been cancelled or ended | COMMENT |
| LOW | cps/tasks/thumbnail.py | 296 | # Check if job has been cancelled or ended | COMMENT |
| LOW | cps/metadata_provider/lubimyczytac.py | 278 | # Check if book is not a bundle, i.e. chapter 1-3 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | cps/gdriveutils.py | 476 | Watch for any changes to a specific file. Args: service: Drive API service instance. file_id: ID of the file | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cps/helper.py | 139 | txt += _("Don't forget to change your password after your first login.") + "\r\n" | CODE |
| LOW | cps/services/gmail.py | 52 | # don't forget to dump one more time after the refresh | COMMENT |
| LOW | cps/services/gmail.py | 52 | # don't forget to dump one more time after the refresh | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cps/cw_login/__init__.py | 43 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cps/static/js/compress/libunrar.js | 15 | var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cps/cw_advocate/addrvalidator.py | 85 | CODE |