Skip to content

Commit ef21b60

Browse files
authored
Merge pull request #153 from SocketDev/reach-new-flags
feat: add new reachability flags and change analysis splitting default
2 parents 3defe2e + c4cd89a commit ef21b60

File tree

7 files changed

+54
-9
lines changed

7 files changed

+54
-9
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
.idea
22
venv
33
.venv
4+
.venv-test
45
build
56
dist
67
*.build

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Changelog
22

3+
## 2.2.69
4+
5+
- Added `--reach-enable-analysis-splitting` flag to enable analysis splitting (disabled by default).
6+
- Added `--reach-detailed-analysis-log-file` flag to print detailed analysis log file path.
7+
- Added `--reach-lazy-mode` flag to enable lazy mode for reachability analysis.
8+
- Changed default behavior: analysis splitting is now disabled by default. The old `--reach-disable-analysis-splitting` flag is kept as a hidden no-op for backwards compatibility.
9+
310
## 2.2.64
411

512
- Included PyPy in the Docker image.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
66

77
[project]
88
name = "socketsecurity"
9-
version = "2.2.68"
9+
version = "2.2.69"
1010
requires-python = ">= 3.10"
1111
license = {"file" = "LICENSE"}
1212
dependencies = [

socketsecurity/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
__author__ = 'socket.dev'
2-
__version__ = '2.2.68'
2+
__version__ = '2.2.69'
33
USER_AGENT = f'SocketPythonCLI/{__version__}'

socketsecurity/config.py

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,10 @@ class CliConfig:
7272
reach_analysis_memory_limit: Optional[int] = None
7373
reach_analysis_timeout: Optional[int] = None
7474
reach_disable_analytics: bool = False
75-
reach_disable_analysis_splitting: bool = False
75+
reach_disable_analysis_splitting: bool = False # Deprecated, kept for backwards compatibility
76+
reach_enable_analysis_splitting: bool = False
77+
reach_detailed_analysis_log_file: bool = False
78+
reach_lazy_mode: bool = False
7679
reach_ecosystems: Optional[List[str]] = None
7780
reach_exclude_paths: Optional[List[str]] = None
7881
reach_skip_cache: bool = False
@@ -148,6 +151,9 @@ def from_args(cls, args_list: Optional[List[str]] = None) -> 'CliConfig':
148151
'reach_analysis_memory_limit': args.reach_analysis_memory_limit,
149152
'reach_disable_analytics': args.reach_disable_analytics,
150153
'reach_disable_analysis_splitting': args.reach_disable_analysis_splitting,
154+
'reach_enable_analysis_splitting': args.reach_enable_analysis_splitting,
155+
'reach_detailed_analysis_log_file': args.reach_detailed_analysis_log_file,
156+
'reach_lazy_mode': args.reach_lazy_mode,
151157
'reach_ecosystems': args.reach_ecosystems.split(',') if args.reach_ecosystems else None,
152158
'reach_exclude_paths': args.reach_exclude_paths.split(',') if args.reach_exclude_paths else None,
153159
'reach_skip_cache': args.reach_skip_cache,
@@ -642,7 +648,25 @@ def create_argument_parser() -> argparse.ArgumentParser:
642648
"--reach-disable-analysis-splitting",
643649
dest="reach_disable_analysis_splitting",
644650
action="store_true",
645-
help="Disable analysis splitting/bucketing for reachability analysis"
651+
help=argparse.SUPPRESS # Deprecated, kept for backwards compatibility (no-op)
652+
)
653+
reachability_group.add_argument(
654+
"--reach-enable-analysis-splitting",
655+
dest="reach_enable_analysis_splitting",
656+
action="store_true",
657+
help="Enable analysis splitting/bucketing for reachability analysis (disabled by default). This is a legacy feature for improving performance"
658+
)
659+
reachability_group.add_argument(
660+
"--reach-detailed-analysis-log-file",
661+
dest="reach_detailed_analysis_log_file",
662+
action="store_true",
663+
help="Create a detailed analysis log file for reachability analysis. The output path is written to stdout"
664+
)
665+
reachability_group.add_argument(
666+
"--reach-lazy-mode",
667+
dest="reach_lazy_mode",
668+
action="store_true",
669+
help="Enable lazy mode for reachability analysis. This is an experimental feature for improving performance"
646670
)
647671
reachability_group.add_argument(
648672
"--reach-output-file",

socketsecurity/core/tools/reachability.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,9 @@ def run_reachability_analysis(
9393
min_severity: Optional[str] = None,
9494
skip_cache: bool = False,
9595
disable_analytics: bool = False,
96-
disable_analysis_splitting: bool = False,
96+
enable_analysis_splitting: bool = False,
97+
detailed_analysis_log_file: bool = False,
98+
lazy_mode: bool = False,
9799
repo_name: Optional[str] = None,
98100
branch_name: Optional[str] = None,
99101
version: Optional[str] = None,
@@ -118,7 +120,9 @@ def run_reachability_analysis(
118120
min_severity: Minimum severity level (info, low, moderate, high, critical)
119121
skip_cache: Skip cache usage
120122
disable_analytics: Disable analytics sharing
121-
disable_analysis_splitting: Disable analysis splitting
123+
enable_analysis_splitting: Enable analysis splitting (disabled by default)
124+
detailed_analysis_log_file: Print detailed analysis log file path
125+
lazy_mode: Enable lazy mode for analysis
122126
repo_name: Repository name
123127
branch_name: Branch name
124128
version: Specific version of @coana-tech/cli to use
@@ -156,9 +160,16 @@ def run_reachability_analysis(
156160

157161
if disable_analytics:
158162
cmd.append("--disable-analytics-sharing")
159-
160-
if disable_analysis_splitting:
163+
164+
# Analysis splitting is disabled by default; only omit the flag if explicitly enabled
165+
if not enable_analysis_splitting:
161166
cmd.append("--disable-analysis-splitting")
167+
168+
if detailed_analysis_log_file:
169+
cmd.append("--print-analysis-log-file")
170+
171+
if lazy_mode:
172+
cmd.append("--lazy-mode")
162173

163174
# KEY POINT: Only add manifest tar hash if we have one
164175
if tar_hash:

socketsecurity/socketcli.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,9 @@ def main_code():
291291
min_severity=config.reach_min_severity,
292292
skip_cache=config.reach_skip_cache or False,
293293
disable_analytics=config.reach_disable_analytics or False,
294-
disable_analysis_splitting=config.reach_disable_analysis_splitting or False,
294+
enable_analysis_splitting=config.reach_enable_analysis_splitting or False,
295+
detailed_analysis_log_file=config.reach_detailed_analysis_log_file or False,
296+
lazy_mode=config.reach_lazy_mode or False,
295297
repo_name=config.repo,
296298
branch_name=config.branch,
297299
version=config.reach_version,

0 commit comments

Comments
 (0)