Repository Analysis

ranger/ranger

A VIM-inspired filemanager for the console

34.1 Strong AI signal View on GitHub
34.1
Adjusted Score
34.1
Raw Score
100%
Time Factor
2026-05-23
Last Push
17,210
Stars
Python
Language
27,229
Lines of Code
138
Files
654
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 0MEDIUM 144LOW 510

Pattern Findings

654 matches across 11 categories. Click a row to expand file-level details.

Unused Imports321 hits · 316 pts
SeverityFileLineSnippet
LOWsetup.py5
LOWsetup.py5
LOWsetup.py5
LOWranger.py26
LOWranger.py26
LOWranger.py26
LOWranger/__init__.py11
LOWranger/__init__.py11
LOWranger/__init__.py11
LOWranger/__init__.py66
LOWranger/core/runner.py25
LOWranger/core/runner.py25
LOWranger/core/runner.py25
LOWranger/core/filter_stack.py6
LOWranger/core/filter_stack.py6
LOWranger/core/filter_stack.py6
LOWranger/core/metadata.py14
LOWranger/core/metadata.py14
LOWranger/core/metadata.py14
LOWranger/core/actions.py6
LOWranger/core/actions.py6
LOWranger/core/actions.py6
LOWranger/core/fm.py6
LOWranger/core/fm.py6
LOWranger/core/fm.py6
LOWranger/core/shared.py6
LOWranger/core/shared.py6
LOWranger/core/shared.py6
LOWranger/core/loader.py4
LOWranger/core/loader.py4
LOWranger/core/loader.py4
LOWranger/core/linemode.py6
LOWranger/core/linemode.py6
LOWranger/core/linemode.py6
LOWranger/core/tab.py4
LOWranger/core/tab.py4
LOWranger/core/tab.py4
LOWranger/core/main.py6
LOWranger/core/main.py6
LOWranger/core/main.py6
LOWranger/config/commands_sample.py10
LOWranger/config/commands_sample.py10
LOWranger/config/commands_sample.py10
LOWranger/config/commands.py94
LOWranger/config/commands.py94
LOWranger/config/commands.py94
LOWranger/config/commands.py503
LOWranger/config/commands.py1090
LOWranger/ext/human_readable.py4
LOWranger/ext/human_readable.py4
LOWranger/ext/human_readable.py4
LOWranger/ext/signals.py67
LOWranger/ext/signals.py67
LOWranger/ext/signals.py67
LOWranger/ext/direction.py21
LOWranger/ext/direction.py21
LOWranger/ext/direction.py21
LOWranger/ext/keybinding_parser.py4
LOWranger/ext/keybinding_parser.py4
LOWranger/ext/keybinding_parser.py4
261 more matches not shown…
Self-Referential Comments96 hits · 297 pts
SeverityFileLineSnippet
MEDIUMsetup.py2# This file is part of ranger, the console file manager.
MEDIUMranger.py2# This file is part of ranger, the console file manager. (coding: utf-8)
MEDIUMranger/__init__.py1# This file is part of ranger, the console file manager.
MEDIUMranger/core/runner.py1# This file is part of ranger, the console file manager.
MEDIUMranger/core/runner.py4"""This module is an abstract layer over subprocess.Popen
MEDIUMranger/core/filter_stack.py2# This file is part of ranger, the console file manager.
MEDIUMranger/core/metadata.py1# This file is part of ranger, the console file manager.
MEDIUMranger/core/actions.py1# This file is part of ranger, the console file manager.
MEDIUMranger/core/fm.py1# This file is part of ranger, the console file manager.
MEDIUMranger/core/shared.py1# This file is part of ranger, the console file manager.
MEDIUMranger/core/loader.py1# This file is part of ranger, the console file manager.
MEDIUMranger/core/linemode.py2# This file is part of ranger, the console file manager.
MEDIUMranger/core/tab.py1# This file is part of ranger, the console file manager.
MEDIUMranger/core/main.py1# This file is part of ranger, the console file manager.
MEDIUMranger/core/main.py467 # Create the file if it doesn't exist.
MEDIUMranger/config/commands.py2# This file is part of ranger, the console file manager.
MEDIUMranger/config/commands.py11# This file contains ranger's commands.
MEDIUMranger/ext/human_readable.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/signals.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/direction.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/direction.py4"""This class provides convenient methods for movement operations.
MEDIUMranger/ext/keybinding_parser.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/relative_symlink.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/popen23.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/popen_forked.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/openstruct.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/posix_signals.py2# This file is part of ranger, the console file manager.
MEDIUMranger/ext/hash.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/cached_function.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/curses_interrupt_handler.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/get_executables.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/accumulator.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/widestring.py2# This file is part of ranger, the console file manager.
MEDIUMranger/ext/spawn.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/shell_escape.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/rifle.py2# This file is part of ranger, the console file manager.
MEDIUMranger/ext/which.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/img_display.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/iter_tools.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/safe_path.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/mount_path.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/lazy_property.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/abc.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/vcs/git.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/vcs/svn.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/vcs/bzr.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/vcs/__init__.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/vcs/vcs.py1# This file is part of ranger, the console file manager.
MEDIUMranger/ext/vcs/hg.py1# This file is part of ranger, the console file manager.
MEDIUMranger/container/tags.py1# This file is part of ranger, the console file manager.
MEDIUMranger/container/fsobject.py1# This file is part of ranger, the console file manager.
MEDIUMranger/container/file.py1# This file is part of ranger, the console file manager.
MEDIUMranger/container/settings.py1# This file is part of ranger, the console file manager.
MEDIUMranger/container/bookmarks.py1# This file is part of ranger, the console file manager.
MEDIUMranger/container/directory.py1# This file is part of ranger, the console file manager.
MEDIUMranger/container/history.py1# This file is part of ranger, the console file manager.
MEDIUMranger/colorschemes/snow.py1# This file is part of ranger, the console file manager.
MEDIUMranger/colorschemes/solarized.py1# This file is part of ranger, the console file manager.
MEDIUMranger/colorschemes/default.py1# This file is part of ranger, the console file manager.
MEDIUMranger/colorschemes/jungle.py1# This file is part of ranger, the console file manager.
36 more matches not shown…
Decorative Section Separators40 hits · 122 pts
SeverityFileLineSnippet
MEDIUMranger.py5# =====================
MEDIUMranger/core/actions.py52 # --------------------------
MEDIUMranger/core/actions.py54 # --------------------------
MEDIUMranger/core/actions.py464 # --------------------------
MEDIUMranger/core/actions.py466 # --------------------------
MEDIUMranger/core/actions.py651 # --------------------------
MEDIUMranger/core/actions.py653 # --------------------------
MEDIUMranger/core/actions.py786 # --------------------------
MEDIUMranger/core/actions.py788 # --------------------------
MEDIUMranger/core/actions.py858 # --------------------------
MEDIUMranger/core/actions.py860 # --------------------------
MEDIUMranger/core/actions.py909 # --------------------------
MEDIUMranger/core/actions.py911 # --------------------------
MEDIUMranger/core/actions.py964 # --------------------------
MEDIUMranger/core/actions.py966 # --------------------------
MEDIUMranger/core/actions.py1033 # --------------------------
MEDIUMranger/core/actions.py1035 # --------------------------
MEDIUMranger/core/actions.py1240 # --------------------------
MEDIUMranger/core/actions.py1242 # --------------------------
MEDIUMranger/core/actions.py1449 # --------------------------
MEDIUMranger/core/actions.py1451 # --------------------------
MEDIUMranger/core/actions.py1527 # --------------------------
MEDIUMranger/core/actions.py1529 # --------------------------
MEDIUMranger/config/commands_sample.py8# -----------------------------------------------------------------------------
MEDIUMranger/config/commands.py4# ===================================================================
MEDIUMranger/config/commands.py10# ===================================================================
MEDIUMranger/config/commands.py27# ===================================================================
MEDIUMranger/config/commands.py48# ===================================================================
MEDIUMranger/config/commands.py62# ===================================================================
MEDIUMranger/config/commands.py90# ===================================================================
MEDIUMranger/config/commands.py1909# --------------------------------
MEDIUMranger/config/commands.py1954# --------------------------------
MEDIUMdoc/config/commands.py4# ===================================================================
MEDIUMdoc/config/commands.py10# ===================================================================
MEDIUMdoc/config/commands.py27# ===================================================================
MEDIUMdoc/config/commands.py48# ===================================================================
MEDIUMdoc/config/commands.py62# ===================================================================
MEDIUMdoc/config/commands.py90# ===================================================================
MEDIUMdoc/config/commands.py1909# --------------------------------
MEDIUMdoc/config/commands.py1954# --------------------------------
Deep Nesting103 hits · 90 pts
SeverityFileLineSnippet
LOWranger/core/filter_stack.py120
LOWranger/core/actions.py279
LOWranger/core/actions.py369
LOWranger/core/actions.py391
LOWranger/core/actions.py468
LOWranger/core/actions.py614
LOWranger/core/actions.py634
LOWranger/core/actions.py689
LOWranger/core/actions.py722
LOWranger/core/actions.py801
LOWranger/core/actions.py1054
LOWranger/core/actions.py1387
LOWranger/core/actions.py1540
LOWranger/core/actions.py1142
LOWranger/core/fm.py485
LOWranger/core/loader.py97
LOWranger/core/loader.py195
LOWranger/core/main.py30
LOWranger/core/main.py387
LOWranger/config/commands.py358
LOWranger/config/commands.py1247
LOWranger/config/commands.py1371
LOWranger/config/commands.py1601
LOWranger/config/commands.py1800
LOWranger/config/commands.py1372
LOWranger/ext/signals.py203
LOWranger/ext/signals.py249
LOWranger/ext/keybinding_parser.py76
LOWranger/ext/keybinding_parser.py255
LOWranger/ext/shutil_generatorized.py136
LOWranger/ext/shutil_generatorized.py189
LOWranger/ext/hash.py13
LOWranger/ext/rifle.py574
LOWranger/ext/rifle.py267
LOWranger/ext/rifle.py330
LOWranger/ext/rifle.py401
LOWranger/ext/rifle.py93
LOWranger/ext/img_display.py396
LOWranger/ext/img_display.py412
LOWranger/ext/vcs/vcs.py275
LOWranger/ext/vcs/vcs.py344
LOWranger/ext/vcs/vcs.py415
LOWranger/ext/vcs/vcs.py440
LOWranger/ext/vcs/vcs.py474
LOWranger/container/fsobject.py279
LOWranger/container/settings.py158
LOWranger/container/settings.py291
LOWranger/container/bookmarks.py171
LOWranger/container/bookmarks.py223
LOWranger/container/directory.py275
LOWranger/container/directory.py335
LOWranger/container/directory.py491
LOWranger/container/directory.py562
LOWranger/colorschemes/snow.py12
LOWranger/colorschemes/solarized.py21
LOWranger/colorschemes/default.py17
LOWranger/gui/ui.py235
LOWranger/gui/ui.py364
LOWranger/gui/ui.py484
LOWranger/gui/ui.py525
43 more matches not shown…
Over-Commented Block36 hits · 36 pts
SeverityFileLineSnippet
LOWranger/core/fm.py201 # This can lead to a race condition where both FM and the
LOWranger/config/commands_sample.py1# This is a sample commands.py. You can add your own commands here.
LOWranger/config/commands.py1# -*- coding: utf-8 -*-
LOWranger/config/commands.py21# `ranger --copy-config=commands_full' and make your modifications, don't
LOWranger/config/commands.py41#
LOWranger/config/commands.py61#
LOWranger/config/commands.py81#
LOWranger/ext/img_display.py901 if self.stream:
LOWranger/gui/widgets/console.py61 )
LOWranger/data/scope.sh1#!/usr/bin/env bash
LOWranger/data/scope.sh161 orientation="$( identify -format '%[EXIF:Orientation]\n' -- "${FILE_PATH}" )"
LOWranger/data/scope.sh181 ## Audio
LOWranger/data/scope.sh221 convert -- "${preview_png}" "${IMAGE_CACHE_PATH}" \
LOWranger/data/scope.sh241 # { [ "$tar" ] && fn=$(tar --list --file "${FILE_PATH}"); } || \
LOWranger/data/scope.sh261 # "${IMAGE_CACHE_PATH}" && exit 6
LOWtests/pylint/python3.py1# Copyright (c) 2014-2020 Claudiu Popa <pcmanticore@gmail.com>
LOWtests/pylint/python3.py21# Copyright (c) 2018 ssolanki <sushobhitsolanki@gmail.com>
LOWtests/pylint/python3.py1241 # The above statement looking for calls of the form:
LOWtests/pylint/test_py2_compat.py181 # with self.assertAddsMessages(
LOWtests/pylint/test_py2_compat.py201 # """)
LOWtests/pylint/test_py2_compat.py221 # """)
LOWtests/pylint/py2_compat.py21 # Each message has a code, a message that the user will see,
LOWexamples/plugin_pmount_dynamic.py1# Tested with ranger 1.7.2
LOWexamples/rifle_sxiv.sh1#!/bin/sh
LOWexamples/shell_subshell_notice.sh1# shellcheck shell=sh
LOWdoc/config/scope.sh1#!/usr/bin/env bash
LOWdoc/config/scope.sh161 orientation="$( identify -format '%[EXIF:Orientation]\n' -- "${FILE_PATH}" )"
LOWdoc/config/scope.sh181 ## Audio
LOWdoc/config/scope.sh221 convert -- "${preview_png}" "${IMAGE_CACHE_PATH}" \
LOWdoc/config/scope.sh241 # { [ "$tar" ] && fn=$(tar --list --file "${FILE_PATH}"); } || \
LOWdoc/config/scope.sh261 # "${IMAGE_CACHE_PATH}" && exit 6
LOWdoc/config/commands.py1# -*- coding: utf-8 -*-
LOWdoc/config/commands.py21# `ranger --copy-config=commands_full' and make your modifications, don't
LOWdoc/config/commands.py41#
LOWdoc/config/commands.py61#
LOWdoc/config/commands.py81#
Hyper-Verbose Identifiers24 hits · 23 pts
SeverityFileLineSnippet
LOWranger/core/tab.py36 def _set_thisfile_from_signal(self, signal):
LOWranger/core/tab.py110 def assign_cursor_positions_for_subdirs(self): # pylint: disable=invalid-name
LOWranger/config/commands.py849 def _trash_files_catch_arg_list_error(self, files):
LOWranger/ext/curses_interrupt_handler.py39def install_interrupt_handler():
LOWranger/ext/curses_interrupt_handler.py44def restore_interrupt_handler():
LOWranger/ext/rifle.py207 def hook_command_preprocessing(command):
LOWranger/ext/rifle.py211 def hook_command_postprocessing(command):
LOWranger/container/fsobject.py183 def basename_without_extension(self):
LOWranger/container/bookmarks.py213 def enable_saving_backtick_bookmark(self, boolean):
LOWranger/container/directory.py50def sort_unicode_wrapper_string(old_sort_func):
LOWranger/container/directory.py56def sort_unicode_wrapper_list(old_sort_func):
LOWranger/gui/colorscheme.py85def _colorscheme_name_to_class(signal): # pylint: disable=too-many-branches
LOWranger/gui/widgets/browsercolumn.py453 def _get_index_of_selected_file(self):
LOWranger/gui/widgets/view_miller.py86 def _request_clear_if_has_borders(self):
LOWranger/api/commands.py60 def load_commands_from_module(self, module):
LOWranger/api/commands.py68 def load_commands_from_object(self, obj, filtr):
LOWtests/manpage_completion_test.py47def find_undocumented_settings():
LOWtests/pylint/python3.py1164 def _is_constant_string_or_name(node):
LOWtests/pylint/python3.py1174 def _has_only_n_positional_args(node, number_of_args):
LOWtests/pylint/test_py2_compat.py50 def test_print_without_import(self):
LOWtests/pylint/test_py2_compat.py109 def test_implicit_format_spec(self):
LOWtests/pylint/test_py2_compat.py176 # def test_division_without_import(self):
LOWtests/pylint/test_py2_compat.py189 # def test_division_with_import(self):
LOWdoc/config/commands.py849 def _trash_files_catch_arg_list_error(self, files):
Excessive Try-Catch Wrapping20 hits · 19 pts
SeverityFileLineSnippet
LOWranger/core/runner.py137 except Exception as ex: # pylint: disable=broad-except
LOWranger/core/runner.py143 except Exception as ex: # pylint: disable=broad-except
LOWranger/core/runner.py282 except Exception: # pylint: disable=broad-exception-caught
MEDIUMranger/core/runner.py98def filepaths(self):
MEDIUMranger/core/actions.py248def anypath_macro(i, char):
LOWranger/core/actions.py273 except Exception as ex: # pylint: disable=broad-except
LOWranger/core/actions.py386 except Exception as ex: # pylint: disable=broad-except
LOWranger/core/fm.py305 except Exception: # pylint: disable=broad-except
LOWranger/core/fm.py311 except Exception: # pylint: disable=broad-except
LOWranger/core/loader.py466 except Exception as ex: # pylint: disable=broad-except
LOWranger/core/main.py217 except Exception: # pylint: disable=broad-except
LOWranger/core/main.py223 except Exception: # pylint: disable=broad-except
LOWranger/core/main.py364 except Exception as ex: # pylint: disable=broad-except
LOWranger/core/main.py484 except Exception as ex: # pylint: disable=broad-except
LOWranger/config/commands.py1110 except Exception as err: # pylint: disable=broad-except
LOWranger/ext/rifle.py123 except Exception: # pylint: disable=broad-except
LOWranger/ext/img_display.py859 except Exception as err:
LOWranger/ext/vcs/vcs.py497 except Exception as ex: # pylint: disable=broad-except
LOWranger/gui/widgets/pager.py123 except Exception as ex: # pylint: disable=broad-except
LOWdoc/config/commands.py1110 except Exception as err: # pylint: disable=broad-except
Slop Phrases5 hits · 10 pts
SeverityFileLineSnippet
MEDIUMranger/core/tab.py189 # is required so that you can use enter_dir when switching tabs
MEDIUMranger/config/commands_sample.py7# A simple command for demonstration purposes follows.
MEDIUMranger/config/commands_sample.py26 A sample command for demonstration purposes that opens a file in an editor.
LOWranger/config/commands.py25# But make sure you update your configs when you update ranger.
LOWdoc/config/commands.py25# But make sure you update your configs when you update ranger.
AI Slop Vocabulary4 hits · 8 pts
SeverityFileLineSnippet
MEDIUMranger/config/commands.py49# Commands have certain attributes and methods that facilitate parsing of
MEDIUMranger/gui/curses_shortcuts.py21 """This class defines shortcuts to facilitate operations with curses.
LOWexamples/plugin_hello_world.py23 # simply return the return value of the previous hook to be safe.
MEDIUMdoc/config/commands.py49# Commands have certain attributes and methods that facilitate parsing of
Redundant / Tautological Comments4 hits · 6 pts
SeverityFileLineSnippet
LOWranger/ext/hash.py26 # Read the file in ~64KiB chunks (multiple of sha256's block
LOWranger/ext/get_executables.py26 # Check if the current environment is Microsoft WSL instead of native Linux
LOWranger/ext/rifle.py156 # Check if stdin (file descriptor 0), stdout (fd 1) and
LOWranger/gui/widgets/browsercolumn.py349 # Check if current line has not already computed and cached
Overly Generic Function Names1 hit · 0 pts
SeverityFileLineSnippet
LOWranger/ext/signals.py27>>> def test_function(signal):