Deepfakes Software For All
This report summarizes scanner evidence for deepfakes/faceswap, a Python project with 57,574 GitHub stars. SynthScan examined 98,865 lines of code across 371 source files, recording 832 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 11.9 (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? 213 finding(s).
Are imports declared and package/API names verified? 246 finding(s).
Are wrappers, guards, and repeated structures necessary? 510 finding(s).
Which changes need focused human review? 832 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 832 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 |
|---|---|---|---|---|
| HIGH | tools/sort/sort.py | 0 | the entry point for triggering the training process. should only be called from :class:`lib.cli.launcher.scriptexecutor` | STRING |
| HIGH | tools/mask/mask.py | 0 | the entry point for triggering the training process. should only be called from :class:`lib.cli.launcher.scriptexecutor` | STRING |
| HIGH | scripts/train.py | 0 | the entry point for triggering the training process. should only be called from :class:`lib.cli.launcher.scriptexecutor` | STRING |
| HIGH | plugins/train/model/phaze_a_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/train/model/realface_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/train/model/dfl_sae_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/train/model/dfaker_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/train/model/unbalanced_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/train/model/dlight_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/train/model/villain_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/train/model/original_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/train/model/dfl_h128_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/extract/detect/retinaface_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/extract/detect/s3fd_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/extract/detect/mtcnn_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/extract/detect/cv2_dnn_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/extract/identity/vggface2_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/extract/identity/t_face_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/extract/align/fan_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/extract/align/hrnet_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/extract/mask/unet_dfl_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/extract/mask/custom_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/extract/mask/bisenet_fp_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/extract/mask/vgg_obstructed_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/extract/mask/vgg_clear_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/convert/color/color_transfer_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/convert/color/match_hist_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/convert/color/manual_balance_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/convert/writer/patch_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/convert/writer/pillow_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/convert/writer/ffmpeg_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/convert/writer/gif_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/convert/writer/opencv_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/convert/mask/mask_blend_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/convert/scaling/sharpen_defaults.py | 0 | the default options for the faceswap sharpen scaling plugin. defaults files should be named `<plugin_name>_defaults.py` | STRING |
| HIGH | plugins/extract/detect/retinaface.py | 0 | run model to get predictions parameters ---------- batch a batch of images ready to feed the model returns ------- the b | STRING |
| HIGH | plugins/extract/detect/cv2_dnn.py | 0 | run model to get predictions parameters ---------- batch a batch of images ready to feed the model returns ------- the b | STRING |
| HIGH | plugins/extract/detect/s3fd.py | 0 | run model to get predictions parameters ---------- batch a batch of images ready to feed the model returns ------- the b | STRING |
| HIGH | plugins/extract/detect/mtcnn.py | 0 | run model to get predictions parameters ---------- batch a batch of images ready to feed the model returns ------- the b | STRING |
| HIGH | plugins/extract/identity/vggface2.py | 0 | format the detected faces for prediction parameters ---------- batch the batch of aligned faces in the correct format fo | STRING |
| HIGH | plugins/extract/identity/t_face.py | 0 | format the detected faces for prediction parameters ---------- batch the batch of aligned faces in the correct format fo | STRING |
| HIGH | plugins/extract/mask/bisenet_fp.py | 0 | format the detected faces for prediction parameters ---------- batch the batch of aligned faces in the correct format fo | STRING |
| HIGH | plugins/extract/mask/vgg_obstructed.py | 0 | format the detected faces for prediction parameters ---------- batch the batch of aligned faces in the correct format fo | STRING |
| HIGH | plugins/extract/mask/vgg_clear.py | 0 | format the detected faces for prediction parameters ---------- batch the batch of aligned faces in the correct format fo | STRING |
| HIGH | plugins/extract/align/hrnet.py | 0 | format the roi faces detection boxes for prediction parameters ---------- batch the batch of face detection bounding box | STRING |
| HIGH | plugins/extract/align/cv2_dnn.py | 0 | format the roi faces detection boxes for prediction parameters ---------- batch the batch of face detection bounding box | STRING |
| HIGH | plugins/extract/align/fan.py | 0 | format the roi faces detection boxes for prediction parameters ---------- batch the batch of face detection bounding box | STRING |
| HIGH | plugins/extract/align/hrnet.py | 0 | predict the 68 point landmarks parameters ---------- feed the batch to feed into the aligner returns ------- the predict | STRING |
| HIGH | plugins/extract/align/fan.py | 0 | predict the 68 point landmarks parameters ---------- feed the batch to feed into the aligner returns ------- the predict | STRING |
| HIGH | plugins/extract/align/cv2_dnn.py | 0 | predict the 68 point landmarks parameters ---------- feed the batch to feed into the aligner returns ------- the predict | STRING |
| HIGH | plugins/extract/mask/bisenet_fp.py | 0 | neural network to process face image into a segmentation mask of the face | STRING |
| HIGH | plugins/extract/mask/vgg_obstructed.py | 0 | neural network to process face image into a segmentation mask of the face | STRING |
| HIGH | plugins/extract/mask/unet_dfl.py | 0 | neural network to process face image into a segmentation mask of the face | STRING |
| HIGH | plugins/extract/mask/vgg_clear.py | 0 | neural network to process face image into a segmentation mask of the face | STRING |
| HIGH | plugins/extract/mask/bisenet_fp.py | 0 | get the masks from the model parameters ---------- batch the batch to feed into the masker returns ------- the predicted | STRING |
| HIGH | plugins/extract/mask/vgg_obstructed.py | 0 | get the masks from the model parameters ---------- batch the batch to feed into the masker returns ------- the predicted | STRING |
| HIGH | plugins/extract/mask/unet_dfl.py | 0 | get the masks from the model parameters ---------- batch the batch to feed into the masker returns ------- the predicted | STRING |
| HIGH | plugins/extract/mask/vgg_clear.py | 0 | get the masks from the model parameters ---------- batch the batch to feed into the masker returns ------- the predicted | STRING |
| HIGH | tests/lib/model/losses/loss_test.py | 0 | tests for faceswap feature losses. adapted from keras tests. | STRING |
| HIGH | tests/lib/model/losses/perceptual_loss_test.py | 0 | tests for faceswap feature losses. adapted from keras tests. | STRING |
| 4 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | setup.py | 88 | def set_backend(self, backend: T.Literal["nvidia", "apple_silicon", "cpu", "rocm"]) -> None: | CODE |
| LOW | setup.py | 99 | def set_requirements(self, requirements: str) -> None: | CODE |
| LOW | setup.py | 216 | def set_config(self) -> None: | CODE |
| LOW | update_deps.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/sort/info_loader.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/sort/info_loader.py | 181 | def update_png_header(self, filename: str, alignments: PNGAlignments) -> None: | CODE |
| LOW | tools/sort/sort.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/sort/sort_methods_aligned.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/sort/sort_methods.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/mask/mask.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/mask/mask_import.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/mask/loader.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/mask/mask_output.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/mask/mask_generate.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/mask/mask_generate.py | 147 | def _update_from_face(self, media: FrameFaces) -> None: | CODE |
| LOW | tools/mask/mask_generate.py | 172 | def _update_from_frame(self, media: FrameFaces) -> None: | CODE |
| LOW | tools/effmpeg/effmpeg.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/effmpeg/effmpeg.py | 157 | def _set_output(self) -> None: | CODE |
| LOW | tools/effmpeg/effmpeg.py | 168 | def _set_ref_video(self) -> None: | CODE |
| LOW | tools/effmpeg/effmpeg.py | 207 | def _set_times(self) -> None: | CODE |
| LOW | tools/effmpeg/effmpeg.py | 216 | def _set_fps(self) -> None: | CODE |
| LOW | tools/manual/globals.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/manual/globals.py | 232 | def set_face_index(self, index: int) -> None: | CODE |
| LOW | tools/manual/globals.py | 244 | def set_frame_count(self, count: int) -> None: | CODE |
| LOW | tools/manual/globals.py | 256 | def set_current_frame(self, image: np.ndarray, filename: str) -> None: | CODE |
| LOW | tools/manual/globals.py | 277 | def set_frame_display_dims(self, width: int, height: int) -> None: | CODE |
| LOW | tools/manual/globals.py | 300 | def set_zoomed(self, state: bool) -> None: | CODE |
| LOW | tools/manual/manual.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/manual/manual.py | 289 | def _set_initial_layout(self) -> None: | CODE |
| LOW | tools/manual/manual.py | 397 | def _set_tk_callbacks(self) -> None: | CODE |
| LOW | tools/manual/manual.py | 413 | def _update_options(self, *args) -> None: # pylint:disable=unused-argument | CODE |
| LOW | tools/manual/manual.py | 539 | def set_normalization_method(self, method: T.Literal["none", "clahe", "hist", "mean"]) -> None: | CODE |
| LOW | tools/manual/thumbnails.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/manual/thumbnails.py | 220 | def _set_thumbnail(self, filename: str, frame: np.ndarray, frame_index: int) -> None: | CODE |
| LOW | tools/manual/detected_faces.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/manual/face_viewer/viewport.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/manual/face_viewer/viewport.py | 155 | def _update_viewport(self, refresh_annotations: bool) -> None: | CODE |
| LOW | tools/manual/face_viewer/viewport.py | 741 | def update_mask(self, mask: np.ndarray | None) -> None: | CODE |
| LOW | tools/manual/face_viewer/frame.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/manual/face_viewer/frame.py | 96 | def _update_viewport(self, event: tk.Event) -> None: # pylint:disable=unused-argument | CODE |
| LOW | tools/manual/face_viewer/frame.py | 136 | def set_annotation_display(self, key: str) -> None: | CODE |
| LOW | tools/manual/face_viewer/frame.py | 385 | def _update_mask_type(self) -> None: | CODE |
| LOW | tools/manual/face_viewer/frame.py | 446 | def _update_mesh_color(self) -> None: | CODE |
| LOW | tools/manual/face_viewer/frame.py | 459 | def _update_box_color(self) -> None: | CODE |
| LOW | tools/manual/face_viewer/interact.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/manual/face_viewer/interact.py | 271 | def _set_active_objects(self) -> None: | CODE |
| LOW | tools/manual/face_viewer/interact.py | 346 | def _update_on_edit(self) -> None: | CODE |
| LOW | tools/manual/face_viewer/interact.py | 355 | def _update_face(self) -> None: | CODE |
| LOW | tools/manual/frame_viewer/control.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/manual/frame_viewer/frame.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/manual/frame_viewer/editor/mask.py | 168 | def update_annotation(self) -> None: | CODE |
| LOW | tools/manual/frame_viewer/editor/mask.py | 192 | def _set_face_meta_data(self, mask: align.Mask, face_index: int) -> None: | CODE |
| LOW | tools/manual/frame_viewer/editor/mask.py | 389 | def _update_roi_box(self, mask: align.Mask, face_index: int, color: str) -> None: | CODE |
| LOW | tools/manual/frame_viewer/editor/mask.py | 417 | def _update_cursor(self, event: tk.Event) -> None: | CODE |
| LOW | tools/manual/frame_viewer/editor/_base.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/model/model.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/preview/preview.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/preview/preview.py | 195 | def set_busy(self) -> None: | CODE |
| LOW | tools/preview/preview.py | 241 | def set_needs_patch(self) -> None: | CODE |
| 211 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 4 | CODE | |
| LOW | setup.py | 25 | CODE | |
| LOW | tools/sort/info_loader.py | 2 | CODE | |
| LOW | tools/sort/sort.py | 3 | CODE | |
| LOW | tools/sort/sort_methods_aligned.py | 5 | CODE | |
| LOW | tools/sort/sort_methods.py | 7 | CODE | |
| LOW | tools/mask/mask.py | 3 | CODE | |
| LOW | tools/mask/mask.py | 23 | CODE | |
| LOW | tools/mask/mask_import.py | 3 | CODE | |
| LOW | tools/mask/loader.py | 4 | CODE | |
| LOW | tools/mask/mask_output.py | 3 | CODE | |
| LOW | tools/mask/mask_generate.py | 3 | CODE | |
| LOW | tools/mask/mask_generate.py | 20 | CODE | |
| LOW | tools/mask/mask_generate.py | 21 | CODE | |
| LOW | tools/manual/globals.py | 3 | CODE | |
| LOW | tools/manual/manual.py | 3 | CODE | |
| LOW | tools/manual/thumbnails.py | 3 | CODE | |
| LOW | tools/manual/detected_faces.py | 5 | CODE | |
| LOW | tools/manual/face_viewer/viewport.py | 3 | CODE | |
| LOW | tools/manual/face_viewer/frame.py | 3 | CODE | |
| LOW | tools/manual/face_viewer/interact.py | 3 | CODE | |
| LOW | tools/manual/frame_viewer/frame.py | 17 | CODE | |
| LOW | tools/manual/frame_viewer/frame.py | 17 | CODE | |
| LOW | tools/manual/frame_viewer/frame.py | 17 | CODE | |
| LOW | tools/manual/frame_viewer/frame.py | 17 | CODE | |
| LOW | tools/manual/frame_viewer/frame.py | 17 | CODE | |
| LOW | tools/manual/frame_viewer/frame.py | 17 | CODE | |
| LOW | tools/manual/frame_viewer/editor/mask.py | 3 | CODE | |
| LOW | tools/manual/frame_viewer/editor/__init__.py | 4 | CODE | |
| LOW | tools/manual/frame_viewer/editor/__init__.py | 5 | CODE | |
| LOW | tools/manual/frame_viewer/editor/__init__.py | 6 | CODE | |
| LOW | tools/manual/frame_viewer/editor/__init__.py | 7 | CODE | |
| LOW | tools/manual/frame_viewer/editor/__init__.py | 7 | CODE | |
| LOW | tools/manual/frame_viewer/editor/__init__.py | 8 | CODE | |
| LOW | tools/model/model.py | 3 | CODE | |
| LOW | tools/model/model.py | 18 | CODE | |
| LOW | tools/model/model.py | 18 | CODE | |
| LOW | tools/preview/preview.py | 3 | CODE | |
| LOW | tools/preview/viewer.py | 3 | CODE | |
| LOW | tools/preview/control_panels.py | 3 | CODE | |
| LOW | tools/alignments/media.py | 3 | CODE | |
| LOW | tools/alignments/alignments.py | 14 | CODE | |
| LOW | tools/alignments/alignments.py | 14 | CODE | |
| LOW | tools/alignments/alignments.py | 14 | CODE | |
| LOW | tools/alignments/alignments.py | 15 | CODE | |
| LOW | tools/alignments/alignments.py | 15 | CODE | |
| LOW | tools/alignments/alignments.py | 15 | CODE | |
| LOW | tools/alignments/alignments.py | 16 | CODE | |
| LOW | tools/alignments/alignments.py | 16 | CODE | |
| LOW | tools/alignments/jobs_frames.py | 3 | CODE | |
| LOW | tools/alignments/jobs.py | 3 | CODE | |
| LOW | tools/alignments/jobs_faces.py | 3 | CODE | |
| LOW | plugins/plugin_loader.py | 3 | CODE | |
| LOW | plugins/train/model/phaze_a.py | 5 | CODE | |
| LOW | plugins/train/model/_base/io.py | 11 | CODE | |
| LOW | plugins/train/model/_base/__init__.py | 4 | CODE | |
| LOW | plugins/train/model/_base/__init__.py | 4 | CODE | |
| LOW | plugins/train/model/_base/model.py | 6 | CODE | |
| LOW | plugins/train/model/_base/settings.py | 12 | CODE | |
| LOW | plugins/train/model/_base/settings.py | 25 | CODE | |
| 181 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/sort/sort_methods.py | 167 | def _binning_linear_threshold(self, units: str = "", multiplier: int = 1) -> list[list[str]]: | CODE |
| LOW | tools/mask/mask_import.py | 146 | def _file_list_to_frame_number(self, file_list: list[str]) -> dict[int, str]: | CODE |
| LOW | tools/manual/globals.py | 186 | def var_update_active_viewport(self) -> tk.BooleanVar: | CODE |
| LOW | tools/manual/face_viewer/frame.py | 394 | def _bind_mouse_wheel_scrolling(self) -> None: | CODE |
| LOW | tools/manual/face_viewer/frame.py | 734 | def transport_index_from_frame(self, frame_index: int) -> int | None: | CODE |
| LOW | tools/manual/frame_viewer/control.py | 58 | def _update_total_frame_count(self, *args): # pylint:disable=unused-argument | CODE |
| LOW | tools/manual/frame_viewer/frame.py | 255 | def _add_filter_threshold_slider(self, frame): | CODE |
| LOW | tools/manual/frame_viewer/frame.py | 455 | def _set_selected_action_tkvar(self): | CODE |
| LOW | tools/manual/frame_viewer/frame.py | 503 | def _disable_enable_copy_buttons(self, *args): # pylint:disable=unused-argument | CODE |
| LOW | tools/manual/frame_viewer/frame.py | 516 | def _disable_enable_reload_button(self, *args): # pylint:disable=unused-argument | CODE |
| LOW | tools/manual/frame_viewer/frame.py | 595 | def _display_optional_buttons(self, *args): # pylint:disable=unused-argument | CODE |
| LOW | tools/manual/frame_viewer/editor/mask.py | 138 | def _set_tk_mask_change_callback(self) -> tk.StringVar: | CODE |
| LOW | tools/manual/frame_viewer/editor/mask.py | 144 | def _set_tk_cursor_shape_change_callback(self) -> tk.StringVar: | CODE |
| LOW | tools/manual/frame_viewer/editor/mask.py | 332 | def _update_mask_image_zoomed(self, | CODE |
| LOW | tools/manual/frame_viewer/editor/mask.py | 355 | def _update_mask_image_full_frame(self, | CODE |
| LOW | tools/manual/frame_viewer/editor/_base.py | 576 | def _add_annotation_format_controls(self): | CODE |
| LOW | tools/manual/frame_viewer/editor/landmarks.py | 211 | def _update_cursor_point_mode(self, item_id): | CODE |
| LOW | tools/manual/frame_viewer/editor/landmarks.py | 234 | def _update_cursor_select_mode(self, event): | CODE |
| LOW | tools/manual/frame_viewer/editor/landmarks.py | 337 | def _snap_selection_to_points(self): | CODE |
| LOW | tools/manual/frame_viewer/editor/bounding_box.py | 116 | def _update_anchor_annotation(self, face_index, bounding_box, color): | CODE |
| LOW | tools/manual/frame_viewer/editor/bounding_box.py | 202 | def _check_cursor_bounding_box(self, event): | CODE |
| LOW | tools/manual/frame_viewer/editor/extract_box.py | 72 | def _update_anchor_annotation(self, face_index, extract_box, color): | CODE |
| LOW | tools/preview/preview.py | 522 | def _generate_converter_arguments(arguments: Namespace, | CODE |
| LOW | tools/preview/preview.py | 597 | def _update_converter_arguments(self) -> None: | CODE |
| LOW | tools/preview/control_panels.py | 359 | def _get_control_panel_options(self, | CODE |
| LOW | tools/alignments/alignments.py | 70 | def _get_alignments_locations(self) -> dict[str, list[str | None]]: | CODE |
| LOW | plugins/plugin_loader.py | 267 | def get_available_convert_plugins(convert_category: str, add_none: bool = True) -> list[str]: | CODE |
| LOW | plugins/train/model/phaze_a.py | 321 | def _validate_encoder_architecture(self) -> None: | CODE |
| LOW | plugins/train/model/realface.py | 61 | def get_dense_width_upscalers_numbers(self): | CODE |
| LOW | plugins/train/model/_base/io.py | 124 | def multiple_models_in_folder(self) -> list[str] | None: | CODE |
| LOW | plugins/train/model/_base/io.py | 585 | def _get_optimizer_and_group_ids(self) -> tuple[K_Optimizer, | CODE |
| LOW | plugins/train/model/_base/settings.py | 83 | def _set_keras_mixed_precision(cls, enable: bool) -> None: | CODE |
| LOW | plugins/train/model/_base/settings.py | 125 | def _get_mixed_precision_layers(self, layers: list[dict]) -> list[str]: | CODE |
| LOW | plugins/train/model/_base/settings.py | 190 | def get_mixed_precision_layers(self, | CODE |
| LOW | plugins/train/model/_base/inference.py | 62 | def _get_valid_inputs_for_layer(self, layer) -> list[keras.Layer]: | CODE |
| LOW | plugins/train/model/_base/state.py | 169 | def add_mixed_precision_layers(self, layers: list[str]) -> None: | CODE |
| LOW | plugins/train/trainer/distributed.py | 119 | def _handle_torch_gpu_mismatch_warning( | CODE |
| LOW | plugins/convert/writer/pillow.py | 37 | def _check_transparency_format(self) -> None: | CODE |
| LOW | plugins/convert/writer/opencv.py | 38 | def _check_transparency_format(self) -> None: | CODE |
| LOW | tests/tools/preview/viewer_test.py | 47 | def get_faces_display_instance(self, columns: int = 5, face_size: int = 256) -> FacesDisplay: | CODE |
| LOW | tests/tools/preview/viewer_test.py | 111 | def test_set_display_dimensions(self) -> None: | CODE |
| LOW | tests/tools/preview/viewer_test.py | 310 | def test__crop_destination_faces(self, | CODE |
| LOW | tests/tools/alignments/media_test.py | 802 | def test_get_roi_size_for_frame(self, | CODE |
| LOW | tests/lib/utils_test.py | 353 | def fixture_get_model_instance(monkeypatch: pytest.MonkeyPatch, | CODE |
| LOW | tests/lib/utils_test.py | 387 | def test_get_model_model_filename_input( | CODE |
| LOW | tests/lib/utils_test.py | 410 | def test_get_model_attributes(get_model_instance: GetModel) -> None: | CODE |
| LOW | tests/lib/utils_test.py | 426 | def test_get_model_properties(get_model_instance: GetModel) -> None: | CODE |
| LOW | tests/lib/utils_test.py | 486 | def test_get_model__download_model(mocker: pytest_mock.MockerFixture, | CODE |
| LOW | tests/lib/utils_test.py | 519 | def test_get_model__write_zipfile(mocker: pytest_mock.MockerFixture, | CODE |
| LOW | tests/lib/utils_test.py | 555 | def test_get_model__unzip_model(mocker: pytest_mock.MockerFixture, | CODE |
| LOW | tests/lib/utils_test.py | 578 | def test_get_model__write_model(mocker: pytest_mock.MockerFixture, | CODE |
| LOW | tests/lib/training/data_augmentation_test.py | 105 | def test_constants_get_transform(config: dict[str, T.Any], | CODE |
| LOW | tests/lib/training/data_augmentation_test.py | 123 | def test_constants_get_warp_to_landmarks(size: int, batch_size: int) -> None: | CODE |
| LOW | tests/lib/training/data_augmentation_test.py | 196 | def test_constants_from_config(size: int, | CODE |
| LOW | tests/lib/training/data_augmentation_test.py | 230 | def test_image_augmentation_init(size: int, | CODE |
| LOW | tests/lib/training/data_augmentation_test.py | 250 | def test_image_augmentation_random_lab(size: int, | CODE |
| LOW | tests/lib/training/data_augmentation_test.py | 271 | def test_image_augmentation_random_clahe(size: int, # pylint:disable=too-many-locals | CODE |
| LOW | tests/lib/training/data_augmentation_test.py | 322 | def test_image_augmentation_color_adjust(size: int, | CODE |
| LOW | tests/lib/training/data_augmentation_test.py | 347 | def test_image_augmentation_transform(size: int, | CODE |
| LOW | tests/lib/training/data_augmentation_test.py | 392 | def test_image_augmentation_random_flip(size: int, | CODE |
| 54 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 735 | CODE | |
| LOW | tools/effmpeg/effmpeg.py | 91 | CODE | |
| LOW | tools/effmpeg/effmpeg.py | 216 | CODE | |
| LOW | tools/effmpeg/effmpeg.py | 365 | CODE | |
| LOW | tools/effmpeg/effmpeg.py | 465 | CODE | |
| LOW | tools/effmpeg/effmpeg.py | 483 | CODE | |
| LOW | tools/manual/detected_faces.py | 508 | CODE | |
| LOW | tools/manual/detected_faces.py | 548 | CODE | |
| LOW | tools/manual/face_viewer/viewport.py | 155 | CODE | |
| LOW | tools/manual/frame_viewer/frame.py | 563 | CODE | |
| LOW | tools/manual/frame_viewer/frame.py | 595 | CODE | |
| LOW | tools/preview/control_panels.py | 460 | CODE | |
| LOW | tools/preview/control_panels.py | 617 | CODE | |
| LOW | tools/alignments/alignments.py | 157 | CODE | |
| LOW | tools/alignments/jobs_faces.py | 118 | CODE | |
| LOW | tools/alignments/jobs_faces.py | 422 | CODE | |
| LOW | plugins/plugin_loader.py | 22 | CODE | |
| LOW | plugins/train/model/phaze_a.py | 215 | CODE | |
| LOW | plugins/train/model/_base/io.py | 450 | CODE | |
| LOW | plugins/extract/detect/retinaface.py | 67 | CODE | |
| LOW | plugins/extract/align/hrnet.py | 553 | CODE | |
| LOW | plugins/extract/align/hrnet.py | 618 | CODE | |
| LOW | plugins/convert/writer/patch.py | 129 | CODE | |
| LOW | tests/utils.py | 81 | CODE | |
| LOW | tests/lib/config/ini_test.py | 210 | CODE | |
| LOW | tests/lib/model/layers_test.py | 21 | CODE | |
| LOW | scripts/extract.py | 267 | CODE | |
| LOW | scripts/extract.py | 1001 | CODE | |
| LOW | lib/utils.py | 775 | CODE | |
| LOW | lib/serializer.py | 264 | CODE | |
| LOW | lib/serializer.py | 302 | CODE | |
| LOW | lib/video.py | 787 | CODE | |
| LOW | lib/image.py | 241 | CODE | |
| LOW | lib/config/config.py | 229 | CODE | |
| LOW | lib/config/config.py | 142 | CODE | |
| LOW | lib/config/objects.py | 109 | CODE | |
| LOW | lib/training/tensorboard.py | 197 | CODE | |
| LOW | lib/system/ml_libs.py | 547 | CODE | |
| LOW | lib/align/aligned_face.py | 303 | CODE | |
| LOW | lib/gui/options.py | 349 | CODE | |
| LOW | lib/gui/wrapper.py | 676 | CODE | |
| LOW | lib/gui/display_analysis.py | 331 | CODE | |
| LOW | lib/gui/menu.py | 532 | CODE | |
| LOW | lib/gui/control_helper.py | 359 | CODE | |
| LOW | lib/gui/control_helper.py | 1123 | CODE | |
| LOW | lib/gui/control_helper.py | 1419 | CODE | |
| LOW | lib/gui/analysis/event_reader.py | 559 | CODE | |
| LOW | lib/model/optimizers/adabelief.py | 160 | CODE | |
| LOW | lib/gpu_stats/rocm.py | 332 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | setup.py | 209 | except ValueError: | CODE |
| HIGH | tools/effmpeg/effmpeg.py | 508 | except KeyboardInterrupt: | CODE |
| HIGH | tests/lib/gui/stats/event_reader_test.py | 301 | except PermissionError: | CODE |
| HIGH | lib/cli/launcher.py | 198 | except SystemExit: | CODE |
| HIGH | lib/gui/display_analysis.py | 503 | except tk.TclError: | CODE |
| HIGH | lib/gui/custom_widgets.py | 364 | except AttributeError: | CODE |
| HIGH | lib/infer/plugin_utils.py | 146 | except AttributeError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/sort/sort_methods.py | 778 | except Exception: | CODE |
| LOW | plugins/plugin_loader.py | 45 | except Exception: # pylint:disable=broad-except | CODE |
| LOW | plugins/convert/writer/patch.py | 152 | except Exception as err: # pylint:disable=broad-except | CODE |
| LOW | plugins/convert/writer/pillow.py | 85 | except Exception as err: # pylint:disable=broad-except | CODE |
| LOW | plugins/convert/writer/opencv.py | 84 | except Exception as err: # pylint:disable=broad-except | CODE |
| LOW | scripts/train.py | 266 | except Exception as err: | CODE |
| LOW | scripts/train.py | 524 | except Exception as err: | CODE |
| LOW | scripts/extract.py | 318 | except Exception: | CODE |
| LOW | scripts/extract.py | 338 | except Exception: | CODE |
| LOW | lib/convert.py | 190 | except Exception as err: # pylint:disable=broad-except | CODE |
| LOW | lib/logger.py | 113 | except Exception: # pylint:disable=broad-except | CODE |
| LOW | lib/logger.py | 558 | except Exception: # pylint:disable=broad-except | CODE |
| LOW | lib/utils.py | 771 | except Exception as err: # pylint:disable=broad-except | CODE |
| LOW | lib/serializer.py | 140 | except Exception as err: | CODE |
| LOW | lib/serializer.py | 168 | except Exception as err: | CODE |
| LOW | lib/image.py | 145 | except Exception as err: # pylint:disable=broad-except | CODE |
| LOW | lib/image.py | 1361 | except Exception as err: # pylint:disable=broad-except | CODE |
| LOW | lib/multithreading.py | 154 | except Exception: # pylint:disable=broad-except | CODE |
| LOW | lib/multithreading.py | 341 | except Exception: | CODE |
| LOW | lib/cli/launcher.py | 200 | except Exception: # pylint:disable=broad-except | CODE |
| LOW | lib/system/sysinfo.py | 151 | except Exception as err: # pylint:disable=broad-except | CODE |
| LOW | lib/system/sysinfo.py | 237 | except Exception as err: # pylint:disable=broad-except | CODE |
| LOW | lib/gui/menu.py | 264 | except Exception as err: # pylint:disable=broad-except | CODE |
| LOW | lib/gui/utils/misc.py | 76 | except Exception: # pylint:disable=broad-except | CODE |
| LOW | lib/gui/utils/image.py | 363 | except Exception as err: # pylint:disable=broad-except | CODE |
| LOW | lib/model/layers.py | 763 | except Exception as e: | CODE |
| LOW | lib/infer/plugin_utils.py | 161 | except Exception as err: # pylint:disable=broad-except | CODE |
| LOW | lib/gpu_stats/rocm.py | 355 | except Exception as err: # pylint:disable=broad-except | CODE |
| LOW | lib/gpu_stats/nvidia.py | 56 | except Exception as err: # pylint:disable=broad-except | CODE |
| LOW | lib/gpu_stats/apple_silicon.py | 73 | except Exception as err: # pylint:disable=broad-except | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tools/manual/detected_faces.py | 510 | :attr:`~tools.manual.manual.TkGlobals.var_filter_mode.get()`.""" | STRING |
| CRITICAL | tools/manual/detected_faces.py | 550 | :attr:`~tools.manual.manual.TkGlobals.var_filter_mode.get()`. """ | STRING |
| CRITICAL | tools/preview/control_panels.py | 243 | "color": app._patch.converter.cli_arguments.color_adjustment.replace("-", "_"), | CODE |
| CRITICAL | tools/preview/control_panels.py | 244 | "mask_type": app._patch.converter.cli_arguments.mask_type.replace("-", "_"), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plugins/extract/detect/retinaface.py | 660 | CODE | |
| LOW | plugins/extract/align/hrnet.py | 282 | CODE | |
| LOW | plugins/extract/align/hrnet.py | 362 | CODE | |
| LOW | plugins/extract/align/hrnet.py | 428 | CODE | |
| LOW | plugins/extract/align/fan.py | 192 | CODE | |
| LOW | plugins/extract/mask/bisenet_fp.py | 224 | CODE | |
| LOW | plugins/extract/mask/bisenet_fp.py | 402 | CODE | |
| LOW | scripts/fs_media.py | 204 | CODE | |
| LOW | lib/align/aligned_face.py | 137 | CODE | |
| LOW | lib/align/detected_face.py | 55 | CODE | |
| LOW | lib/align/detected_face.py | 414 | CODE | |
| LOW | lib/gui/control_helper.py | 153 | CODE | |
| LOW | lib/gui/control_helper.py | 544 | CODE | |
| LOW | lib/model/normalization.py | 183 | CODE | |
| LOW | lib/model/normalization.py | 413 | CODE | |
| LOW | lib/model/normalization.py | 687 | CODE | |
| LOW | lib/model/losses/feature_loss.py | 290 | CODE | |
| LOW | lib/model/losses/flip.py | 81 | CODE | |
| LOW | lib/model/optimizers/keras_legacy.py | 131 | CODE | |
| LOW | lib/model/optimizers/adabelief.py | 83 | CODE | |
| LOW | lib/model/networks/clip.py | 498 | CODE | |
| LOW | lib/model/networks/clip.py | 538 | CODE | |
| LOW | lib/infer/objects.py | 753 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .install/macos/faceswap_setup_macos.sh | 444 | # Create a shortcut to launch into the GUI | COMMENT |
| MEDIUM | .install/macos/faceswap_setup_macos.sh | 455 | # Create a simple .app wrapper to launch GUI | COMMENT |
| MEDIUM | .install/linux/faceswap_setup_x64.sh | 459 | # Create a shortcut to launch into the GUI | COMMENT |
| MEDIUM | .install/linux/faceswap_setup_x64.sh | 469 | # Create a shell script to launch the GUI and add a desktop shortcut | COMMENT |
| MEDIUM | tools/manual/frame_viewer/editor/mask.py | 250 | # Create a bounding box rectangle ROI | COMMENT |
| MEDIUM | lib/gui/theme.py | 370 | # Create the elements with the new images | COMMENT |
| MEDIUM | lib/gui/custom_widgets.py | 318 | # Create a new Tcl command whose name is the widget's path name, and | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .install/macos/faceswap_setup_macos.sh | 259 | # Options pertaining to additional apps that are required | COMMENT |
| MEDIUM | .install/macos/faceswap_setup_macos.sh | 270 | # Options pertaining to the installation of conda | COMMENT |
| MEDIUM | .install/macos/faceswap_setup_macos.sh | 305 | # Options pertaining to the installation of faceswap | COMMENT |
| MEDIUM | .install/linux/faceswap_setup_x64.sh | 276 | # Options pertaining to the installation of conda | COMMENT |
| MEDIUM | .install/linux/faceswap_setup_x64.sh | 309 | # Options pertaining to the installation of faceswap | COMMENT |
| MEDIUM | plugins/convert/color/color_transfer.py | 118 | # space, being sure to utilize the 8-bit unsigned integer data | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .install/macos/faceswap_setup_macos.sh | 208 | # Check if conda is in PATH | COMMENT |
| LOW | .install/macos/faceswap_setup_macos.sh | 392 | # Check if an environment with the given name exists | COMMENT |
| LOW | .install/linux/faceswap_setup_x64.sh | 226 | # Check if conda is in PATH | COMMENT |
| LOW | .install/linux/faceswap_setup_x64.sh | 399 | # Check if an environment with the given name exists | COMMENT |
| LOW | tools/sort/sort.py | 236 | # Check if non-dissimilarity sort method and group method are not the same | COMMENT |
| LOW | lib/utils.py | 77 | # Check if environment variable is set, if so use that | COMMENT |
| LOW | lib/training/preview_tk.py | 925 | if not self._initialized: # Set initialized to True for GUI | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plugins/extract/detect/mtcnn.py | 141 | # found at | COMMENT |
| LOW | plugins/extract/mask/bisenet_fp.py | 161 | # Permission is hereby granted, free of charge, to any person obtaining a copy | COMMENT |
| LOW | docs/conf.py | 1 | # Configuration file for the Sphinx documentation builder. | COMMENT |
| LOW | .github/workflows/pytest.yml | 41 | steps: | COMMENT |
| LOW | lib/model/optimizers/lion.py | 1 | #! /usr/env/bin/python3 | COMMENT |
| LOW | lib/model/optimizers/adabelief.py | 1 | #! /usr/env/bin/python3 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | lib/video.py | 732 | self._graph.push(frame.reformat(format=vid.pix_fmt)) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | lib/model/optimizers/lion.py | 16 | # ============================================================================== | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | plugins/train/trainer/distributed.py | 111 | logger.warning("Batch size %s is sub-optimal for %s GPUs. You may want to adjust your " | CODE |