Watches files and records, or triggers actions, when they change.
This report summarizes scanner evidence for facebook/watchman, a C++ project with 13,737 GitHub stars. SynthScan examined 97,011 lines of code across 593 source files, recording 310 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 4.6 (Low 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? 261 finding(s).
Are imports declared and package/API names verified? 3 finding(s).
Are wrappers, guards, and repeated structures necessary? 104 finding(s).
Which changes need focused human review? 310 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 310 distinct pattern matches across 14 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 | CMakeLists.txt | 61 | # Determine whether we are the git repo produced by shipit, a staging | COMMENT |
| LOW | run-tests.sh | 1 | #!/bin/bash -e | COMMENT |
| LOW | install-system-packages.sh | 1 | #!/bin/bash -e | COMMENT |
| LOW | watchman/PathUtils.cpp | 1 | /* | COMMENT |
| LOW | watchman/XattrUtils.cpp | 21 | // The following are lifted from sys/acl.h and inlined to avoid that | COMMENT |
| LOW | watchman/XattrUtils.cpp | 41 | COMMENT | |
| LOW | watchman/watchman_string.h | 81 | COMMENT | |
| LOW | watchman/ChildProcess.h | 1 | /* | COMMENT |
| LOW | watchman/ChildProcess.h | 161 | // If stdin is a pipe and stdout and stderr aren't, then it's safe to extract | COMMENT |
| LOW | watchman/SanityCheck.cpp | 1 | /* | COMMENT |
| LOW | watchman/bser.cpp | 21 | COMMENT | |
| LOW | watchman/PerfSample.cpp | 1 | /* | COMMENT |
| LOW | watchman/LRUCache.h | 221 | // This owns the nodes in the map | COMMENT |
| LOW | watchman/LRUCache.h | 361 | // If the key is present and satisfied, return a Future that will | COMMENT |
| LOW | watchman/Client.cpp | 1 | /* | COMMENT |
| LOW | watchman/Logging.cpp | 261 | // msvcrt abort() ultimately calls exit(3), so we shortcut that. | COMMENT |
| LOW | watchman/ThreadPool.h | 21 | // tasks that are executed in the thread pool. Contrast with | COMMENT |
| LOW | watchman/watchman_system.h | 1 | /* | COMMENT |
| LOW | watchman/watchman_system.h | 21 | // is included before this header, so we pull it in early. | COMMENT |
| LOW | watchman/watchman_system.h | 41 | #include <errno.h> | COMMENT |
| LOW | watchman/watchman_system.h | 61 | #define STDOUT_FILENO 1 | COMMENT |
| LOW | watchman/watchman_system.h | 81 | #define WATCHMAN_BUILD_INFO BuildInfo_kUpstreamRevision | COMMENT |
| LOW | watchman/watchman_system.h | 101 | #include <grp.h> | COMMENT |
| LOW | watchman/watchman_system.h | 121 | #ifdef HAVE_EXECINFO_H | COMMENT |
| LOW | watchman/watchman_system.h | 141 | (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ >= 5)) && \ | COMMENT |
| LOW | watchman/watchman_system.h | 161 | // configuration. These are helpers to make this work | COMMENT |
| LOW | watchman/watchman_system.h | 201 | } while (0) | COMMENT |
| LOW | watchman/ProcessLock.cpp | 81 | // in the name, so we cannot simply concatenate the state dir path | COMMENT |
| LOW | watchman/state.cpp | 1 | /* | COMMENT |
| LOW | watchman/ContentHash.cpp | 1 | /* | COMMENT |
| LOW | watchman/Errors.h | 61 | } | COMMENT |
| LOW | watchman/string.cpp | 1 | /* | COMMENT |
| LOW | watchman/TriggerCommand.cpp | 1 | /* | COMMENT |
| LOW | watchman/Logging.h | 161 | __FILE__, \ | COMMENT |
| LOW | watchman/stream_unix.cpp | 1 | /* | COMMENT |
| LOW | watchman/stream_unix.cpp | 21 | #ifdef HAVE_SYS_UCRED_H | COMMENT |
| LOW | watchman/PendingCollection.cpp | 161 | } | COMMENT |
| LOW | watchman/InMemoryView.cpp | 1 | /* | COMMENT |
| LOW | watchman/watchman_preprocessor.h | 1 | /* | COMMENT |
| LOW | watchman/watchman_preprocessor.h | 21 | #endif | COMMENT |
| LOW | watchman/watchman_cmd.h | 21 | } // namespace watchman | COMMENT |
| LOW | watchman/listener.cpp | 1 | /* | COMMENT |
| LOW | watchman/listener.cpp | 21 | #include "watchman/Constants.h" | COMMENT |
| LOW | watchman/UserDir.cpp | 1 | /* | COMMENT |
| LOW | watchman/main.cpp | 1 | /* | COMMENT |
| LOW | watchman/main.cpp | 21 | COMMENT | |
| LOW | watchman/main.cpp | 41 | #include "watchman/fs/DirHandle.h" | COMMENT |
| LOW | watchman/main.cpp | 281 | auto parentPid = getppid(); | COMMENT |
| LOW | watchman/main.cpp | 621 | disable_unix_socket = true; | COMMENT |
| LOW | watchman/main.cpp | 821 | } | COMMENT |
| LOW | watchman/InMemoryView.h | 1 | /* | COMMENT |
| LOW | watchman/watcher/kqueue.cpp | 1 | /* | COMMENT |
| LOW | watchman/watcher/win32.cpp | 1 | /* | COMMENT |
| LOW | watchman/watcher/kqueue_and_fsevents.cpp | 1 | /* | COMMENT |
| LOW | watchman/watcher/inotify.cpp | 1 | /* | COMMENT |
| LOW | watchman/watcher/eden.cpp | 1 | /* | COMMENT |
| LOW | watchman/watcher/eden.cpp | 21 | #include <thrift/lib/cpp2/async/RetryingRequestChannel.h> | COMMENT |
| LOW | watchman/test/PathUtilsTest.cpp | 1 | /* | COMMENT |
| LOW | watchman/test/BserTest.cpp | 1 | /* | COMMENT |
| LOW | watchman/test/run.sh | 1 | #!/bin/bash | COMMENT |
| 94 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | watchman/runtests.py | 486 | except Exception: | CODE |
| HIGH | watchman/python/pywatchman_aio/__init__.py | 284 | except asyncio.CancelledError: | CODE |
| HIGH | watchman/python/tests/tests.py | 49 | except WatchmanError: | CODE |
| HIGH | watchman/python/tests/tests.py | 438 | except Exception: | CODE |
| HIGH | watchman/integration/test_local_saved_state.py | 21 | except Exception: | CODE |
| HIGH | watchman/integration/test_request_id.py | 73 | except IOError: | CODE |
| HIGH | watchman/integration/test_sock_perms.py | 26 | except ImportError: | CODE |
| HIGH | watchman/integration/test_sock_perms.py | 68 | except Exception: | CODE |
| HIGH | watchman/integration/test_nice.py | 42 | except IOError: | CODE |
| HIGH | watchman/integration/test_scm.py | 22 | except Exception: | CODE |
| HIGH | watchman/integration/lib/WatchmanTestCase.py | 577 | except unittest.SkipTest: | CODE |
| HIGH | watchman/integration/lib/WatchmanTestCase.py | 157 | except Exception: | CODE |
| HIGH | watchman/integration/lib/WatchmanTestCase.py | 191 | except Exception: | CODE |
| HIGH | watchman/integration/lib/WatchmanTestCase.py | 260 | except Exception: | CODE |
| HIGH | watchman/integration/lib/WatchmanInstance.py | 28 | except ImportError: | CODE |
| HIGH | watchman/integration/lib/WatchmanEdenTestCase.py | 106 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | watchman/test/async/test_dead_socket.py | 33 | def test_subscription_dead_socket(self): | CODE |
| LOW | watchman/python/pywatchman_aio/__init__.py | 218 | async def receive_bilateral_response(self): | CODE |
| LOW | watchman/python/pywatchman_aio/__init__.py | 353 | def _ensure_subscription_queue_exists(self, name, root): | CODE |
| LOW | watchman/python/pywatchman_aio/__init__.py | 358 | async def _process_unilateral_response(self, response): | CODE |
| LOW | watchman/python/tests/tests.py | 102 | def test_missing_socket_file_raises_connect_error(self): | CODE |
| LOW | watchman/python/tests/tests.py | 117 | def make_deleted_windows_socket_path(self): | CODE |
| LOW | watchman/python/tests/tests.py | 120 | def make_deleted_unix_socket_path(self): | CODE |
| LOW | watchman/python/tests/tests.py | 454 | def test_decoder_raises_rather_than_overflowing(self): | CODE |
| LOW | watchman/python/tests/tests.py | 459 | def test_codec_reports_a_watchman_error(self): | CODE |
| LOW | watchman/python/pywatchman/__init__.py | 395 | def _get_overlapped_result_ex_impl(pipe, olap, nbytes, millis, alertable): | CODE |
| LOW | watchman/integration/test_command.py | 16 | def test_unknown_commands_print_json_error(self) -> None: | CODE |
| LOW | watchman/integration/test_ignore.py | 46 | def test_ignore_overlap_vcs_ignore(self) -> None: | CODE |
| LOW | watchman/integration/test_invalid_expr.py | 41 | def test_invalid_sync_timeout(self) -> None: | CODE |
| LOW | watchman/integration/test_sock_perms.py | 131 | def test_user_not_in_sock_group(self) -> None: | CODE |
| LOW | watchman/integration/test_sock_perms.py | 163 | def test_user_previously_in_sock_group(self) -> None: | CODE |
| LOW | watchman/integration/test_sock_perms.py | 222 | def test_custom_sock_access_group(self) -> None: | CODE |
| LOW | watchman/integration/test_sock_perms.py | 230 | def test_custom_sock_access_others(self) -> None: | CODE |
| LOW | watchman/integration/test_sock_perms.py | 248 | def test_sock_access_downgrade(self) -> None: | CODE |
| LOW | watchman/integration/test_sock_perms.py | 258 | def test_sock_access_group_change(self) -> None: | CODE |
| LOW | watchman/integration/test_sock_perms.py | 281 | def test_sock_access_via_acl_user_not_in_sock_group(self) -> None: | CODE |
| LOW | watchman/integration/test_nice.py | 22 | def test_failing_to_start_when_nice(self) -> None: | CODE |
| LOW | watchman/integration/test_nice.py | 31 | def test_failing_to_start_when_nice_foreground(self) -> None: | CODE |
| LOW | watchman/integration/test_subscribe.py | 655 | def test_subscription_cleanup(self) -> None: | CODE |
| LOW | watchman/integration/test_subscribe.py | 798 | def test_resubscribe_same_name_no_error(self) -> None: | CODE |
| LOW | watchman/integration/test_subscribe.py | 839 | def test_resubscribe_same_name_no_warning(self) -> None: | CODE |
| LOW | watchman/integration/test_subscribe.py | 883 | def test_multi_client_same_name(self) -> None: | CODE |
| LOW | watchman/integration/test_watch_project.py | 17 | def make_empty_watchmanconfig(dir) -> None: | CODE |
| LOW | watchman/integration/test_glob.py | 162 | def test_glob_generator_empty(self) -> None: | CODE |
| LOW | watchman/integration/test_glob.py | 173 | def test_glob_generator_absolute(self) -> None: | CODE |
| LOW | watchman/integration/test_path_generator.py | 60 | def test_path_generator_relative_root(self) -> None: | CODE |
| LOW | watchman/integration/test_path_generator.py | 103 | def test_path_generator_empty(self) -> None: | CODE |
| LOW | watchman/integration/test_suffix_generator.py | 60 | def test_suffix_generator_empty(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_since.py | 59 | def test_eden_empty_relative_root(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_since.py | 256 | def test_eden_since_across_update(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_since.py | 297 | def test_eden_since_over_threshold(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_since.py | 357 | def test_eden_since_dotfiles_change(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_since.py | 387 | def test_eden_since_fresh_instance_dotfiles(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_glob_upper_bound.py | 45 | def test_eden_since_upper_bound(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_glob_upper_bound.py | 92 | def test_eden_since_empty_upper_bound(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_glob_upper_bound.py | 117 | def test_eden_since_upper_bound_case_insensitive(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_glob_upper_bound.py | 147 | def test_eden_since_upper_bound_includedotfiles(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_glob_upper_bound.py | 177 | def test_eden_since_upper_bound_name_escaping(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_glob_upper_bound.py | 204 | def test_eden_since_upper_bound_name_normalization(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_glob_upper_bound.py | 229 | def test_eden_since_upper_bound_name_set_normalization(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_glob_upper_bound.py | 256 | def test_eden_since_upper_bound_match_noescape(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_glob_upper_bound.py | 280 | def test_eden_since_upper_bound_match_escape(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_glob_upper_bound.py | 304 | def test_eden_since_upper_bound_dirname_escaping(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_glob_upper_bound.py | 327 | def test_eden_since_upper_bound_match_complex_pattern(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_journal.py | 104 | def test_two_rapid_checkouts_show_briefly_changed_files(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_journal.py | 161 | def test_aba_checkouts_show_briefly_changed_files(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_journal.py | 214 | def test_querying_with_truncated_journal_returns_fresh_instance(self) -> None: | CODE |
| LOW | watchman/integration/eden/test_eden_pathgen.py | 292 | def test_path_and_glob_dotfiles(self): | CODE |
| LOW | watchman/integration/eden/test_eden_shutdown.py | 14 | def test_shutdown_and_restart(self) -> None: | CODE |
| LOW | watchman/integration/lib/path_utils.py | 32 | def get_canonical_filesystem_path(name): | CODE |
| LOW | watchman/integration/lib/path_utils.py | 63 | def get_canonical_filesystem_path(name): | CODE |
| LOW | watchman/integration/lib/path_utils.py | 75 | def get_canonical_filesystem_path(name): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | watchman/python/tests/tests.py | 142 | # Define a new class that derives from the input class | COMMENT |
| MEDIUM | watchman/integration/test_big.py | 21 | # Create a huge query. We're shooting for more than 2MB; the server buffer | COMMENT |
| MEDIUM | watchman/integration/test_subscribe.py | 769 | # Create a subscription | COMMENT |
| MEDIUM | watchman/integration/test_subscribe.py | 807 | # Create a subscription | COMMENT |
| MEDIUM | watchman/integration/test_subscribe.py | 824 | # Create a new subscription with the same name | COMMENT |
| MEDIUM | watchman/integration/test_subscribe.py | 848 | # Create a subscription | COMMENT |
| MEDIUM | watchman/integration/test_subscribe.py | 865 | # Create a new subscription with the same name | COMMENT |
| MEDIUM | watchman/integration/test_subscribe.py | 895 | # Create a subscription | COMMENT |
| MEDIUM | watchman/integration/test_subscribe.py | 909 | # Create a new subscription with the same name from a different client, | COMMENT |
| MEDIUM | watchman/integration/test_subscribe.py | 966 | # Create a subscription | COMMENT |
| MEDIUM | watchman/integration/test_since.py | 27 | # Create a cursor for this state | COMMENT |
| MEDIUM | watchman/integration/test_nodejs.py | 45 | # Define a new class that derives from the input class. | COMMENT |
| MEDIUM | watchman/integration/eden/test_eden_pathgen.py | 69 | # Create the file that we want to remove | COMMENT |
| MEDIUM | watchman/integration/lib/WatchmanTestCase.py | 560 | # Define a new class that derives from the input class | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | watchman/runtests.py | 52 | except Exception: | CODE |
| LOW | watchman/runtests.py | 457 | except Exception as e: | CODE |
| LOW | watchman/runtests.py | 478 | except Exception as exc: | CODE |
| LOW | watchman/runtests.py | 486 | except Exception: | CODE |
| LOW | watchman/runtests.py | 497 | except Exception as e: | CODE |
| LOW | watchman/runtests.py | 517 | except Exception as e: | CODE |
| LOW | watchman/python/pywatchman_aio/__init__.py | 286 | except Exception as ex: | CODE |
| LOW | watchman/python/pywatchman_aio/__init__.py | 325 | except Exception as ex: | CODE |
| MEDIUM | watchman/python/pywatchman_aio/__init__.py | 281 | def do_if_done(fut): | CODE |
| LOW | watchman/python/tests/tests.py | 97 | except Exception as e: | CODE |
| LOW | watchman/python/tests/tests.py | 438 | except Exception: | CODE |
| MEDIUM | watchman/python/tests/tests.py | 46 | def test_exception_handling(self): | CODE |
| LOW | watchman/python/pywatchman/__init__.py | 380 | except Exception as e: | CODE |
| LOW | watchman/python/pywatchman/__init__.py | 830 | except Exception as e: | CODE |
| MEDIUM | watchman/python/pywatchman/__init__.py | 303 | def readBytes(self, size): | CODE |
| LOW | watchman/integration/test_local_saved_state.py | 21 | except Exception: | CODE |
| MEDIUM | watchman/integration/test_local_saved_state.py | 16 | def is_ubuntu() -> bool: | CODE |
| MEDIUM | watchman/integration/test_fork.py | 46 | print("Error in child process: %s" % exc) | CODE |
| LOW | watchman/integration/test_sock_perms.py | 68 | except Exception: | CODE |
| LOW | watchman/integration/test_scm.py | 22 | except Exception: | CODE |
| MEDIUM | watchman/integration/test_scm.py | 17 | def is_ubuntu() -> bool: | CODE |
| LOW | watchman/integration/test_trigger_chdir.py | 41 | except Exception: | CODE |
| LOW | watchman/integration/lib/WatchmanTestCase.py | 157 | except Exception: | CODE |
| LOW | watchman/integration/lib/WatchmanTestCase.py | 191 | except Exception: | CODE |
| LOW | watchman/integration/lib/WatchmanTestCase.py | 260 | except Exception: | CODE |
| LOW | watchman/integration/lib/WatchmanSCMTestCase.py | 68 | except Exception as e: | CODE |
| LOW | watchman/integration/lib/WatchmanEdenTestCase.py | 106 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | watchman/integration/test_fishy.py | 37 | "mv foo bar && ln -s bar foo", | CODE |
| HIGH | watchman/integration/test_fishy.py | 57 | "touch a && mkdir d1 d2 && mv d1 d2 && mv d2/d1 . && mv a d1", | CODE |
| HIGH | watchman/integration/lib/WatchmanInstance.py | 246 | # pyre-fixme[61]: `val` is undefined, or not always defined. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | watchman/LRUCache.h | 364 | // The purpose of this function is to reduce the exposure to | COMMENT |
| LOW⚡ | watchman/rust/watchman_client/src/lib.rs | 658 | // Step 1: serialize into a bser byte buffer | COMMENT |
| LOW⚡ | watchman/rust/watchman_client/src/lib.rs | 666 | // Step 2: ask the client task to send it for us | COMMENT |
| LOW⚡ | watchman/rust/watchman_client/src/lib.rs | 676 | // Step 3: wait for the client task to give us the response | COMMENT |
| LOW⚡ | watchman/rust/watchman_client/src/lib.rs | 682 | // Step 4: sniff for an error response in the deserialized data | COMMENT |
| LOW⚡ | watchman/rust/watchman_client/src/lib.rs | 690 | // Step 5: deserialize into the caller-desired format | COMMENT |
| LOW | watchman/root/iothread.cpp | 704 | // Step 1: Process readDir results. | COMMENT |
| LOW | watchman/root/iothread.cpp | 768 | // Step 2: Handle errors. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | watchman/rust/watchman_client/src/lib.rs | 658 | // Step 1: serialize into a bser byte buffer | COMMENT |
| LOW⚡ | watchman/rust/watchman_client/src/lib.rs | 666 | // Step 2: ask the client task to send it for us | COMMENT |
| LOW⚡ | watchman/rust/watchman_client/src/lib.rs | 676 | // Step 3: wait for the client task to give us the response | COMMENT |
| LOW⚡ | watchman/rust/watchman_client/src/lib.rs | 682 | // Step 4: sniff for an error response in the deserialized data | COMMENT |
| LOW⚡ | watchman/rust/watchman_client/src/lib.rs | 690 | // Step 5: deserialize into the caller-desired format | COMMENT |
| LOW | watchman/root/iothread.cpp | 704 | // Step 1: Process readDir results. | COMMENT |
| LOW | watchman/root/iothread.cpp | 768 | // Step 2: Handle errors. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | watchman/runtests.py | 297 | CODE | |
| LOW | watchman/runtests.py | 439 | CODE | |
| LOW | watchman/python/pywatchman/pybser.py | 47 | CODE | |
| LOW | watchman/python/pywatchman/pybser.py | 94 | CODE | |
| LOW | watchman/python/pywatchman/pybser.py | 110 | CODE | |
| LOW | watchman/python/pywatchman/pybser.py | 161 | CODE | |
| LOW | watchman/python/pywatchman/pybser.py | 307 | CODE | |
| LOW | watchman/python/pywatchman/pybser.py | 413 | CODE | |
| LOW | watchman/python/pywatchman/__init__.py | 395 | CODE | |
| LOW | watchman/python/pywatchman/__init__.py | 860 | CODE | |
| LOW | watchman/integration/test_restrictions.py | 30 | CODE | |
| LOW | watchman/integration/test_watch_project.py | 24 | CODE | |
| LOW | watchman/integration/test_trigger.py | 71 | CODE | |
| LOW | watchman/integration/test_trigger.py | 75 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | watchman/IgnoreSet.cpp | 63 | // Definitely ignoring this portion of the tree | COMMENT |
| MEDIUM | watchman/python/pywatchman/__init__.py | 605 | # The test harness sets WATCHMAN_BINARY to the binary under test, | COMMENT |
| LOW | watchman/integration/test_saved_state.py | 19 | # This test does not require much so just create a super simple repo | COMMENT |
| MEDIUM | watchman/query/dirname.cpp | 152 | // We could leverage the depth parameter to generate a depth bound, e.g. `*` | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | watchman/python/publish-pypi.sh | 8 | # =============================== | COMMENT |
| MEDIUM | watchman/python/publish-pypi.sh | 10 | # =============================== | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | watchman/stream_win.cpp | 620 | // TODO: implement this for Windows | COMMENT |
| LOW | watchman/test/lib/FakeFileSystem.cpp | 173 | // TODO: implement strict case checking | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | watchman/test/async/AsyncWatchmanTestCase.py | 52 | CODE | |
| LOW | watchman/python/pywatchman/__init__.py | 860 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | watchman/integration/lib/TempDir.py | 68 | def set_keep(self, value) -> None: | CODE |