Flagsmith is an open-source feature flag platform with remote config, experimentation, and self-hosted or cloud deployment options.
This report summarizes scanner evidence for Flagsmith/flagsmith, a Python project with 6,592 GitHub stars. SynthScan examined 471,970 lines of code across 3184 source files, recording 4478 pattern matches distributed across 21 syntactic categories. The legacy adjusted pattern signal is 10.1 (Moderate 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? 3893 finding(s).
Are imports declared and package/API names verified? 434 finding(s).
Are wrappers, guards, and repeated structures necessary? 3928 finding(s).
Which changes need focused human review? 4478 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 4478 distinct pattern matches across 21 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 | frontend/web/components/modals/base/Modal.tsx | 80 | function getOrCreateRoot( | CODE |
| LOW | …end/web/components/pages/CreateReleasePipelinePage.tsx | 3 | export default function CreateReleasePipelinePage() { | CODE |
| LOW | …end/web/components/pages/ReleasePipelineDetailPage.tsx | 3 | export default function ReleasePipelineDetailPage() { | CODE |
| LOW | …trust-relationships/hooks/useTrustRelationshipRoles.ts | 87 | export default function useTrustRelationshipRoles( | CODE |
| LOW | …ponents/pages/onboarding/hooks/createOnboardingFlag.ts | 22 | export async function ensureOnboardingVariation( | CODE |
| LOW | frontend/.claude/scripts/sync-types-helper.py | 55 | def find_types_using_serializer( | CODE |
| LOW | frontend/common/utils/filterProjectFlagClientSide.ts | 13 | export function matchesProjectFlagFilters( | CODE |
| LOW | frontend/common/utils/metadataValidation.ts | 10 | export function getGlobalMetadataValidationState( | CODE |
| LOW | frontend/common/utils/metadataValidation.ts | 25 | export function useGlobalMetadataValidation( | CODE |
| LOW | frontend/common/hooks/useFeatureExperimentFreeze.ts | 12 | export function useFeatureExperimentFreeze( | CODE |
| LOW | frontend/common/services/useVersionFeatureState.ts | 81 | export async function createVersionFeatureState( | CODE |
| LOW | frontend/common/services/useVersionFeatureState.ts | 95 | export async function updateVersionFeatureState( | CODE |
| LOW | frontend/common/services/useVersionFeatureState.ts | 109 | export async function deleteVersionFeatureState( | CODE |
| LOW | frontend/common/services/useRolePermission.ts | 105 | export async function getRoleOrganisationPermissions( | CODE |
| LOW | frontend/common/services/useRolePermission.ts | 140 | export async function getRoleProjectPermissions( | CODE |
| LOW | frontend/common/services/useRolePermission.ts | 155 | export async function getRoleEnvironmentPermissions( | CODE |
| LOW | frontend/common/services/useFlagsmithProjectImport.ts | 31 | export async function createFlagsmithProjectImport( | CODE |
| LOW | …tend/common/services/useEnvironmentOnboardingStatus.ts | 26 | export async function getEnvironmentOnboardingStatus( | CODE |
| LOW | …common/services/useMasterAPIKeyWithMasterAPIKeyRole.ts | 58 | export async function getMasterAPIKeyWithMasterAPIKeyRoles( | CODE |
| LOW | …common/services/useMasterAPIKeyWithMasterAPIKeyRole.ts | 73 | export async function getRolesMasterAPIKeyWithMasterAPIKeyRoles( | CODE |
| LOW | …common/services/useMasterAPIKeyWithMasterAPIKeyRole.ts | 88 | export async function deleteMasterAPIKeyWithMasterAPIKeyRoles( | CODE |
| LOW | …common/services/useMasterAPIKeyWithMasterAPIKeyRole.ts | 102 | export async function updateMasterAPIKeyWithMasterAPIKeyRoles( | CODE |
| LOW | frontend/common/services/useRolesUser.ts | 43 | export async function createPermissionRolesUsers( | CODE |
| LOW | frontend/common/services/useRolesUser.ts | 57 | export async function deletePermissionRolesUsers( | CODE |
| LOW | frontend/common/services/useServersideEnvironmentKey.ts | 44 | export async function createServersideEnvironmentKeys( | CODE |
| LOW | frontend/common/services/useServersideEnvironmentKey.ts | 58 | export async function deleteServersideEnvironmentKeys( | CODE |
| LOW | frontend/common/services/useServersideEnvironmentKey.ts | 72 | export async function getServersideEnvironmentKeys( | CODE |
| LOW | frontend/common/services/useReleasePipelines.ts | 169 | export async function removeFeatureFromReleasePipeline( | CODE |
| LOW | frontend/common/services/useFeatureVersion.ts | 320 | export async function createAndSetFeatureVersion( | CODE |
| LOW | frontend/common/services/useOnboardingSupportOptIn.ts | 24 | export async function createOnboardingSupportOptIn( | CODE |
| LOW | frontend/common/services/useMetadataField.ts | 276 | export async function getProjectMetadataFieldList( | CODE |
| LOW | frontend/common/services/useSamlConfiguration.ts | 147 | export async function getSamlConfigurationMetadata( | CODE |
| LOW | …ontend/common/services/useLaunchDarklyProjectImport.ts | 42 | export async function createLaunchDarklyProjectImport( | CODE |
| LOW | …ontend/common/services/useLaunchDarklyProjectImport.ts | 56 | export async function getLaunchDarklyProjectImport( | CODE |
| LOW | …ontend/common/services/useLaunchDarklyProjectImport.ts | 70 | export async function getLaunchDarklyProjectsImport( | CODE |
| LOW | frontend/common/services/useMetadataModelField.ts | 108 | export async function getMetadataModelFieldList( | CODE |
| LOW | frontend/common/services/useProjectChangeRequest.ts | 9 | export function stripIdsAndDeletedFromRulesAndConditions( | CODE |
| LOW | frontend/common/services/useProjectChangeRequest.ts | 140 | export async function createProjectChangeRequest( | CODE |
| LOW | frontend/common/services/useProjectChangeRequest.ts | 155 | export async function updateProjectChangeRequest( | CODE |
| LOW | frontend/common/services/useIdentityFeatureState.ts | 44 | export async function getIdentityFeatureStateAll( | CODE |
| LOW | frontend/common/services/useIdentityFeatureState.ts | 59 | export async function createIdentityFeatureStates( | CODE |
| LOW | frontend/common/services/useOrganisationLicensing.ts | 28 | export async function uploadOrganisationLicence( | CODE |
| LOW | frontend/common/services/useSamlAttributeMapping.ts | 54 | export async function createSamlAttributeMapping( | CODE |
| LOW | frontend/common/services/useSamlAttributeMapping.ts | 68 | export async function deleteSamlAttributeMapping( | CODE |
| LOW | frontend/common/services/useSamlAttributeMapping.ts | 96 | export async function updateSamlAttributeMapping( | CODE |
| LOW | frontend/common/services/useRolePermissionGroup.ts | 60 | export async function createRolePermissionGroup( | CODE |
| LOW | frontend/common/services/useRolePermissionGroup.ts | 77 | export async function deleteRolePermissionGroup( | CODE |
| LOW | frontend/common/services/useRolePermissionGroup.ts | 111 | export async function updateRolePermissionGroup( | CODE |
| LOW | frontend/e2e/helpers/visual-regression.ts | 63 | export function isVisualRegressionEnabled(): boolean { | CODE |
| LOW | mcp/tests/unit/test_event_logging.py | 7 | def test_get_client_info__outside_request_context__returns_none() -> None: | CODE |
| LOW | mcp/tests/unit/test_event_logging.py | 13 | def test_get_client_info__no_client_params__returns_none( | CODE |
| LOW | mcp/tests/unit/test_event_logging.py | 24 | async def test_event_logging_middleware__no_client_info__empty_client_identity( | CODE |
| LOW | mcp/tests/unit/test_auth.py | 8 | def test_flagsmith_auth__header_in_http_request__forwards_to_upstream() -> None: | CODE |
| LOW | mcp/tests/unit/test_auth.py | 24 | def test_flagsmith_auth__no_http_request__leaves_upstream_unchanged() -> None: | CODE |
| LOW | mcp/tests/unit/test_auth.py | 35 | def test_flagsmith_auth__static_token_no_http_request__uses_api_key() -> None: | CODE |
| LOW | mcp/tests/unit/test_auth.py | 46 | def test_flagsmith_auth__forwarded_header__wins_over_static_token() -> None: | CODE |
| LOW | mcp/tests/unit/test_auth.py | 61 | def test_flagsmith_auth__upstream_already_authorized__does_not_override() -> None: | CODE |
| LOW | mcp/tests/unit/test_server.py | 68 | async def test_create_server__mcp_route__annotates_tool_per_method( | CODE |
| LOW | mcp/tests/unit/test_server.py | 94 | async def test_create_server__untagged_route__excluded_from_tools( | CODE |
| LOW | mcp/tests/unit/test_server.py | 127 | def test_run__configured_transport__runs_server_with_it( | CODE |
| 3706 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | api/platform_hub/mappers.py | 1 | CODE | |
| LOW | api/edge_api/identities/apps.py | 10 | CODE | |
| LOW | api/edge_api/identities/utils.py | 7 | CODE | |
| LOW | api/edge_api/identities/utils.py | 8 | CODE | |
| LOW | api/edge_api/identities/utils.py | 8 | CODE | |
| LOW | api/edge_api/identities/utils.py | 9 | CODE | |
| LOW | api/api_keys/user.py | 18 | CODE | |
| LOW | api/api_keys/user.py | 19 | CODE | |
| LOW | api/custom_auth/apps.py | 8 | CODE | |
| LOW | api/custom_auth/apps.py | 9 | CODE | |
| LOW | api/custom_auth/mfa/trench/urls/__init__.py | 1 | CODE | |
| LOW | api/custom_auth/mfa/trench/views/__init__.py | 1 | CODE | |
| LOW | api/sse/__init__.py | 1 | CODE | |
| LOW | api/sse/__init__.py | 1 | CODE | |
| LOW | api/import_export/export.py | 13 | CODE | |
| LOW | api/core/models.py | 21 | CODE | |
| LOW | api/core/models.py | 22 | CODE | |
| LOW | api/core/models.py | 23 | CODE | |
| LOW | api/core/constants.py | 1 | CODE | |
| LOW | api/core/throttling.py | 10 | CODE | |
| LOW | api/core/throttling.py | 11 | CODE | |
| LOW | api/core/dataclasses.py | 5 | CODE | |
| LOW | api/core/dataclasses.py | 7 | CODE | |
| LOW | api/core/workflows_services.py | 17 | CODE | |
| LOW | api/core/workflows_services.py | 18 | CODE | |
| LOW | api/app/settings/local.py | 3 | CODE | |
| LOW | api/app/settings/test.py | 3 | CODE | |
| LOW | api/app/settings/develop.py | 1 | CODE | |
| LOW | api/app/settings/production.py | 1 | CODE | |
| LOW | api/experimentation/services.py | 1 | CODE | |
| LOW | api/experimentation/services.py | 90 | CODE | |
| LOW | api/experimentation/services.py | 90 | CODE | |
| LOW | api/experimentation/models.py | 16 | CODE | |
| LOW | api/experimentation/feature_state_metadata.py | 8 | CODE | |
| LOW | api/experimentation/feature_state_metadata.py | 9 | CODE | |
| LOW | api/experimentation/views.py | 8 | CODE | |
| LOW | api/experimentation/views.py | 34 | CODE | |
| LOW | api/experimentation/warehouses/clickhouse.py | 52 | CODE | |
| LOW | api/experimentation/warehouses/clickhouse.py | 52 | CODE | |
| LOW | api/experimentation/warehouses/clickhouse.py | 53 | CODE | |
| LOW | api/experimentation/warehouses/clickhouse.py | 55 | CODE | |
| LOW | api/experimentation/warehouses/clickhouse.py | 57 | CODE | |
| LOW | api/experimentation/warehouses/clickhouse.py | 58 | CODE | |
| LOW | api/experimentation/warehouses/clickhouse.py | 59 | CODE | |
| LOW | api/experimentation/warehouses/cache.py | 6 | CODE | |
| LOW | api/experimentation/warehouses/snowflake.py | 1 | CODE | |
| LOW | api/experimentation/warehouses/base.py | 1 | CODE | |
| LOW | api/experimentation/warehouses/flagsmith.py | 1 | CODE | |
| LOW | api/app_analytics/types.py | 6 | CODE | |
| LOW | api/util/mappers/sdk.py | 10 | CODE | |
| LOW | api/util/mappers/dynamodb.py | 11 | CODE | |
| LOW | api/util/mappers/dynamodb.py | 33 | CODE | |
| LOW | api/util/mappers/dynamodb.py | 34 | CODE | |
| LOW | api/util/mappers/dynamodb.py | 34 | CODE | |
| LOW | api/util/mappers/dynamodb.py | 35 | CODE | |
| LOW | api/util/mappers/__init__.py | 1 | CODE | |
| LOW | api/util/mappers/__init__.py | 1 | CODE | |
| LOW | api/util/mappers/__init__.py | 1 | CODE | |
| LOW | api/util/mappers/__init__.py | 1 | CODE | |
| LOW | api/util/mappers/__init__.py | 1 | CODE | |
| 289 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | api/core/validators.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | api/app_analytics/models.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | api/features/models.py | 450 | and self.feature.project.organisation.github_config.exists() | CODE |
| CRITICAL | api/features/serializers.py | 716 | and feature_state.environment.project.organisation.github_config.exists() # type: ignore[union-attr] | CODE |
| CRITICAL | api/features/multivariate/serializers.py | 3 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | api/features/versioning/serializers.py | 49 | and feature_state.environment.project.organisation.github_config.exists() | CODE |
| CRITICAL | api/tests/unit/core/test_fields.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | api/tests/unit/app_analytics/test_models.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | …namodb/wrappers/test_unit_dynamodb_identity_wrapper.py | 267 | mocked_dynamo_table.batch_writer.return_value.__enter__.return_value.put_item.assert_not_called() | CODE |
| CRITICAL | api/tests/unit/features/test_unit_features_models.py | 6 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | …ions/lead_tracking/hubspot/test_unit_hubspot_client.py | 164 | hubspot_client.client.crm.companies.search_api.do_search.assert_called_once() | CODE |
| CRITICAL | …ions/lead_tracking/hubspot/test_unit_hubspot_client.py | 210 | hubspot_client.client.crm.companies.basic_api.create.assert_called_once() | CODE |
| CRITICAL | api/tests/unit/oauth2_metadata/test_services.py | 2 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | api/tests/unit/segments/test_unit_segments_models.py | 5 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | api/integrations/lead_tracking/hubspot/client.py | 41 | response = self.client.crm.contacts.batch_api.read( | CODE |
| CRITICAL | api/integrations/lead_tracking/hubspot/client.py | 133 | response = self.client.crm.companies.search_api.do_search( | CODE |
| CRITICAL | api/integrations/lead_tracking/hubspot/client.py | 166 | response = self.client.crm.companies.basic_api.create( | CODE |
| CRITICAL | api/integrations/lead_tracking/hubspot/client.py | 189 | response = self.client.crm.companies.basic_api.update( | CODE |
| CRITICAL | api/oauth2_metadata/services.py | 4 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | api/oauth2_metadata/serializers.py | 3 | from django.core.exceptions import ValidationError as DjangoValidationError | CODE |
| CRITICAL | api/segments/models.py | 8 | from django.core.exceptions import ValidationError | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | api/app/settings/common.py | 1308 | # Define the cooldown duration, in seconds, for password reset emails | COMMENT |
| MEDIUM | api/app/settings/common.py | 1310 | # Define the threshold, in minutes, for updating the last login timestamp | COMMENT |
| MEDIUM | api/features/multivariate/serializers.py | 104 | # Creating an option adds `default_percentage_allocation` to every | COMMENT |
| MEDIUM | api/tests/unit/core/test_unit_core_migration_helpers.py | 39 | # Create a temporary file | COMMENT |
| MEDIUM | api/tests/unit/features/test_unit_features_views.py | 4338 | # Create a secondary feature state that will be versioned in the past. | COMMENT |
| MEDIUM | …mport_export/test_unit_features_import_export_views.py | 230 | # Create a FeatureImport that's processing already. | COMMENT |
| MEDIUM | …mport_export/test_unit_features_import_export_views.py | 453 | # Create a FeatureImport that will be filtered out. | COMMENT |
| MEDIUM | …mport_export/test_unit_features_import_export_views.py | 460 | # Create a FeatureImport that will be included | COMMENT |
| MEDIUM | …mport_export/test_unit_features_import_export_tasks.py | 154 | # Create the receiving organisation, project, etc. | COMMENT |
| MEDIUM | …mport_export/test_unit_features_import_export_tasks.py | 301 | # Create the receiving organisation, project, etc. | COMMENT |
| MEDIUM | …tures/feature_states/test_unit_feature_states_views.py | 656 | # Create the segment override manually | COMMENT |
| MEDIUM | …tures/feature_states/test_unit_feature_states_views.py | 718 | # Create the segment override manually | COMMENT |
| MEDIUM | …ts/unit/organisations/test_unit_organisations_views.py | 2080 | # Create a notification in the past which should not be shown. | COMMENT |
| MEDIUM | …s/unit/organisations/test_unit_organisations_models.py | 731 | # Create a notification which should be deleted shortly. | COMMENT |
| MEDIUM | …ts/unit/organisations/test_unit_organisations_tasks.py | 452 | # Create an OrganisationApiUsageNotification object for another organisation | COMMENT |
| MEDIUM | api/tests/unit/audit/test_unit_audit_signals.py | 469 | # Create an AuditLog as if it was created for a FeatureStateValue update | COMMENT |
| MEDIUM | api/tests/unit/audit/test_unit_audit_signals.py | 583 | # Create an audit log for a Feature (not FeatureState) | COMMENT |
| MEDIUM | api/tests/unit/users/test_unit_users_views.py | 304 | # Create a group | COMMENT |
| MEDIUM | api/tests/unit/api/test_unit_openapi.py | 28 | # Create an extension instance targeting the ResponseModel | COMMENT |
| MEDIUM | api/tests/unit/api/test_unit_openapi.py | 33 | # Create a mock AutoSchema with a registry | COMMENT |
| MEDIUM | api/tests/unit/segments/test_unit_segments_views.py | 343 | # Create the first segment (at the limit) | COMMENT |
| MEDIUM | api/tests/unit/segments/test_unit_segments_views.py | 2115 | # Create the whitelist to stop the validation. | COMMENT |
| MEDIUM | …ion/sentry/test_change_tracking_webhook_integration.py | 188 | # Create a new EFV draft | COMMENT |
| MEDIUM | api/integrations/lead_tracking/hubspot/lead_tracker.py | 62 | # Create the contact. HubSpot handles company creation and association | COMMENT |
| MEDIUM⚡ | api/integrations/launch_darkly/services.py | 422 | # Create a negated child if it doesn't exist. | COMMENT |
| MEDIUM⚡ | api/integrations/launch_darkly/services.py | 430 | # Create a new child rule if it doesn't exist. Each child rule is "AND"ed together because | COMMENT |
| MEDIUM⚡ | api/integrations/launch_darkly/services.py | 438 | # Create a condition for each value. Each condition is "OR"ed together. | COMMENT |
| MEDIUM | api/integrations/launch_darkly/services.py | 490 | # Create a feature specific segment for the rule. | COMMENT |
| MEDIUM | api/integrations/launch_darkly/services.py | 508 | # Create a targeting rule for the new feature-specific segment. | COMMENT |
| MEDIUM | api/integrations/launch_darkly/services.py | 554 | # Create a segment override for those identities. This is a work-around to support individual | COMMENT |
| MEDIUM | api/integrations/launch_darkly/services.py | 736 | # Create the feature segment for the given rule and get the feature state objects from those | COMMENT |
| MEDIUM | api/integrations/launch_darkly/services.py | 1067 | # Create a condition to match against those identities via "key" trait. | COMMENT |
| MEDIUM | api/integrations/launch_darkly/services.py | 1122 | # Create the segment rule for the segment. | COMMENT |
| MEDIUM | api/integrations/launch_darkly/services.py | 1191 | # Create an empty rule if there are no rules. This is required to create an "SegmentRule" object. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/.claude/scripts/sync-types-helper.py | 72 | def update_metadata(stats: Dict) -> None: | CODE |
| LOW | api/metrics/metrics_service.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/edge_api/management/commands/migrate_to_edge_v2.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/edge_api/identities/tasks.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/edge_api/identities/export.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/custom_auth/oauth/github.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/custom_auth/oauth/views.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/custom_auth/oauth/helpers/github_helpers.py | 5 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/custom_auth/mfa/trench/urls/base.py | 3 | __all__ = [ | CODE |
| LOW | api/sse/tasks.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/sse/sse_service.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/import_export/export.py | 57 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/import_export/import_.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | …xport/management/commands/dumporganisationtolocalfs.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | …export/management/commands/importorganisationfroms3.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | …ort_export/management/commands/dumporganisationtos3.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/core/signals.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/core/models.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/core/middleware/admin.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/core/management/commands/waitfordb.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/app/views.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/experimentation/services.py | 894 | def _update_rollout_in_place(experiment: Experiment, change_set: FlagChangeSet) -> None: | CODE |
| LOW | api/experimentation/views.py | 84 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/app_analytics/influxdb_wrapper.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/app_analytics/track.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/app_analytics/views.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/util/engine_models/features/models.py | 83 | def set_value(self, value: typing.Any) -> None: | CODE |
| LOW | api/environments/models.py | 69 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/environments/models.py | 201 | def update_environment_document_cache(self) -> None: | CODE |
| LOW | api/environments/models.py | 481 | def set_bad_key(environment_key: str) -> None: | CODE |
| LOW | api/environments/views.py | 67 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/environments/dynamodb/services.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/environments/dynamodb/wrappers/identity_wrapper.py | 43 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/environments/identities/traits/fields.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | …i/projects/management/commands/createinitialproject.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/features/signals.py | 5 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/features/tasks.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/features/models.py | 84 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/features/views.py | 133 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/features/release_pipelines/core/models.py | 269 | def set_initial_split(self) -> None: | CODE |
| LOW | api/features/feature_external_resources/models.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/features/workflows/core/models.py | 54 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/features/feature_health/services.py | 95 | def update_feature_unhealthy_tag(feature: "Feature") -> None: | CODE |
| LOW | api/features/feature_health/tasks.py | 10 | def update_feature_unhealthy_tag(feature_id: int) -> None: | CODE |
| LOW | api/features/feature_states/models.py | 53 | def set_value(self, value: str, type_: FeatureValueType) -> None: | CODE |
| LOW | api/features/versioning/tasks.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/features/versioning/versioning_service.py | 331 | def _update_segment_priority(feature_state: FeatureState, priority: int) -> None: | CODE |
| LOW | api/features/feature_segments/views.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | api/tests/conftest.py | 1383 | def set_github_webhook_secret() -> None: | CODE |
| LOW | …/integrations/github/test_unit_github_cleanup_issue.py | 30 | def set_github_pat(settings: SettingsWrapper) -> None: | CODE |
| LOW | api/integrations/webhook/webhook.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/integrations/dynatrace/dynatrace.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/integrations/dynatrace/models.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/integrations/gitlab/views/__init__.py | 9 | __all__ = [ | CODE |
| LOW | api/integrations/gitlab/client/__init__.py | 22 | __all__ = [ | CODE |
| LOW | api/integrations/gitlab/services/__init__.py | 31 | __all__ = [ | CODE |
| LOW | api/integrations/gitlab/services/tagging.py | 23 | def set_gitlab_tag(feature: Feature, new_label: GitLabTagLabel) -> None: | CODE |
| LOW | api/integrations/lead_tracking/hubspot/services.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/integrations/lead_tracking/hubspot/client.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/integrations/lead_tracking/hubspot/lead_tracker.py | 14 | logger = logging.getLogger(__name__) | CODE |
| 41 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …settings/tabs/warehouse-tab/WarehouseEventCodeHelp.tsx | 21 | print('Hello, Flagsmith Warehouse!');`, | CODE |
| HIGH | …settings/tabs/warehouse-tab/WarehouseEventCodeHelp.tsx | 108 | print("Hello, Flagsmith Warehouse!")`, | CODE |
| HIGH | frontend/common/code-help/init/init-flutter.js | 27 | print('${FEATURE_NAME} enabled: $isEnabled'); | CODE |
| HIGH | frontend/common/code-help/init/init-flutter.js | 28 | print('${FEATURE_NAME_ALT || FEATURE_NAME} value: $featureValue'); | CODE |
| HIGH⚡ | frontend/common/code-help/init/init-ios.js | 20 | print(result) | CODE |
| HIGH⚡ | frontend/common/code-help/init/init-ios.js | 30 | print(value ?? "nil") | CODE |
| HIGH⚡ | frontend/common/code-help/init/init-ios.js | 32 | print(error) | CODE |
| HIGH | frontend/common/code-help/init/init-python.js | 19 | print("${FEATURE_NAME} enabled:", is_enabled) | CODE |
| HIGH | frontend/common/code-help/init/init-python.js | 23 | print("${FEATURE_NAME_ALT || FEATURE_NAME} value:", feature_value) | CODE |
| HIGH | frontend/common/code-help/traits/traits-ios.js | 5 | print(error) | CODE |
| HIGH⚡ | …ontend/common/code-help/create-user/create-user-ios.js | 25 | print(result) | CODE |
| HIGH⚡ | …ontend/common/code-help/create-user/create-user-ios.js | 35 | print(value ?? "nil") | CODE |
| HIGH⚡ | …ontend/common/code-help/create-user/create-user-ios.js | 37 | print(error) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | api/edge_api/identities/views.py | 0 | get environment object from url parameters in request. | STRING |
| HIGH | api/environments/identities/views.py | 0 | get environment object from url parameters in request. | STRING |
| HIGH | api/features/views.py | 0 | get environment object from url parameters in request. | STRING |
| HIGH | api/features/future/services.py | 0 | https://docs.flagsmith.com/managing-flags/updating-flags | STRING |
| HIGH | api/features/future/serializers.py | 0 | https://docs.flagsmith.com/managing-flags/updating-flags | STRING |
| HIGH | api/features/future/types.py | 0 | https://docs.flagsmith.com/managing-flags/updating-flags | STRING |
| HIGH | api/features/future/mappers.py | 0 | https://docs.flagsmith.com/managing-flags/updating-flags | STRING |
| HIGH | api/features/future/permissions.py | 0 | https://docs.flagsmith.com/managing-flags/updating-flags | STRING |
| HIGH | api/features/future/exceptions.py | 0 | https://docs.flagsmith.com/managing-flags/updating-flags | STRING |
| HIGH | api/features/future/views.py | 0 | https://docs.flagsmith.com/managing-flags/updating-flags | STRING |
| HIGH | …ests/integration/features/future/test_flag_endpoint.py | 0 | https://docs.flagsmith.com/managing-flags/updating-flags | STRING |
| HIGH | …sions/permission_service/test_is_user_project_admin.py | 0 | specific test to verify that a user no longer has permission to access resources via a group, if they no longer belong t | STRING |
| HIGH | …on_service/test_get_permitted_environments_for_user.py | 0 | specific test to verify that a user no longer has permission to access resources via a group, if they no longer belong t | STRING |
| HIGH | …s/permission_service/test_is_user_environment_admin.py | 0 | specific test to verify that a user no longer has permission to access resources via a group, if they no longer belong t | STRING |
| HIGH | …ission_service/test_get_permitted_projects_for_user.py | 0 | specific test to verify that a user no longer has permission to access resources via a group, if they no longer belong t | STRING |
| HIGH | …sion_service/test_user_has_organisation_permissions.py | 0 | specific test to verify that a user no longer has permission to access resources via a group, if they no longer belong t | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/.claude/context/api-integration.md | 13 | ### Step 1: Find Backend Endpoint | COMMENT |
| LOW | frontend/.claude/context/api-integration.md | 19 | ### Step 2: Add Request Type | COMMENT |
| LOW | frontend/.claude/context/api-integration.md | 32 | ### Step 3: Add RTK Query Endpoint | COMMENT |
| LOW | frontend/.claude/context/api-integration.md | 63 | ### Step 4: Use in Component | COMMENT |
| LOW | frontend/.claude/context/api-integration.md | 88 | ### Step 5: Run Linter | COMMENT |
| LOW | frontend/.claude/context/patterns/index.md | 11 | ### Step 1: Check Backend API | COMMENT |
| LOW | frontend/.claude/context/patterns/index.md | 20 | ### Step 2: Add Request Type | COMMENT |
| LOW | frontend/.claude/context/patterns/index.md | 33 | ### Step 3: Extend RTK Query Service | COMMENT |
| LOW | frontend/.claude/context/patterns/index.md | 63 | ### Step 4: Create Table Component | COMMENT |
| LOW | frontend/.claude/context/patterns/index.md | 93 | ### Step 5: Add Tabs to Page | COMMENT |
| LOW | frontend/.claude/context/patterns/index.md | 122 | ### Step 6: Run Linter | COMMENT |
| LOW | frontend/common/services/useFeatureVersion.ts | 95 | // Step 1: Create a new feature version | COMMENT |
| LOW | …ing-with-flagsmith/sdks/client-side-sdks/javascript.md | 371 | ### Step 1: Initialise your Datadog RUM SDK with the feature_flags experimental feature | COMMENT |
| LOW | …ing-with-flagsmith/sdks/client-side-sdks/javascript.md | 386 | ### Step 2: Initialise the Flagsmith SDK with configuring | COMMENT |
| LOW | …ing-with-flagsmith/sdks/client-side-sdks/javascript.md | 404 | ### Step 3: What happens next | COMMENT |
| LOW | …ing-with-flagsmith/sdks/client-side-sdks/javascript.md | 432 | ### Step 1: Pass `enableDynatrace` into `flagsmith.init()` | COMMENT |
| LOW | …ing-with-flagsmith/sdks/client-side-sdks/javascript.md | 458 | ### Step 2: Add the session properties to your Dynatrace application settings | COMMENT |
| LOW | …egrating-with-flagsmith/sdks/client-side-sdks/react.md | 43 | ### Step 1: Wrapping your application with Flagsmith Provider | COMMENT |
| LOW | …egrating-with-flagsmith/sdks/client-side-sdks/react.md | 72 | ### Step 2: Using useFlags to access feature values and enabled state | COMMENT |
| LOW | …egrating-with-flagsmith/sdks/client-side-sdks/react.md | 108 | ### Step 3: Using useFlagsmith to access the Flagsmith instance | COMMENT |
| LOW⚡ | docs/docs/third-party-integrations/analytics/heap.md | 55 | ### Step 1 - Create a Custom Event Definition | COMMENT |
| LOW⚡ | docs/docs/third-party-integrations/analytics/heap.md | 61 | ### Step 2 - Create a Segment based on this new Custom Event Property | COMMENT |
| LOW⚡ | docs/docs/third-party-integrations/analytics/heap.md | 67 | ### Step 3 - Create your Report | COMMENT |
| LOW | …ministration-and-maintenance/upgrades-and-rollbacks.md | 45 | ### Step 1: Generate Rollback Commands | COMMENT |
| LOW | …ministration-and-maintenance/upgrades-and-rollbacks.md | 80 | ### Step 2: Execute the Rollback Commands | COMMENT |
| LOW | docs/docs/performance/edge-api.md | 64 | ### Step 1 - Prepare your applications | COMMENT |
| LOW | docs/docs/performance/edge-api.md | 68 | ### Step 2 - Migrate your data | COMMENT |
| LOW | docs/docs/performance/edge-api.md | 84 | ### Step 3 - Deploy your applications | COMMENT |
| LOW | docs/docs/managing-flags/release-pipeline.md | 26 | ### Step 1: Navigate to Release Pipelines | COMMENT |
| LOW | docs/docs/managing-flags/release-pipeline.md | 34 | ### Step 2: Configure Pipeline Settings | COMMENT |
| LOW | api/telemetry/middleware.py | 31 | # NOTE: The following W3C Baggage items are added by downstream processor | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | README.md | 50 | Superuser "admin@example.com" created successfully. | CODE |
| LOW | frontend/README.md | 15 | Superuser "admin@example.com" created successfully. | CODE |
| LOW | …documentation/pages/onboarding/InlineInput.stories.tsx | 45 | render: () => <Controlled label='Organisation' initial='Acme Inc' />, | CODE |
| LOW | …entation/pages/onboarding/OnboardingHeader.stories.tsx | 9 | organisationName: 'Acme Inc', | CODE |
| LOW | …es/onboarding/hooks/__tests__/useSmartDefaults.test.ts | 7 | ${'alice@acme-corp.com'} | ${'Alice'} | ${'Acme Corp'} | CODE |
| LOW | frontend/common/utils/__tests__/format.test.ts | 120 | ${{ email: 'john@email.com', firstName: 'John', lastName: 'Doe' }} | ${'John Doe'} | CODE |
| LOW | …rating-with-flagsmith/sdks/client-side-sdks/android.md | 129 | flagsmith.setTrait(Trait(key = "set-from-client", value = "12345"), identity = "test@test.com") { result -> | CODE |
| LOW | …rating-with-flagsmith/sdks/client-side-sdks/android.md | 147 | flagsmith.getTraits(identity = "test@test.com") { result -> | CODE |
| LOW | …ocs/administration-and-security/access-control/scim.md | 228 | API supports filtering (e.g. `filter=userName eq "user@example.com"`) and pagination (`startIndex`, `count`) on list | CODE |
| LOW | api/app/settings/common.py | 561 | ADMIN_EMAIL = env("ADMIN_EMAIL", default="admin@example.com") | CODE |
| LOW⚡ | …/features/workflows/core/test_unit_workflows_models.py | 351 | user = django_user_model.objects.create(email="user@example.com") | CODE |
| LOW⚡ | …/features/workflows/core/test_unit_workflows_models.py | 370 | user = django_user_model.objects.create(email="user@example.com") | CODE |
| LOW | …ad_tracking/hubspot/test_unit_hubspot_lead_tracking.py | 310 | email="user@example.com", | CODE |
| LOW | …ad_tracking/hubspot/test_unit_hubspot_lead_tracking.py | 352 | email="user@example.com", | CODE |
| LOW | …ad_tracking/hubspot/test_unit_hubspot_lead_tracking.py | 427 | email="user@example.com", | CODE |
| LOW | …tests/unit/integrations/launch_darkly/test_services.py | 486 | ("user@example.org", False), | CODE |
| LOW | …ch_darkly/example_api_responses/getFeatureFlags_2.json | 36 | "email": "test@test.com", | CODE |
| LOW | …ch_darkly/example_api_responses/getFeatureFlags_1.json | 36 | "email": "test@test.com", | CODE |
| LOW | …ch_darkly/example_api_responses/getFeatureFlags_1.json | 163 | "email": "test@test.com", | CODE |
| LOW | …ch_darkly/example_api_responses/getFeatureFlags_1.json | 290 | "email": "test@test.com", | CODE |
| LOW | …ch_darkly/example_api_responses/getFeatureFlags_1.json | 421 | "email": "test@test.com", | CODE |
| LOW | …grations/launch_darkly/client_responses/get_flags.json | 21 | "email": "test@test.com", | CODE |
| LOW | …grations/launch_darkly/client_responses/get_flags.json | 149 | "email": "test@test.com", | CODE |
| LOW | …grations/launch_darkly/client_responses/get_flags.json | 277 | "email": "test@test.com", | CODE |
| LOW | …grations/launch_darkly/client_responses/get_flags.json | 409 | "email": "test@test.com", | CODE |
| LOW | …grations/launch_darkly/client_responses/get_flags.json | 548 | "email": "test@test.com", | CODE |
| LOW | …grations/launch_darkly/client_responses/get_flags.json | 679 | "email": "test@test.com", | CODE |
| LOW | …grations/launch_darkly/client_responses/get_flags.json | 1005 | "email": "test@test.com", | CODE |
| LOW | …grations/launch_darkly/client_responses/get_flags.json | 1207 | "email": "test@test.com", | CODE |
| LOW | …grations/launch_darkly/client_responses/get_flags.json | 1433 | "email": "test@test.com", | CODE |
| LOW | …ts/unit/organisations/test_unit_organisations_views.py | 829 | settings.ORG_SUBSCRIPTION_CANCELLED_ALERT_RECIPIENT_LIST = ["foo@bar.com"] | CODE |
| LOW | …ts/unit/organisations/test_unit_organisations_views.py | 867 | settings.ORG_SUBSCRIPTION_CANCELLED_ALERT_RECIPIENT_LIST = ["foo@bar.com"] | CODE |
| LOW | …ts/unit/organisations/test_unit_organisations_views.py | 906 | settings.ORG_SUBSCRIPTION_CANCELLED_ALERT_RECIPIENT_LIST = ["foo@bar.com"] | CODE |
| LOW | …ts/unit/organisations/test_unit_organisations_tasks.py | 273 | recipient = "foo@bar.com" | CODE |
| LOW | …ts/unit/organisations/test_unit_organisations_tasks.py | 502 | assert email.to == ["admin@example.com"] | CODE |
| LOW | …ts/unit/organisations/test_unit_organisations_tasks.py | 646 | assert email.to == ["admin@example.com", "staff@example.com"] | CODE |
| LOW | …ts/unit/organisations/test_unit_organisations_tasks.py | 792 | assert email.to == ["admin@example.com", "staff@example.com"] | CODE |
| LOW | …ts/unit/organisations/test_unit_organisations_tasks.py | 1787 | assert email2.to == ["admin@example.com", "staff@example.com"] | CODE |
| LOW | …ts/unit/organisations/test_unit_organisations_tasks.py | 1805 | assert email3.to == ["admin@example.com", "staff@example.com"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | frontend/web/components/integrations/MCPIntegration.tsx | 132 | <InlineCode><your-api-key></InlineCode>. | CODE |
| HIGH | …ontend/web/components/integrations/mcp/mcpSnippets.tsx | 15 | export const API_KEY_PLACEHOLDER = '<your-api-key>' | CODE |
| HIGH | …nd-security/governance-and-compliance/custom-fields.md | 76 | -H "Authorization: Api-Key YOUR_API_KEY" | CODE |
| HIGH | …nd-security/governance-and-compliance/custom-fields.md | 105 | -H "Authorization: Api-Key YOUR_API_KEY" | CODE |
| HIGH | docs/docs/deployment-self-hosting/mcp-server.md | 76 | FLAGSMITH_API_TOKEN=<your-api-key> \ | CODE |
| HIGH | docs/docs/deployment-self-hosting/mcp-server.md | 94 | "FLAGSMITH_API_TOKEN": "<your-api-key>" | CODE |
| HIGH | docs/docs/deployment-self-hosting/mcp-server.md | 144 | Authorization: Api-Key <your-api-key> | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | api/environments/dynamodb/wrappers/identity_wrapper.py | 169 | " OR attribute_type(system_traits, :null))" | CODE |
| HIGH | api/environments/identities/serializers.py | 78 | help_text="One of: null, 'SEGMENT', 'IDENTITY'." | CODE |
| HIGH | api/features/models.py | 551 | # identity is the highest priority so we can always return true | COMMENT |
| HIGH | …unit/environments/dynamodb/test_unit_dynamodb_utils.py | 58 | '{"outer":{"inner":"value","list":[1,2]},"flag":true,"empty":null}'.encode() | CODE |
| HIGH | api/oauth2_metadata/serializers.py | 33 | # Optional per RFC 7591 §2; null, blank and absent all mean "unnamed". | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | api/tests/conftest.py | 140 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | api/tests/conftest.py | 142 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | api/tests/conftest.py | 156 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | api/tests/conftest.py | 158 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | api/tests/conftest.py | 1529 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | api/tests/conftest.py | 1531 | # --------------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mcp/src/flagsmith_mcp/metrics.py | 43 | except Exception: | CODE |
| LOW | mcp/src/flagsmith_mcp/events.py | 49 | except Exception: | CODE |
| LOW | api/edge_api/management/commands/migrate_to_edge_v2.py | 23 | except Exception: # pragma: no cover | CODE |
| LOW | …mport_export/json_serializers_with_metadata_support.py | 35 | except Exception as exc: | CODE |
| LOW | api/core/redis_cluster.py | 134 | except Exception as e: | CODE |
| LOW | api/experimentation/services.py | 1153 | except Exception as error: | CODE |
| LOW | api/experimentation/tasks.py | 55 | except Exception as exc: | CODE |
| LOW | api/experimentation/tasks.py | 103 | except Exception as exc: | CODE |
| LOW | api/experimentation/warehouses/clickhouse.py | 434 | except Exception: | CODE |
| LOW | api/experimentation/warehouses/clickhouse.py | 471 | except Exception: | CODE |
| LOW | api/experimentation/warehouses/flagsmith.py | 178 | except Exception: | CODE |
| LOW | api/experimentation/warehouses/flagsmith.py | 200 | except Exception: | CODE |
| LOW | api/app_analytics/services.py | 53 | except Exception: | CODE |
| LOW⚡ | api/features/import_export/tasks.py | 127 | except Exception: | CODE |
| LOW⚡ | api/features/import_export/tasks.py | 139 | except Exception: | CODE |
| LOW | api/tests/unit/features/dependencies/test_services.py | 259 | except Exception as error: | CODE |
| LOW | api/segment_membership/tasks.py | 119 | except Exception: | CODE |
| LOW | api/segment_membership/tasks.py | 243 | except Exception: | CODE |
| LOW | api/integrations/launch_darkly/services.py | 96 | except Exception as exc: | CODE |
| LOW | api/integrations/launch_darkly/tasks.py | 32 | except Exception: | CODE |
| LOW | api/organisations/tasks.py | 151 | except Exception: | CODE |
| LOW | api/organisations/tasks.py | 277 | except Exception: | CODE |
| LOW | api/organisations/usage_reporting/services.py | 74 | except Exception: | CODE |
| LOW | api/telemetry/apps.py | 17 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | api/edge_api/identities/export.py | 19 | CODE | |
| LOW | api/app_analytics/mappers.py | 76 | CODE | |
| LOW | api/environments/dynamodb/wrappers/identity_wrapper.py | 86 | CODE | |
| LOW | api/features/models.py | 533 | CODE | |
| LOW | api/features/permissions.py | 89 | CODE | |
| LOW | api/features/features_service.py | 53 | CODE | |
| LOW | api/features/feature_health/services.py | 59 | CODE | |
| LOW | api/features/versioning/models.py | 342 | CODE | |
| LOW | api/tests/migration_snapshots.py | 346 | CODE | |
| LOW | api/tests/migration_snapshots.py | 428 | CODE | |
| LOW | api/tests/migration_snapshots.py | 355 | CODE | |
| LOW | api/segment_membership/tasks.py | 58 | CODE | |
| LOW | api/cohorts/services.py | 308 | CODE | |
| LOW | api/cohorts/tasks.py | 19 | CODE | |
| LOW | api/integrations/gitlab/mappers.py | 93 | CODE | |
| LOW | api/integrations/launch_darkly/services.py | 390 | CODE | |
| LOW | api/integrations/launch_darkly/services.py | 534 | CODE | |
| LOW | api/integrations/launch_darkly/services.py | 642 | CODE | |
| LOW | api/integrations/launch_darkly/services.py | 796 | CODE | |
| LOW | api/integrations/launch_darkly/services.py | 859 | CODE | |
| LOW | api/integrations/launch_darkly/services.py | 1228 | CODE | |
| LOW | api/organisations/views.py | 77 | CODE | |
| LOW | api/api/openapi.py | 325 | CODE | |
| LOW | api/webhooks/permissions.py | 8 | CODE | |
| LOW | api/metadata/serializers.py | 130 | CODE | |
| LOW | api/metadata/permissions.py | 11 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | api/core/signals.py | 74 | except (KeyError, AttributeError): | CODE |
| HIGH | api/app_analytics/mappers.py | 82 | except (KeyError, ValueError, TypeError): | CODE |
| HIGH | api/integrations/github/views.py | 385 | except IntegrityError: | CODE |
| HIGH | api/segments/views.py | 146 | except ObjectDoesNotExist: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | frontend/web/components/modals/CreateSegment.tsx | 567 | // Need to fix this to be more robust and handle post save | COMMENT |
| MEDIUM | docs/package-lock.json | 19172 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", | CODE |
| LOW | api/edge_api/identities/export.py | 72 | # dynamo object, we just create a default object with a value of null. | COMMENT |
| LOW | api/core/models.py | 91 | # and fall back to just return an empty list. | COMMENT |
| LOW | api/app_analytics/influxdb_wrapper.py | 136 | # Influx throws an error for an empty range, so just return a list. | COMMENT |
| MEDIUM | api/audit/tasks.py | 66 | # NOTE: This NEEDS to leverage btree indexes on AuditLog | COMMENT |
| LOW | api/users/serializers.py | 164 | # TODO: remove users from here and just add a summary of number of users | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.yml | 21 | COMMENT | |
| LOW | frontend/web/styles/_primitives.scss | 1 | // ============================================================================= | COMMENT |
| LOW | frontend/web/styles/3rdParty/_bootstrap.scss | 81 | @import "~bootstrap/scss/buttons"; | COMMENT |
| LOW | …-settings/tabs/warehouse-tab/sendWarehouseTestEvent.ts | 1 | import { createFlagsmithInstance } from '@flagsmith/flagsmith/isomorphic' | COMMENT |
| LOW | …ts/pages/onboarding/OnboardingFlow/OnboardingFlow.scss | 1 | // Reading-column width for the onboarding flow - a focused, single-task flow | COMMENT |
| LOW | frontend/common/utils/multivariate.ts | 1 | import { FlagsmithValue } from 'common/types/responses' | COMMENT |
| LOW | frontend/common/services/useMultivariateOption.ts | 21 | // No invalidatesTags: every save chain already ends with a broad | COMMENT |
| LOW | frontend/e2e/tests/versioning-tests.pw.ts | 121 | // =================================================================================== | COMMENT |
| LOW | api/experimentation/dataclasses.py | 121 | metrics: list[MetricResult] | COMMENT |
| LOW | api/tests/unit/util/test_util.py | 141 | # Given an iterable whose length isn't a multiple of the batch size | COMMENT |
| LOW | …sions/permission_service/test_is_user_project_admin.py | 141 | # Should take only 4 queries: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | api/core/middleware/axes.py | 15 | CODE | |
| LOW | api/app_analytics/middleware.py | 24 | CODE | |
| LOW | api/app_analytics/middleware.py | 45 | CODE | |
| LOW | api/features/views.py | 464 | CODE | |
| LOW | api/features/views.py | 481 | CODE | |
| LOW | …sts/unit/integrations/github/test_unit_github_views.py | 488 | CODE | |
| LOW | …sts/unit/integrations/github/test_unit_github_views.py | 496 | CODE | |
| LOW | api/tests/unit/telemetry/helpers.py | 1 | CODE | |
| LOW | api/tests/integration/helpers.py | 83 | CODE | |
| LOW | api/integrations/webhook/webhook.py | 54 | CODE | |
| LOW | api/webhooks/webhooks.py | 336 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | api/sse/sse_service.py | 72 | # Check if timeout has been reached before processing each file | COMMENT |
| LOW | api/app/settings/common.py | 1080 | # Set this to enable create organisation for only superusers | COMMENT |
| LOW | api/app/settings/common.py | 1392 | # Set this to add newly created users to an organisation | COMMENT |
| LOW | api/environments/identities/traits/views.py | 155 | # Check if trait value was provided with request data. If so, we need to figure out value_type from | COMMENT |
| LOW | api/features/views.py | 805 | # Check if feature state value was provided with request data. If so, create / update | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/common/services/useFeatureVersion.ts | 95 | // Step 1: Create a new feature version | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | api/app_analytics/constants.py | 18 | # We make sure to only track known SDK versions | COMMENT |