object

# `lcom_metric`

Lack of Cohesion Of Methods metric (LCOM4).

Availability:
`logtalk_load(code_metrics(loader))`
Author: Paulo Moura
Version: 1:0:0
Date: 2026-03-30
Compilation flags:
`static, context_switching_calls`
Imports:
`public` code_metrics_utilities
`public` code_metric
Provides:
logtalk::message_tokens//2
Uses:
list
logtalk
Remarks:

> - Score computation: Computes the number of connected components in the undirected graph whose nodes are the locally defined predicates and whose edges represent direct internal calls between them.

> - Score interpretation: A score of 1 indicates a fully cohesive entity. Higher scores indicate that the entity may benefit from being split. Protocols are not scored as they cannot define predicates.

> - Score representation: The score is represented by the compound term `lcom(Components, Predicates)` where `Components` is the number of connected components and `Predicates` is the total number of locally defined (non-auxiliary) predicates.

Inherited public predicates:
all/0 all/1 all_score/1 check_option/1 check_options/1 default_option/1 default_options/1 directory/1 directory/2 directory_score/2 entity/1 entity_score/2 file/1 file/2 file_score/2 format_entity_score//2 library/1 library/2 library_score/2 option/2 option/3 rdirectory/1 rdirectory/2 rdirectory_score/2 rlibrary/1 rlibrary/2 rlibrary_score/2 valid_option/1 valid_options/1

## Public predicates

(no local declarations; see entity ancestors if any)

## Protected predicates

(no local declarations; see entity ancestors if any)

## Private predicates

(no local declarations; see entity ancestors if any)

## Operators

(none)