Node-based Visual Programming Toolbox
This report presents the forensic synthetic code analysis of alicevision/Meshroom, a Python project with 12,836 GitHub stars. SynthScan v2.0 examined 38,614 lines of code across 188 source files, recording 465 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 26.7 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 465 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | meshroom/ui/graph.py | 1320 | self.push(commands.AddEdgeCommand(self._graph, src, dst)) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1326 | self.push(commands.RemoveEdgeCommand(self._graph, edge)) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1329 | self.push(commands.RemoveEdgeCommand(self._graph, edge)) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1375 | self.push(commands.SetAttributeCommand(self._graph, attribute, attribute.getDefaultValue())) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1380 | self.push(commands.AddAttributeKeyValueCommand(self._graph, attribute, key, value)) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1385 | self.push(commands.AddAttributeKeyValueCommand(self._graph, attribute, key, attribute.getDefaultValue())) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1390 | self.push(commands.RemoveAttributeKeyCommand(self._graph, attribute, key)) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1398 | self.push(commands.SetObservationCommand(self._graph, shape, key, observation)) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1403 | self.push(commands.SetObservationCommand(self._graph, shape, key, observation)) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1408 | self.push(commands.RemoveObservationCommand(self._graph, shape, key)) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1413 | return self.push(commands.UpgradeNodeCommand(self._graph, node)) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1438 | self.push(commands.ListAttributeAppendCommand(self._graph, attribute, pyValue)) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1442 | self.push(commands.ListAttributeRemoveCommand(self._graph, attribute)) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1448 | self.push(commands.RemoveAnySetAttributeCommand(self._graph, attribute)) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1454 | self.push(commands.RenameAnySetAttributeCommand(self._graph, attribute, name, label)) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1460 | self.push(commands.MoveAnySetAttributeCommand(self._graph, attribute, offset)) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1493 | self.push(commands.RemoveSelectedImagesCommand(self._graph, self.cameraInit, images)) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1499 | self.push(commands.RemoveImagesCommand(self._graph, [self.cameraInit])) | CODE |
| HIGH⚡ | meshroom/ui/graph.py | 1505 | self.push(commands.RemoveImagesCommand(self._graph, list(self.cameraInits))) | CODE |
| HIGH | meshroom/ui/graph.py | 562 | localFile = filepath.toString() | CODE |
| HIGH | meshroom/ui/graph.py | 568 | return self.push(commands.ImportProjectCommand(self._graph, localFile, position=position, yOffset=yOffset)) | CODE |
| HIGH | meshroom/ui/graph.py | 998 | return self.push(commands.AddNodeCommand(self._graph, nodeType, position=position, **kwargs)) | CODE |
| HIGH | meshroom/ui/graph.py | 1024 | return self.push(commands.RenameNodeCommand(self._graph, node, uniqueName)) | CODE |
| HIGH | meshroom/ui/graph.py | 1034 | self.push(commands.MoveNodeCommand(self._graph, node, position)) | CODE |
| HIGH | meshroom/ui/graph.py | 1160 | self.push(commands.RemoveNodeCommand(self._graph, node)) | CODE |
| HIGH | meshroom/ui/graph.py | 1198 | duplicates = self.push(commands.DuplicateNodesCommand(self._graph, nodes)) | CODE |
| HIGH | meshroom/ui/graph.py | 1304 | self.push(commands.ConnectAnySetCommand(self._graph, src=dst, anySetAttribute=src)) | CODE |
| HIGH | meshroom/ui/graph.py | 1306 | self.push(commands.ConnectAnySetCommand(self._graph, src=src, anySetAttribute=dst)) | CODE |
| HIGH | meshroom/ui/graph.py | 1363 | self.push(commands.SetAttributeCommand(self._graph, attribute, value)) | CODE |
| HIGH | meshroom/ui/graph.py | 1642 | result = self.push(commands.PasteNodesCommand(self._graph, graphData, pos)) | CODE |
| HIGH | meshroom/ui/scene.py | 499 | localFile = url.toLocalFile() or url.toString() | CODE |
| HIGH | meshroom/ui/scene.py | 864 | p = imagePath.toString() | CODE |
| HIGH | meshroom/ui/app.py | 505 | projectFileNorm = projectFile.toString() | STRING |
| HIGH | meshroom/ui/app.py | 557 | projectFileNorm = projectFile.toString() | STRING |
| HIGH | meshroom/ui/app.py | 607 | folderPath = imagesFolder.toString() | STRING |
| HIGH | meshroom/ui/app.py | 642 | folderPath = imagesFolder.toString() | STRING |
| HIGH⚡ | meshroom/ui/commands.py | 72 | self.push(command) # takes ownership | CODE |
| HIGH | meshroom/ui/components/scene3D.py | 122 | z = r2 * 0.5 / p2d.length() | CODE |
| HIGH⚡ | meshroom/ui/components/scene3D.py | 159 | A = A/A.length() | CODE |
| HIGH⚡ | meshroom/ui/components/scene3D.py | 160 | B = B/B.length() | CODE |
| HIGH⚡ | meshroom/ui/components/scene3D.py | 164 | s = v.length() | CODE |
| HIGH | meshroom/ui/components/scene3D.py | 452 | value = screenVector.length() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | tests/test_groupAttributes.py | 193 | nestedPosition.xyz.test.x.inputLink.asLinkExpr() == nestedColor.rgb.test.r.asLinkExpr() | CODE |
| CRITICAL⚡ | tests/test_groupAttributes.py | 195 | nestedPosition.xyz.test.y.inputLink.asLinkExpr() == nestedColor.rgb.test.g.asLinkExpr() | CODE |
| CRITICAL⚡ | tests/test_groupAttributes.py | 197 | nestedPosition.xyz.test.z.inputLink.asLinkExpr() == nestedColor.rgb.test.b.asLinkExpr() | CODE |
| CRITICAL⚡ | tests/test_groupAttributes.py | 219 | nestedPosition.xyz.test.x.inputLink.asLinkExpr() == nestedColor.rgb.test.r.asLinkExpr() | CODE |
| CRITICAL⚡ | tests/test_groupAttributes.py | 221 | nestedPosition.xyz.test.y.inputLink.asLinkExpr() == nestedColor.rgb.test.g.asLinkExpr() | CODE |
| CRITICAL⚡ | tests/test_groupAttributes.py | 223 | nestedPosition.xyz.test.z.inputLink.asLinkExpr() == nestedColor.rgb.test.b.asLinkExpr() | CODE |
| CRITICAL⚡ | tests/test_groupAttributes.py | 249 | nestedPosition.xyz.test.x.inputLink.asLinkExpr() == nestedColor.rgb.test.r.asLinkExpr() | CODE |
| CRITICAL⚡ | tests/test_groupAttributes.py | 251 | nestedPosition.xyz.test.y.inputLink.asLinkExpr() == nestedColor.rgb.test.g.asLinkExpr() | CODE |
| CRITICAL⚡ | tests/test_groupAttributes.py | 253 | nestedPosition.xyz.test.z.inputLink.asLinkExpr() == nestedColor.rgb.test.b.asLinkExpr() | CODE |
| CRITICAL⚡ | tests/test_groupAttributes.py | 270 | nestedPosition.xyz.test.x.inputLink.asLinkExpr() == nestedColor.rgb.test.r.asLinkExpr() | CODE |
| CRITICAL⚡ | tests/test_groupAttributes.py | 272 | nestedPosition.xyz.test.y.inputLink.asLinkExpr() == nestedColor.rgb.test.g.asLinkExpr() | CODE |
| CRITICAL⚡ | tests/test_groupAttributes.py | 274 | nestedPosition.xyz.test.z.inputLink.asLinkExpr() == r.asLinkExpr() == nestedColor.rgb.r.asLinkExpr() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | CMakeLists.txt | 29 | # ============================================================================== | COMMENT |
| MEDIUM | CMakeLists.txt | 33 | # ============================================================================== | COMMENT |
| MEDIUM | setupInitScriptUnix.py | 1 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | setupInitScriptUnix.py | 9 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_anySet_attribute.py | 23 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_anySet_attribute.py | 25 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_anySet_attribute.py | 39 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_anySet_attribute.py | 41 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_anySet_attribute.py | 65 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_anySet_attribute.py | 67 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_anySet_attribute.py | 192 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_anySet_attribute.py | 194 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_attributeDescDefaults.py | 123 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_attributeDescDefaults.py | 125 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_attributeDescDefaults.py | 18 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_attributeDescDefaults.py | 21 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_attributeDescDefaults.py | 38 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_attributeDescDefaults.py | 41 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_attributeDescDefaults.py | 56 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_attributeDescDefaults.py | 58 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/nodes/test/AllAttributesNodes.py | 18 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/nodes/test/AllAttributesNodes.py | 20 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/nodes/test/AllAttributesNodes.py | 75 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/nodes/test/AllAttributesNodes.py | 77 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/nodes/test/AllAttributesNodes.py | 95 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/nodes/test/AllAttributesNodes.py | 97 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/nodes/test/AllAttributesNodes.py | 107 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/nodes/test/AllAttributesNodes.py | 109 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/nodes/test/AllAttributesNodes.py | 175 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/nodes/test/AllAttributesNodes.py | 177 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/nodes/test/AllAttributesNodes.py | 193 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/nodes/test/AllAttributesNodes.py | 195 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/nodes/test/AllAttributesNodes.py | 223 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/nodes/test/AllAttributesNodes.py | 225 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/nodes/test/AllAttributesNodes.py | 238 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/nodes/test/AllAttributesNodes.py | 240 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/nodes/test/AllAttributesNodes.py | 254 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/nodes/test/AllAttributesNodes.py | 256 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/workflows/nightly.yml | 14 | # ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/nightly.yml | 17 | # ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/nightly.yml | 85 | # ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/nightly.yml | 91 | # ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/nightly.yml | 112 | # ── Create the release if it doesn't exist yet ────────── | COMMENT |
| MEDIUM | .github/workflows/nightly.yml | 124 | # ── Replace assets ─────────────────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/nightly.yml | 147 | # ── Update release body ────────────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/nightly.yml | 169 | # ── Move the nightly tag to current HEAD ────── | COMMENT |
| MEDIUM | .github/workflows/run-tests.yml | 38 | # ── Primary Python environment ─────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/run-tests.yml | 51 | # ── Lint ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/run-tests.yml | 59 | # ── Tests ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/run-tests.yml | 81 | # ── meshroom_compute smoke test (Python 3.9) ───────────── | COMMENT |
| MEDIUM | localfarm/localFarmBackend.py | 414 | # ====================== | COMMENT |
| MEDIUM | localfarm/localFarmBackend.py | 416 | # ====================== | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_submit.py | 115 | except Exception as e: | CODE |
| LOW | tests/test_compute.py | 642 | except Exception: | CODE |
| LOW | meshroom/ui/graph.py | 683 | except Exception as e: | CODE |
| LOW | meshroom/ui/graph.py | 709 | except Exception as e: | CODE |
| LOW | meshroom/ui/graph.py | 732 | except Exception as e: | CODE |
| LOW | meshroom/ui/graph.py | 759 | except Exception as e: | CODE |
| LOW | meshroom/ui/graph.py | 781 | except Exception as e: | CODE |
| LOW | meshroom/ui/graph.py | 799 | except Exception as e: | CODE |
| LOW | meshroom/ui/graph.py | 817 | except Exception as e: | CODE |
| LOW | meshroom/ui/graph.py | 862 | except Exception as e: | CODE |
| LOW | meshroom/ui/scene.py | 110 | except Exception as exc: | CODE |
| LOW | meshroom/ui/scene.py | 146 | except Exception: | CODE |
| LOW | meshroom/ui/scene.py | 527 | except Exception: | CODE |
| LOW | meshroom/ui/scene.py | 874 | except Exception as exc: | CODE |
| LOW | meshroom/ui/scene.py | 920 | except Exception as exc: | CODE |
| LOW | meshroom/ui/scene.py | 1221 | except Exception as err: | CODE |
| LOW | meshroom/ui/utils.py | 8 | except Exception: | CODE |
| LOW | meshroom/ui/app.py | 440 | except Exception as err: | STRING |
| LOW | meshroom/ui/commands.py | 29 | except Exception: | CODE |
| LOW | meshroom/ui/commands.py | 37 | except Exception: | CODE |
| LOW⚡ | meshroom/ui/commands.py | 67 | except Exception: | CODE |
| LOW | meshroom/ui/commands.py | 867 | except Exception: | CODE |
| LOW | meshroom/ui/commands.py | 908 | except Exception: | CODE |
| LOW | meshroom/ui/components/scriptEditor.py | 67 | except Exception: | CODE |
| LOW | meshroom/ui/components/thumbnail.py | 262 | except Exception as exc: | CODE |
| LOW | meshroom/ui/components/csvData.py | 78 | except Exception as exc: | CODE |
| MEDIUM⚡ | meshroom/ui/components/shapes/shapeFile.py | 197 | print(f"Error decoding JSON: {err}") | CODE |
| LOW⚡ | meshroom/ui/components/shapes/shapeFile.py | 198 | except Exception as exc: | CODE |
| MEDIUM⚡ | meshroom/ui/components/shapes/shapeFile.py | 199 | print(f"Error loading shapes: {exc}") | CODE |
| LOW | meshroom/core/plugins.py | 538 | except Exception as exc: | CODE |
| LOW | meshroom/core/plugins.py | 781 | except Exception as exc: | CODE |
| LOW | meshroom/core/attribute.py | 358 | except Exception as err: | CODE |
| LOW | meshroom/core/attribute.py | 382 | except Exception as exc: | CODE |
| LOW | meshroom/core/attribute.py | 579 | except Exception as exc: | CODE |
| LOW | meshroom/core/evaluation.py | 50 | except Exception: | CODE |
| LOW | meshroom/core/graph.py | 58 | except Exception: | CODE |
| LOW | meshroom/core/graph.py | 924 | except Exception: | CODE |
| LOW | meshroom/core/graph.py | 1617 | except Exception as e: | CODE |
| LOW | meshroom/core/graph.py | 1806 | except Exception: | CODE |
| LOW | meshroom/core/graph.py | 1907 | except Exception as exc: | CODE |
| LOW | meshroom/core/graph.py | 1956 | except Exception as exc: | CODE |
| MEDIUM | meshroom/core/graph.py | 1090 | def dfsVisit(self, u, visitor, colors, nodeChildren, longestPathFirst): | CODE |
| LOW | meshroom/core/__init__.py | 18 | except Exception: | CODE |
| LOW | meshroom/core/__init__.py | 98 | except Exception as exc: | CODE |
| LOW | meshroom/core/__init__.py | 140 | except Exception as exc: | CODE |
| LOW | meshroom/core/taskManager.py | 111 | except Exception as exc: | CODE |
| LOW | meshroom/core/taskManager.py | 158 | except Exception as exc: | CODE |
| LOW | meshroom/core/taskManager.py | 174 | except Exception as exc: | CODE |
| LOW | meshroom/core/taskManager.py | 222 | except Exception as e: | CODE |
| LOW | meshroom/core/taskManager.py | 600 | except Exception as exc: | CODE |
| LOW | meshroom/core/stats.py | 86 | except Exception as exc: | CODE |
| LOW⚡ | meshroom/core/stats.py | 101 | except Exception as exc: | CODE |
| LOW⚡ | meshroom/core/stats.py | 107 | except Exception as exc: | CODE |
| LOW⚡ | meshroom/core/stats.py | 112 | except Exception as exc: | CODE |
| LOW⚡ | meshroom/core/stats.py | 118 | except Exception as exc: | CODE |
| LOW⚡ | meshroom/core/stats.py | 124 | except Exception as exc: | CODE |
| LOW⚡ | meshroom/core/stats.py | 132 | except Exception as exc: | CODE |
| LOW⚡ | meshroom/core/stats.py | 302 | except Exception as exc: | CODE |
| LOW⚡ | meshroom/core/stats.py | 306 | except Exception as exc: | CODE |
| LOW⚡ | meshroom/core/stats.py | 310 | except Exception as exc: | CODE |
| 30 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_compatibility.py | 237 | def test_description_conflict(): | CODE |
| LOW⚡ | tests/test_anySet_attribute.py | 27 | def test_dynamic_attribute_desc_type(): | CODE |
| LOW⚡ | tests/test_anySet_attribute.py | 33 | def test_dynamic_attribute_desc_instance_type(): | CODE |
| LOW⚡ | tests/test_anySet_attribute.py | 43 | def test_dynamic_attribute_present_on_node(): | CODE |
| LOW⚡ | tests/test_anySet_attribute.py | 55 | def test_dynamic_attribute_validates_any_connection(): | CODE |
| LOW⚡ | tests/test_anySet_attribute.py | 69 | def test_add_dynamic_input_creates_sibling_attribute(): | CODE |
| LOW⚡ | tests/test_anySet_attribute.py | 196 | def test_dynamic_inputs_serialized_in_todict(): | CODE |
| LOW | tests/test_anySet_attribute.py | 95 | def test_remove_dynamic_input(): | CODE |
| LOW | tests/test_anySet_attribute.py | 113 | def test_anyset_attribute_can_be_restored_with_edges(): | CODE |
| LOW | tests/test_anySet_attribute.py | 139 | def test_rename_anyset_attribute_updates_name_label_and_keeps_edges(): | CODE |
| LOW | tests/test_anySet_attribute.py | 157 | def test_rename_anyset_attribute_rejects_duplicate_name(): | CODE |
| LOW | tests/test_anySet_attribute.py | 172 | def test_move_anyset_attribute_updates_order(): | CODE |
| LOW | tests/test_anySet_attribute.py | 234 | def test_dynamic_inputs_restored_after_load(tmp_path): | CODE |
| LOW | tests/test_anySet_attribute.py | 265 | def test_moved_anyset_attribute_order_restored_after_load(tmp_path): | CODE |
| LOW | tests/test_anySet_attribute.py | 294 | def test_anyset_expanded_state_restored_after_load(tmp_path): | CODE |
| LOW | tests/test_anySet_attribute.py | 315 | def test_legacy_dict_anyset_serialization_still_loads(tmp_path): | CODE |
| LOW | tests/test_anySet_attribute.py | 342 | def test_legacy_list_anyset_serialization_still_loads(tmp_path): | CODE |
| LOW | tests/test_flowAttribute.py | 42 | def test_default_value_is_none(self): | CODE |
| LOW | tests/test_flowAttribute.py | 67 | def test_every_node_has_flow_attributes(self): | CODE |
| LOW⚡ | tests/test_flowAttribute.py | 97 | def test_flow_not_in_regular_attributes(self): | CODE |
| LOW⚡ | tests/test_flowAttribute.py | 107 | def test_flow_input_not_connected_by_default(self): | CODE |
| LOW⚡ | tests/test_flowAttribute.py | 114 | def test_flow_attribute_is_default_when_not_connected(self): | CODE |
| LOW⚡ | tests/test_flowAttribute.py | 120 | def test_connect_flow_attributes(self): | CODE |
| LOW | tests/test_flowAttribute.py | 131 | def test_flow_attributes_only_connect_to_flow(self): | CODE |
| LOW | tests/test_flowAttribute.py | 147 | def test_flow_serialized_value_is_none_when_not_connected(self): | CODE |
| LOW | tests/test_flowAttribute.py | 154 | def test_flow_serialized_value_is_link_when_connected(self): | CODE |
| LOW | tests/test_flowAttribute.py | 166 | def test_flow_attribute_is_not_default_when_connected(self): | CODE |
| LOW⚡ | tests/test_flowAttribute.py | 180 | def test_unconnected_flow_not_in_serialized_internal_inputs(self): | CODE |
| LOW⚡ | tests/test_flowAttribute.py | 189 | def test_unconnected_flow_not_in_serialized_inputs(self): | CODE |
| LOW⚡ | tests/test_flowAttribute.py | 197 | def test_connected_flow_in_serialized_internal_inputs(self): | CODE |
| LOW | tests/test_flowAttribute.py | 213 | def test_save_and_load_graph_with_flow_connection(self): | CODE |
| LOW | tests/test_flowAttribute.py | 241 | def test_save_and_load_graph_no_data_for_unconnected_flow(self): | CODE |
| LOW | tests/test_nodes.py | 487 | def test_size_lambda_single_arg(self): | CODE |
| LOW | tests/test_nodes.py | 512 | def test_size_static_node_size(self): | CODE |
| LOW | tests/test_nodes.py | 526 | def test_size_dynamic_node_size(self): | CODE |
| LOW | tests/test_nodes.py | 551 | def test_size_custom_function(self): | CODE |
| LOW | tests/test_nodes.py | 579 | def test_size_custom_callable_class(self): | CODE |
| LOW⚡ | tests/test_attributeLambda.py | 68 | def test_callable_default_value_with_node_param(self): | CODE |
| LOW⚡ | tests/test_attributeLambda.py | 77 | def test_callable_default_value_with_attr_param(self): | CODE |
| LOW⚡ | tests/test_attributeLambda.py | 86 | def test_set_value_with_callable(self): | CODE |
| LOW⚡ | tests/test_attributeLambda.py | 94 | def test_set_value_with_attr_callable(self): | CODE |
| LOW⚡ | tests/test_attributeLambda.py | 102 | def test_callable_default_reflects_current_state(self): | CODE |
| LOW | tests/test_attributeLambda.py | 114 | def test_reset_to_default_with_callable(self): | CODE |
| LOW⚡ | tests/test_attributeDescDefaults.py | 93 | def test_param_no_value_is_dynamic(attrDesc): | CODE |
| LOW⚡ | tests/test_attributeDescDefaults.py | 98 | def test_label_auto_generated_from_camel_case(): | CODE |
| LOW⚡ | tests/test_attributeDescDefaults.py | 105 | def test_label_auto_generated_from_snake_case(): | CODE |
| LOW⚡ | tests/test_attributeDescDefaults.py | 111 | def test_explicit_label_overrides_auto_generated(): | CODE |
| LOW⚡ | tests/test_attributeDescDefaults.py | 117 | def test_explicit_description_preserved(): | CODE |
| LOW⚡ | tests/test_attributeDescDefaults.py | 182 | def test_output_desc_is_dynamic(self, node): | CODE |
| LOW⚡ | tests/test_attributeDescDefaults.py | 189 | def test_file_output_value_is_none(self, node): | CODE |
| LOW⚡ | tests/test_attributeDescDefaults.py | 192 | def test_bool_output_value_is_none(self, node): | CODE |
| LOW⚡ | tests/test_attributeDescDefaults.py | 195 | def test_int_output_value_is_none(self, node): | CODE |
| LOW⚡ | tests/test_attributeDescDefaults.py | 198 | def test_float_output_value_is_none(self, node): | CODE |
| LOW⚡ | tests/test_attributeDescDefaults.py | 201 | def test_string_output_value_is_none(self, node): | CODE |
| LOW | tests/test_attributeDescDefaults.py | 76 | def test_param_minimal_creation(attrDesc): | CODE |
| LOW | tests/test_attributeDescDefaults.py | 155 | def test_string_input_default(self, node): | CODE |
| LOW | tests/test_attributeDescDefaults.py | 161 | def test_choice_input_default(self, node): | CODE |
| LOW⚡ | tests/test_compute.py | 686 | def test_setting_explicit_cache_dir(self, tmp_path): | CODE |
| LOW | tests/test_graph.py | 19 | def test_transitive_reduction(): | CODE |
| LOW | tests/test_graph.py | 140 | def test_dfs_on_finish_depth_diamond_graph(self): | CODE |
| 9 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_graphIO.py | 501 | # Create the node's internal folder to ensure that Graph.update() will call | COMMENT |
| MEDIUM | tests/test_nodes.py | 721 | # Create the input scene | COMMENT |
| MEDIUM | tests/test_nodes.py | 729 | # Create the test scene | COMMENT |
| MEDIUM⚡ | tests/test_compute.py | 676 | # Create a temporary directory structure | COMMENT |
| MEDIUM⚡ | tests/test_compute.py | 688 | # Create a temporary directory structure | COMMENT |
| MEDIUM | tests/test_compute.py | 732 | # Create a temporary directory structure | COMMENT |
| MEDIUM | meshroom/ui/scene.py | 852 | # Create a CameraInit node if none exists | COMMENT |
| MEDIUM | meshroom/ui/app.py | 91 | # Create the main parser with a description | COMMENT |
| MEDIUM | meshroom/ui/commands.py | 853 | # Create the new attribute on the node | COMMENT |
| MEDIUM | meshroom/ui/commands.py | 902 | # Create a new command macro and push a command that disable graph updates | COMMENT |
| MEDIUM | meshroom/ui/components/edge.py | 119 | # Create a diagonal line to the other end of the rect | COMMENT |
| MEDIUM | meshroom/ui/components/scene3D.py | 80 | # Create a buffer filled with (0, 1, 0) default normals | COMMENT |
| MEDIUM | meshroom/ui/components/scene3D.py | 85 | # Create the normal attribute | COMMENT |
| MEDIUM | meshroom/ui/components/csvData.py | 71 | # Create the objects in dataList with the first line elements as objects' title | COMMENT |
| MEDIUM | meshroom/core/attribute.py | 1098 | # Create an empty list if the value is None | COMMENT |
| MEDIUM | meshroom/core/graph.py | 1778 | # Create the folder | COMMENT |
| MEDIUM | meshroom/core/submitter.py | 255 | # Create a task | COMMENT |
| MEDIUM⚡ | localfarm/localFarmClient.py | 102 | # Create the job | COMMENT |
| MEDIUM⚡ | localfarm/localFarmClient.py | 105 | # Create the tasks | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_compatibility.py | 237 | CODE | |
| LOW | meshroom/multiview.py | 115 | CODE | |
| LOW | meshroom/multiview.py | 98 | CODE | |
| LOW | meshroom/ui/graph.py | 218 | CODE | |
| LOW | meshroom/ui/graph.py | 811 | CODE | |
| LOW | meshroom/ui/graph.py | 846 | CODE | |
| LOW | meshroom/ui/graph.py | 894 | CODE | |
| LOW | meshroom/ui/graph.py | 1183 | CODE | |
| LOW | meshroom/ui/graph.py | 1302 | CODE | |
| LOW | meshroom/ui/graph.py | 1366 | CODE | |
| LOW | meshroom/ui/graph.py | 1463 | CODE | |
| LOW | meshroom/ui/scene.py | 130 | CODE | |
| LOW | meshroom/ui/scene.py | 442 | CODE | |
| LOW | meshroom/ui/scene.py | 688 | CODE | |
| LOW | meshroom/ui/scene.py | 989 | CODE | |
| LOW | meshroom/ui/utils.py | 131 | CODE | |
| LOW | meshroom/ui/app.py | 225 | CODE | |
| LOW | meshroom/ui/commands.py | 130 | CODE | |
| LOW | meshroom/ui/components/logLinesModel.py | 142 | CODE | |
| LOW | meshroom/ui/components/shapes/shapeFile.py | 150 | CODE | |
| LOW | meshroom/ui/components/shapes/shapeFile.py | 154 | CODE | |
| LOW | meshroom/submitters/localFarm/localFarmSubmitter.py | 80 | CODE | |
| LOW | meshroom/submitters/localFarm/localFarmSubmitter.py | 260 | CODE | |
| LOW | meshroom/core/plugins.py | 123 | CODE | |
| LOW | meshroom/core/plugins.py | 422 | CODE | |
| LOW | meshroom/core/attribute.py | 31 | CODE | |
| LOW | meshroom/core/attribute.py | 254 | CODE | |
| LOW | meshroom/core/attribute.py | 975 | CODE | |
| LOW | meshroom/core/attribute.py | 1521 | CODE | |
| LOW | meshroom/core/attribute.py | 1622 | CODE | |
| LOW | meshroom/core/cgroup.py | 7 | CODE | |
| LOW | meshroom/core/cgroup.py | 64 | CODE | |
| LOW | meshroom/core/graph.py | 1859 | CODE | |
| LOW | meshroom/core/graph.py | 1096 | CODE | |
| LOW | meshroom/core/graph.py | 1800 | CODE | |
| LOW | meshroom/core/__init__.py | 46 | CODE | |
| LOW | meshroom/core/__init__.py | 74 | CODE | |
| LOW | meshroom/core/__init__.py | 355 | CODE | |
| LOW | meshroom/core/__init__.py | 205 | CODE | |
| LOW | meshroom/core/taskManager.py | 91 | CODE | |
| LOW | meshroom/core/taskManager.py | 257 | CODE | |
| LOW | meshroom/core/taskManager.py | 273 | CODE | |
| LOW | meshroom/core/taskManager.py | 471 | CODE | |
| LOW | meshroom/core/test.py | 11 | CODE | |
| LOW | meshroom/core/stats.py | 330 | CODE | |
| LOW | meshroom/core/node.py | 468 | CODE | |
| LOW | meshroom/core/node.py | 1044 | CODE | |
| LOW | meshroom/core/node.py | 1204 | CODE | |
| LOW | meshroom/core/node.py | 1277 | CODE | |
| LOW | meshroom/core/node.py | 1897 | CODE | |
| LOW | meshroom/core/node.py | 2516 | CODE | |
| LOW | meshroom/core/node.py | 2569 | CODE | |
| LOW | meshroom/core/node.py | 2735 | CODE | |
| LOW | meshroom/core/node.py | 2867 | CODE | |
| LOW | meshroom/core/node.py | 1282 | CODE | |
| LOW | meshroom/core/submitter.py | 379 | CODE | |
| LOW | meshroom/core/desc/node.py | 425 | CODE | |
| LOW | meshroom/nodes/general/InputFile.py | 23 | CODE | |
| LOW | meshroom/common/PySignal.py | 33 | CODE | |
| LOW | localfarm/localFarmBackend.py | 298 | CODE | |
| 3 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 5 | CODE | |
| LOW | meshroom/ui/graph.py | 37 | CODE | |
| LOW | meshroom/ui/scene.py | 7 | CODE | |
| LOW | meshroom/ui/components/shapes/__init__.py | 1 | CODE | |
| LOW | meshroom/ui/components/shapes/__init__.py | 4 | CODE | |
| LOW | meshroom/core/plugins.py | 1 | CODE | |
| LOW | meshroom/core/attribute.py | 2 | CODE | |
| LOW | meshroom/core/attribute.py | 28 | CODE | |
| LOW | meshroom/core/graph.py | 20 | CODE | |
| LOW | meshroom/core/__init__.py | 25 | CODE | |
| LOW | meshroom/core/__init__.py | 15 | CODE | |
| LOW | meshroom/core/__init__.py | 16 | CODE | |
| LOW | meshroom/core/__init__.py | 17 | CODE | |
| LOW | meshroom/core/taskManager.py | 4 | CODE | |
| LOW | meshroom/core/node.py | 3 | CODE | |
| LOW | meshroom/core/node.py | 15 | CODE | |
| LOW | meshroom/core/submitter.py | 3 | CODE | |
| LOW | meshroom/core/desc/attribute.py | 8 | CODE | |
| LOW | meshroom/core/desc/validators.py | 4 | CODE | |
| LOW | meshroom/core/desc/validators.py | 5 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 1 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 1 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 1 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 1 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 1 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 1 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 1 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 1 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 1 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 1 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 1 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 1 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 1 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 16 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 16 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 16 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 21 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 21 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 21 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 21 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 21 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 21 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 29 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 32 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 32 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 32 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 32 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 32 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 32 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 40 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 40 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 40 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 40 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 40 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 40 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 40 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 40 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 40 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 40 | CODE | |
| LOW | meshroom/core/desc/__init__.py | 40 | CODE | |
| 4 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_compatibility.py | 224 | # Check if attributes are properly restored | COMMENT |
| LOW⚡ | tests/test_compatibility.py | 228 | # Check if internal folder | COMMENT |
| LOW | meshroom/ui/components/thumbnail.py | 110 | # Check if thumbnail directory exists | COMMENT |
| LOW | meshroom/ui/components/thumbnail.py | 127 | # Check if this is a regular file | COMMENT |
| LOW | meshroom/ui/components/thumbnail.py | 152 | # Check if number of thumbnails on disk exceeds limit | COMMENT |
| LOW | meshroom/ui/components/thumbnail.py | 244 | # Check if thumbnail already exists (and update its last modification time) | COMMENT |
| LOW | meshroom/ui/components/thumbnail.py | 279 | # Check if thumbnail already exists (it may have been created by another thread) | COMMENT |
| LOW | meshroom/core/stats.py | 269 | # Check if we exceeded max points and need to adjust interval | COMMENT |
| LOW | meshroom/core/nodeFactory.py | 43 | # Check if the given attribute is a AnySet instance or a child of a AnySet | COMMENT |
| LOW | meshroom/core/node.py | 2142 | # Check if at least one dependentNode is submitted or currently running | COMMENT |
| LOW | meshroom/core/submitter.py | 320 | # Check if task has already been created | COMMENT |
| LOW | meshroom/core/desc/node.py | 510 | if process.is_running(): # Check if process is still alive | CODE |
| LOW | meshroom/common/PySignal.py | 96 | # Check if it is an instance method and store it with the instance as the key | COMMENT |
| LOW | localfarm/localFarmBackend.py | 316 | # Check if process finished | COMMENT |
| LOW | localfarm/localFarmBackend.py | 321 | # Check if job is complete | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 28 | CODE | |
| LOW | meshroom/ui/scene.py | 643 | CODE | |
| LOW | meshroom/core/desc/attribute.py | 234 | CODE | |
| LOW | meshroom/core/desc/attribute.py | 320 | CODE | |
| LOW | meshroom/core/desc/attribute.py | 476 | CODE | |
| LOW | meshroom/core/desc/attribute.py | 510 | CODE | |
| LOW | meshroom/core/desc/attribute.py | 545 | CODE | |
| LOW | meshroom/core/desc/attribute.py | 584 | CODE | |
| LOW | meshroom/core/desc/attribute.py | 621 | CODE | |
| LOW | meshroom/core/desc/attribute.py | 677 | CODE | |
| LOW | meshroom/core/desc/attribute.py | 765 | CODE | |
| LOW | meshroom/core/desc/attribute.py | 798 | CODE | |
| LOW | meshroom/core/desc/anySet.py | 7 | CODE | |
| LOW | meshroom/core/desc/shapeAttribute.py | 68 | CODE | |
| LOW | meshroom/core/desc/shapeAttribute.py | 103 | CODE | |
| LOW | meshroom/core/desc/shapeAttribute.py | 138 | CODE | |
| LOW | meshroom/core/desc/shapeAttribute.py | 175 | CODE | |
| LOW | meshroom/core/desc/geometryAttribute.py | 9 | CODE | |
| LOW | meshroom/core/desc/geometryAttribute.py | 41 | CODE | |
| LOW | meshroom/core/desc/geometryAttribute.py | 80 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | meshroom/ui/utils.py | 201 | Shortcut function to create a Qt Property with generic getter and setter. Getter returns the underlying attrib | STRING |
| HIGH | meshroom/core/graph.py | 1826 | Load a Graph from a Meshroom Graph (.mg) file. Args: filepath: The path to the Meshroom Graph file. | STRING |
| HIGH | meshroom/core/nodeFactory.py | 217 | Check that attribute names in 'attributesDict' match the expected description, where 'requiredDescAttri | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | meshroom/core/desc/attribute.py | 0 | return the correct attribute instance corresponding to the description. | STRING |
| HIGH | meshroom/core/desc/shapeAttribute.py | 0 | return the correct attribute instance corresponding to the description. | STRING |
| HIGH | meshroom/core/desc/geometryAttribute.py | 0 | return the correct attribute instance corresponding to the description. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/source/_ext/fetch_md.py | 1 | # Sphinx extension defining the fetch_md directive | COMMENT |
| LOW | docs/source/_ext/meshroom_doc.py | 1 | # Sphinx extension defining the meshroom_doc directive | COMMENT |
| LOW | .github/workflows/nightly.yml | 41 | BUILD_LABEL="$(date -u '+%Y.%m.%d')-${SHORT_SHA}" | COMMENT |
| LOW | meshroom/core/stats.py | 201 | data = proc.as_dict(self.dynamicKeys) | COMMENT |
| LOW | meshroom/core/desc/attribute.py | 201 | # The default value of the attribute's descriptor is None, so it is not an input value, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/source/_ext/fetch_md.py | 6 | # Usage: | COMMENT |
| LOW | docs/source/_ext/meshroom_doc.py | 6 | # Usage: | COMMENT |
| LOW | meshroom/core/evaluation.py | 10 | # Example usage | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | meshroom/env.py | 5 | __all__ = [ | CODE |
| LOW | meshroom/ui/app.py | 480 | def _updateRecentProjectFilesThumbnails(self) -> None: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | meshroom/ui/commands.py | 73 | self.setLockedRedo(False) # make sure to unlock the redo action | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | meshroom/core/submitter.py | 324 | # If task is already created simply create the connection | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | meshroom/core/node.py | 536 | return "placeholder" | CODE |