A declarative framework for building efficient UIs on Android.
This report summarizes scanner evidence for facebook/litho, a Kotlin project with 7,801 GitHub stars. SynthScan examined 542,402 lines of code across 3058 source files, recording 177 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 1.0 (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.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 111 finding(s).
Are imports declared and package/API names verified? 30 finding(s).
Are wrappers, guards, and repeated structures necessary? 36 finding(s).
Which changes need focused human review? 177 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 177 distinct pattern matches across 8 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 |
|---|---|---|---|---|
| CRITICAL | …-plugin/src/main/resources/methodTemplates/methods.xml | 52 | <OnCreateChildren method="@com.facebook.litho.sections.annotations.OnCreateChildren static com.facebook.litho.sections | CODE |
| CRITICAL | …/specmodels/processor/AbstractComponentsProcessor.java | 129 | com.facebook.litho.specmodels.processor.ProcessorUtils.getPackageName( | CODE |
| CRITICAL | …c/main/java/com/facebook/litho/FlexboxLegacyAliases.kt | 25 | * `com.facebook.litho.layout.flexbox.Row(...) { ... }` function, any file that also constructs the | COMMENT |
| CRITICAL | …c/main/java/com/facebook/litho/FlexboxLegacyAliases.kt | 36 | "Migration scaffold. Use com.facebook.litho.layout.flexbox.Row(...) for new construction. " + | CODE |
| CRITICAL | …c/main/java/com/facebook/litho/FlexboxLegacyAliases.kt | 47 | "Migration scaffold. Use com.facebook.litho.layout.flexbox.Column(...) for new construction. " + | CODE |
| CRITICAL | …in/java/com/facebook/samples/litho/errors/ListRow.java | 32 | return com.facebook.samples.litho.java.errors.ErrorBoundary.create(c) | CODE |
| CRITICAL | …in/java/com/facebook/samples/litho/errors/ListRow.java | 33 | .child(com.facebook.samples.litho.java.errors.ListRowComponent.create(c).row(this).build()) | CODE |
| CRITICAL | litho-it/src/test/resources/processor/TestLayout.java | 911 | if (!com.facebook.rendercore.utils.EquivalenceUtils.equals( | CODE |
| CRITICAL | litho-it/src/test/resources/processor/TestMount.java | 996 | if (!com.facebook.rendercore.utils.EquivalenceUtils.equals( | CODE |
| CRITICAL | …est/resources/processor/sections/FullGroupSection.java | 642 | if (!com.facebook.rendercore.utils.EquivalenceUtils.equals( | CODE |
| CRITICAL | …m/facebook/litho/StateUpdatesWithReconciliationTest.kt | 277 | com.facebook.litho.widget.LayoutSpecLifecycleTester.create(context) | CODE |
| CRITICAL | …m/facebook/litho/StateUpdatesWithReconciliationTest.kt | 319 | com.facebook.litho.widget.LayoutSpecLifecycleTester.create(context) | CODE |
| CRITICAL | …c/test/com/facebook/litho/NestedLithoTreeParityTest.kt | 457 | return com.facebook.litho.widget.Text.create(cc) | CODE |
| CRITICAL⚡ | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 1358 | com.facebook.litho.stats.LithoStats.resetAllCounters() | CODE |
| CRITICAL⚡ | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 1362 | assertThat(com.facebook.litho.stats.LithoStats.customLayoutFunctionRunCount.get()) | CODE |
| CRITICAL⚡ | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 1365 | assertThat(com.facebook.litho.stats.LithoStats.customLayoutChildLayoutCount.get()) | CODE |
| CRITICAL | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 1393 | com.facebook.litho.stats.LithoStats.resetAllCounters() | CODE |
| CRITICAL | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 1402 | assertThat(com.facebook.litho.stats.LithoStats.customLayoutFunctionRunCount.get()) | CODE |
| CRITICAL | …rc/test/com/facebook/litho/LithoYogaLayoutCacheTest.kt | 618 | com.facebook.litho.state.DirtyScopeIndex.of(scopesToUpdate), | CODE |
| CRITICAL | …ho-it/src/test/com/facebook/litho/LithoTestRuleTest.kt | 282 | child(com.facebook.litho.widget.Text.create(context).text(treeProp.name).build()) | CODE |
| CRITICAL | …est/com/facebook/litho/utils/StacktraceHelperTest.java | 41 | "at com.facebook.litho.utils.StacktraceHelperTest.testFormatStackTrace(StacktraceHelperTest.java:"); | CODE |
| CRITICAL | …s/processor/DiffSectionSpecModelFactoryTestHelper.java | 30 | .isEqualTo("@com.facebook.litho.sections.annotations.OnDiff()"); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 89 | // ─────────────────────────────────────────────── measuring more than once | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 122 | // ─────────────────────────────────────────────── a child's own box | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 164 | // ─────────────────────────────────────────────── place() on Placeable | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 190 | // ─────────────────────────────────────────────── placeRelative | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 265 | // ─────────────────────────────────────────────── padding and border | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 533 | // ─────────────────────────────────────────────── measurement is a commitment | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 581 | // ─────────────────────────────────────────────── container intrinsics | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 762 | // ─────────────────────────────────────────────── how often a layout function runs | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 1093 | // ─────────────────────────────────────────────── the layout cache | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 1162 | // ─────────────────────────────────────────────── dp inside a layout function | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 1164 | // ─────────────────────────────────────────────── arity | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 1182 | // ─────────────────────────────────────────────── a child that is measured but not placed | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 1522 | // ─────────────────────────────────────────────── paint order | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 1554 | // ─────────────────────────────────────────────── helpers | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 1668 | // ─────────────────────────────────────────────── what every scope reads | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 1698 | // ─────────────────────────────────────────────── intrinsic defaults | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 1771 | // ─────────────────────────────────────────────── placement re-enters layout | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 1926 | // ─────────────────────────────────────────────── view flattening | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 1980 | // ─────────────────────────────────────────────── padding | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 2007 | // ─────────────────────────────────────────────── threads | COMMENT |
| MEDIUM | …-it/src/test/com/facebook/litho/CustomLayoutApiTest.kt | 2048 | // ─────────────────────────────────────────────── errors | COMMENT |
| MEDIUM⚡ | …t/com/facebook/litho/MountStateIncrementalMountTest.kt | 120 | // ┌─────────────┬────────┐ | COMMENT |
| MEDIUM⚡ | …t/com/facebook/litho/MountStateIncrementalMountTest.kt | 122 | // ├─────────────┘ │ | COMMENT |
| MEDIUM⚡ | …t/com/facebook/litho/MountStateIncrementalMountTest.kt | 123 | // │ ┌────────────┬─────┐ │ | COMMENT |
| MEDIUM⚡ | …t/com/facebook/litho/MountStateIncrementalMountTest.kt | 125 | // │ ├────────────┘ │ │ | COMMENT |
| MEDIUM⚡ | …t/com/facebook/litho/MountStateIncrementalMountTest.kt | 127 | // │ └──────────────────┘ │ | COMMENT |
| MEDIUM⚡ | …t/com/facebook/litho/MountStateIncrementalMountTest.kt | 128 | // └──────────────────────┘ | COMMENT |
| MEDIUM⚡ | …t/com/facebook/litho/MountStateIncrementalMountTest.kt | 129 | // ┌────────────┬─────┐ | COMMENT |
| MEDIUM⚡ | …t/com/facebook/litho/MountStateIncrementalMountTest.kt | 131 | // ├────────────┘ │ | COMMENT |
| MEDIUM⚡ | …t/com/facebook/litho/MountStateIncrementalMountTest.kt | 133 | // └──────────────────┘ | COMMENT |
| MEDIUM⚡ | …t/com/facebook/litho/MountStateIncrementalMountTest.kt | 134 | // ┌────────────┬─────┐ | COMMENT |
| MEDIUM⚡ | …t/com/facebook/litho/MountStateIncrementalMountTest.kt | 136 | // ├────────────┘ │ | COMMENT |
| MEDIUM⚡ | …t/com/facebook/litho/MountStateIncrementalMountTest.kt | 138 | // └──────────────────┘ | COMMENT |
| MEDIUM | …t/com/facebook/litho/CustomLayoutBoxConstraintsTest.kt | 258 | // ─────────────────────────────────────────────── against Yoga | COMMENT |
| MEDIUM | …c/test/com/facebook/litho/layout/BoxConstraintsTest.kt | 551 | // ───────────────────────── properties every child meets, over generated children and constraints | COMMENT |
| MEDIUM | …c/test/com/facebook/litho/layout/BoxConstraintsTest.kt | 620 | // ───────────────────────── relationships between two resolutions | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …ho-it/src/test/com/facebook/litho/LithoRendererTest.kt | 263 | // Step 1: Create layout state V1 without a view | COMMENT |
| LOW⚡ | …ho-it/src/test/com/facebook/litho/LithoRendererTest.kt | 267 | // Step 2: Bind a view | COMMENT |
| LOW⚡ | …ho-it/src/test/com/facebook/litho/LithoRendererTest.kt | 271 | // Step 3: Create newer layout state V2 with view bound | COMMENT |
| LOW⚡ | …ho-it/src/test/com/facebook/litho/LithoRendererTest.kt | 281 | // Step 4: Try to rebind with old layout state using reflection | COMMENT |
| LOW⚡ | litho-it/src/test/com/facebook/litho/TreeStateTests.kt | 534 | // Step 1: prior render committed hookKey1 = "value1". | COMMENT |
| LOW⚡ | litho-it/src/test/com/facebook/litho/TreeStateTests.kt | 544 | // Step 2: InitialState was drained after the prior commit (post-commit unregister). | COMMENT |
| LOW⚡ | litho-it/src/test/com/facebook/litho/TreeStateTests.kt | 547 | // Step 3: a new resolve encounters hookKey2 for the first time. Replicates the | COMMENT |
| LOW | litho-it/src/test/com/facebook/litho/TreeStateTests.kt | 567 | // Step 4: both entries must be present. | COMMENT |
| LOW | …tho-it/src/test/com/facebook/litho/SplitFuturesTest.kt | 996 | // Step 1: R1 and L1 committed in render(). | COMMENT |
| LOW⚡ | …tho-it/src/test/com/facebook/litho/SplitFuturesTest.kt | 1022 | // Step 2: R2 resolves and commits on the layout thread, then L2 is held before it runs. | COMMENT |
| LOW⚡ | …tho-it/src/test/com/facebook/litho/SplitFuturesTest.kt | 1027 | // Step 3: R3 and L3 commit on this thread while L2 is held. The update is sync so that R3 | COMMENT |
| LOW⚡ | …tho-it/src/test/com/facebook/litho/SplitFuturesTest.kt | 1032 | // Step 4: L2 finishes against R2, which is no longer the committed resolve, and is dropped. | COMMENT |
| LOW | …tho-it/src/test/com/facebook/litho/SplitFuturesTest.kt | 1070 | // Step 1: R1 and L1 committed in render(). | COMMENT |
| LOW | …tho-it/src/test/com/facebook/litho/SplitFuturesTest.kt | 1107 | // Step 2: R2 resolves and commits on the layout thread, then L2 is held before it runs. | COMMENT |
| LOW | …tho-it/src/test/com/facebook/litho/SplitFuturesTest.kt | 1155 | // Step 1: R1 and L1 committed in render(). | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 128 | // Step 1: Bind to View A | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 131 | // Step 2: Bind to View B (simulates change animation) | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 141 | // Step 3: Recycle View A (animation completed) | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 148 | // Step 4: Now recycle View B (current view) - should work normally | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 196 | // Step 1: Bind View A | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 199 | // Step 2: Recycle View A (should set currentBoundView = null internally) | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 206 | // Step 3: Rebind to same View A - should behave like first binding (no cleanup) | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 269 | // Step 1: Bind to View A | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 272 | // Step 2: Bind to View B (View A cleaned here) | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 278 | // Step 3: Bind to View C (View B cleaned here) | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 290 | // Step 4: Recycle View A and B (should be no-ops) | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 298 | // Step 5: Now recycle View C (current view) - should work normally | COMMENT |
| LOW⚡ | …in/com/meta/rangemanager/SynchronousRangeWorkerTest.kt | 192 | // Step 1: Schedule range 0-4, completes successfully | COMMENT |
| LOW⚡ | …in/com/meta/rangemanager/SynchronousRangeWorkerTest.kt | 201 | // Step 2: Schedule range 8-12, but CANCEL at item 10 | COMMENT |
| LOW | …in/com/meta/rangemanager/SynchronousRangeWorkerTest.kt | 224 | // Step 3: Schedule range 0-4 again | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …ho-it/src/test/com/facebook/litho/LithoRendererTest.kt | 263 | // Step 1: Create layout state V1 without a view | COMMENT |
| LOW⚡ | …ho-it/src/test/com/facebook/litho/LithoRendererTest.kt | 267 | // Step 2: Bind a view | COMMENT |
| LOW⚡ | …ho-it/src/test/com/facebook/litho/LithoRendererTest.kt | 271 | // Step 3: Create newer layout state V2 with view bound | COMMENT |
| LOW⚡ | …ho-it/src/test/com/facebook/litho/LithoRendererTest.kt | 281 | // Step 4: Try to rebind with old layout state using reflection | COMMENT |
| LOW⚡ | litho-it/src/test/com/facebook/litho/TreeStateTests.kt | 534 | // Step 1: prior render committed hookKey1 = "value1". | COMMENT |
| LOW⚡ | litho-it/src/test/com/facebook/litho/TreeStateTests.kt | 544 | // Step 2: InitialState was drained after the prior commit (post-commit unregister). | COMMENT |
| LOW⚡ | litho-it/src/test/com/facebook/litho/TreeStateTests.kt | 547 | // Step 3: a new resolve encounters hookKey2 for the first time. Replicates the | COMMENT |
| LOW | litho-it/src/test/com/facebook/litho/TreeStateTests.kt | 567 | // Step 4: both entries must be present. | COMMENT |
| LOW | …tho-it/src/test/com/facebook/litho/SplitFuturesTest.kt | 996 | // Step 1: R1 and L1 committed in render(). | COMMENT |
| LOW⚡ | …tho-it/src/test/com/facebook/litho/SplitFuturesTest.kt | 1022 | // Step 2: R2 resolves and commits on the layout thread, then L2 is held before it runs. | COMMENT |
| LOW⚡ | …tho-it/src/test/com/facebook/litho/SplitFuturesTest.kt | 1027 | // Step 3: R3 and L3 commit on this thread while L2 is held. The update is sync so that R3 | COMMENT |
| LOW⚡ | …tho-it/src/test/com/facebook/litho/SplitFuturesTest.kt | 1032 | // Step 4: L2 finishes against R2, which is no longer the committed resolve, and is dropped. | COMMENT |
| LOW | …tho-it/src/test/com/facebook/litho/SplitFuturesTest.kt | 1070 | // Step 1: R1 and L1 committed in render(). | COMMENT |
| LOW | …tho-it/src/test/com/facebook/litho/SplitFuturesTest.kt | 1107 | // Step 2: R2 resolves and commits on the layout thread, then L2 is held before it runs. | COMMENT |
| LOW | …tho-it/src/test/com/facebook/litho/SplitFuturesTest.kt | 1155 | // Step 1: R1 and L1 committed in render(). | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 128 | // Step 1: Bind to View A | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 131 | // Step 2: Bind to View B (simulates change animation) | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 141 | // Step 3: Recycle View A (animation completed) | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 148 | // Step 4: Now recycle View B (current view) - should work normally | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 196 | // Step 1: Bind View A | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 199 | // Step 2: Recycle View A (should set currentBoundView = null internally) | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 206 | // Step 3: Rebind to same View A - should behave like first binding (no cleanup) | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 269 | // Step 1: Bind to View A | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 272 | // Step 2: Bind to View B (View A cleaned here) | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 278 | // Step 3: Bind to View C (View B cleaned here) | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 290 | // Step 4: Recycle View A and B (should be no-ops) | COMMENT |
| LOW⚡ | …get/collection/LithoCollectionItemViewRecyclingTest.kt | 298 | // Step 5: Now recycle View C (current view) - should work normally | COMMENT |
| LOW⚡ | …in/com/meta/rangemanager/SynchronousRangeWorkerTest.kt | 192 | // Step 1: Schedule range 0-4, completes successfully | COMMENT |
| LOW⚡ | …in/com/meta/rangemanager/SynchronousRangeWorkerTest.kt | 201 | // Step 2: Schedule range 8-12, but CANCEL at item 10 | COMMENT |
| LOW | …in/com/meta/rangemanager/SynchronousRangeWorkerTest.kt | 224 | // Step 3: Schedule range 0-4 again | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …m/facebook/rendercore/text/selection/RCTextEditor.java | 901 | // Ported from AOSP TextUtils.packRangeInLong() — packs two int offsets into a single long. | COMMENT |
| LOW | litho-intellij-plugin/buildPlugin.sh | 1 | #!/bin/bash | COMMENT |
| LOW | litho-intellij-plugin/testPlugin.sh | 1 | #!/bin/bash | COMMENT |
| LOW | …itho/intellij/actions/templates/LithoTemplateAction.kt | 81 | COMMENT | |
| LOW | …-core/src/main/java/com/facebook/litho/LithoReducer.kt | 1321 | // unreachable from user `Transition.create(<key>)` DSL — TransitionManager skips them on | COMMENT |
| LOW | …tho-core/src/main/java/com/facebook/litho/LithoNode.kt | 1481 | COMMENT | |
| LOW | litho-core/src/main/java/com/facebook/litho/Edges.kt | 61 | edgesToValuesIndex = edgesToValuesIndex or (newIndex.toLong() shl edgeIntValue * 4) | COMMENT |
| LOW | …re/src/main/java/com/facebook/litho/SubtreeSnapshot.kt | 61 | // All five arrays have length [childCount]. [childRangeStart] partitions `mountableOutputs` | COMMENT |
| LOW | …re/src/main/java/com/facebook/litho/SubtreeSnapshot.kt | 81 | val externalParentAbsoluteY: Int = 0, | COMMENT |
| LOW | …re/src/main/java/com/facebook/litho/NestedLithoTree.kt | 61 | // 1. Resolve: component P created → InitialState caches valueA for keyP | COMMENT |
| LOW | …re/src/main/java/com/facebook/litho/TestLayoutState.kt | 101 | } | COMMENT |
| LOW | …/main/java/com/facebook/litho/widget/RecyclerBinder.kt | 1281 | COMMENT | |
| LOW | …a/com/facebook/litho/widget/StaggeredGridLayoutInfo.kt | 321 | COMMENT | |
| LOW | …/src/test/com/facebook/litho/SubtreeCacheParityTest.kt | 221 | // transitionKey / etc.) on a wrapper marks that wrapper's scope dirty; `getReconciliationMode` | COMMENT |
| LOW | …/src/test/com/facebook/litho/SubtreeCacheParityTest.kt | 541 | // External-parent-change rejection scenarios are covered higher in the file (position-shift | COMMENT |
| LOW | …/src/test/com/facebook/litho/SubtreeCacheParityTest.kt | 1721 | // render trees (e.g. Lazy collections, HSCROLL). A missing id means MountState skips | COMMENT |
| LOW | …rc/test/com/facebook/litho/LayoutStateCalculateTest.kt | 401 | // Mountable Output Breakdown: | COMMENT |
| LOW | litho-it/src/test/com/facebook/litho/TreeStateTests.kt | 501 | // Cycle 3: NEW component at position P — cache returns stale valueA | COMMENT |
| LOW | …t/com/facebook/litho/MountStateIncrementalMountTest.kt | 121 | // │Visible Rect │ │ | COMMENT |
| LOW | …tho/widget/collection/CollectionLayoutFunctionsTest.kt | 441 | COMMENT | |
| LOW | …tho/widget/collection/CollectionLayoutFunctionsTest.kt | 481 | assertThat(result.height).isEqualTo(400) | COMMENT |
| LOW | …tho/widget/collection/CollectionLayoutFunctionsTest.kt | 641 | assertThat(result.width).isEqualTo(400) | COMMENT |
| LOW | …om/facebook/litho/state/StateReadTrackingUpdateTest.kt | 41 | val lithoTestRule = | COMMENT |
| LOW | scripts/local-deploy.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/codemod-state-update-methods.sh | 1 | #!/bin/bash | COMMENT |
| LOW | scripts/android-setup.sh | 1 | #!/usr/bin/bash | COMMENT |
| LOW | .github/workflows/release.yml | 1 | # Copyright (c) Meta Platforms, Inc. and affiliates. | COMMENT |
| LOW | lib/yoga/yoga/YGMacros.h | 1 | /* | COMMENT |
| LOW | lib/yoga/yoga/YGMacros.h | 21 | COMMENT | |
| LOW | lib/yoga/yoga/YGMacros.h | 41 | #if __has_include(<Foundation/Foundation.h>) | COMMENT |
| LOW | lib/yoga/yoga/style/Style.h | 21 | #include <yoga/enums/Direction.h> | COMMENT |
| LOW | lib/yoga/yoga/algorithm/FlexLine.h | 41 | // List of children which are part of the line flow. This means they are not | COMMENT |
| LOW | lib/yoga/yoga/algorithm/CalculateLayout.cpp | 1 | /* | COMMENT |
| LOW | lib/yoga/yoga/algorithm/CalculateLayout.cpp | 21 | #include <yoga/algorithm/BoundAxis.h> | COMMENT |
| LOW | lib/yoga/yoga/algorithm/CalculateLayout.cpp | 821 | (child->getLayout().computedFlexBasis.unwrap() + | COMMENT |
| LOW | lib/yoga/yoga/algorithm/CalculateLayout.cpp | 841 | // respond with longest-word width; image/collection-like measures | COMMENT |
| LOW | lib/yoga/yoga/algorithm/CalculateLayout.cpp | 1401 | // By excluding this item's size and flex factor from remaining, this | COMMENT |
| LOW | lib/yoga/yoga/algorithm/CalculateLayout.cpp | 1421 | // remaining space amongst the items whose min/max constraints didn't trigger in | COMMENT |
| LOW | lib/yoga/yoga/algorithm/CalculateLayout.cpp | 1701 | } | COMMENT |
| LOW | lib/yoga/yoga/algorithm/CalculateLayout.cpp | 1721 | // | COMMENT |
| LOW | lib/yoga/yoga/algorithm/CalculateLayout.cpp | 1741 | // - heightSizingMode: indicates the sizing rules for the height (see below | COMMENT |
| LOW | lib/yoga/yoga/algorithm/PixelGrid.cpp | 21 | const double pointScaleFactor, | COMMENT |
| LOW | lib/yoga/yoga/algorithm/PixelGrid.cpp | 41 | // - x = -2.2: floor(-2.2) = -3, ceil(-2.2) = -2 | COMMENT |
| LOW | lib/yoga/yoga/algorithm/FlexLine.cpp | 81 | COMMENT | |
| LOW | lib/yoga/yoga/node/LayoutResults.h | 21 | COMMENT | |
| LOW | lib/yoga/java/jni/YGJNIVanilla.cpp | 1 | /* | COMMENT |
| LOW | …in/compiler/src/test/resources/test-data/Hooks.good.kt | 1 | // @nolint | COMMENT |
| LOW | …mpiler/src/test/resources/test-data/AutoDeps.misuse.kt | 1 | // @nolint | COMMENT |
| LOW | …main/kotlin/com/facebook/litho/surface/LithoSurface.kt | 41 | // Fragment.bindLithoViewTo(view) // caller-built LithoView | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …n/java/com/facebook/litho/annotations/PropDefault.java | 33 | * static final String name = "John Doe"; // default value for name | COMMENT |
| LOW | …st/com/facebook/litho/widget/TextCustomEllipsisTest.kt | 239 | "Text that extends over many lines like lorem ipsum dolor so I'll just keep typing for a " + | CODE |
| LOW | …t/com/facebook/litho/widget/TextTruncationCacheTest.kt | 318 | "Text that extends over many lines like lorem ipsum dolor so I'll just keep typing for a " + | CODE |
| LOW | …t/com/facebook/litho/widget/TextPrimitiveParityTest.kt | 253 | "Text that extends over many lines like lorem ipsum dolor so I'll just keep typing for a " + | CODE |
| LOW | …itho/documentation/props/PropDefaultComponentSpec.java | 31 | @PropDefault static final String name = "John Doe"; // default value for name | CODE |
| LOW | …les/litho/documentation/props/PropDefaultKComponent.kt | 25 | class PropDefaultKComponent(private val name: String = "John Doe") : KComponent() { | CODE |
| LOW | …ok/samples/litho/kotlin/animations/messages/Message.kt | 65 | Message(false, "qui dolorem ipsum quia dolor sit amet", true, "DEC 25 AT 10:01"), | CODE |
| LOW | …ok/samples/litho/kotlin/animations/messages/Message.kt | 65 | Message(false, "qui dolorem ipsum quia dolor sit amet", true, "DEC 25 AT 10:01"), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/java/com/facebook/litho/testing/TimeOutSemaphore.java | 25 | * Semaphore wrapper that automatically times out in 5 seconds so that we don't forget to do it and | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/src/main/kotlin/com/meta/rangemanager/RangeManager.kt | 131 | * ## Why not just call [recalculateRange]? | COMMENT |