You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I tried to use elp to remove unused imports across RabbitMQ codebase.
However, there are two imports that I need to restore afterwards, for RabbitMQ to start.
To Reproduce**
git clone https://github.com/rabbitmq/rabbitmq-server.git
cd rabbitmq-server
elp lint --diagnostic-filter W0020 --apply-fix --in-place --include-tests
make start-cluster
The imports that are incorrectly removed are here:
https://github.com/rabbitmq/rabbitmq-server/blob/main/deps/rabbit/src/rabbit_amqp_util.erl#L9
Here the problem I think is related to the fact that amqp10_framing.hrl is a generated file. rabbit_amqp_util.erl includes rabbit_amqp.hrl which in turn includes amqp10_common/include/amqp10_framing.hrl but this file doesn't exist if you start from a fresh repo. If you run make start-cluster first and then run the same elp command, rabbit_amqp_uti.erl is not modified by elp.
ELP generally assumes header files are self-contained - this is violated in the 2nd case you describe since rabbit_peer_discovery_consul.hrl can't be included independently.
The "proper" fix from the view point of ELP and self-contained headers would be to move -include_lib("rabbitmq_peer_discovery_common/include/rabbit_peer_discovery.hrl"). into the header that defines the macro using the records from there, notably rabbit_peer_discovery_consul.hrl. The include_lib can be later removed from modules including rabbit_peer_discovery_consul.hrl.
Describe the bug
I tried to use
elp
to remove unused imports across RabbitMQ codebase.However, there are two imports that I need to restore afterwards, for RabbitMQ to start.
To Reproduce**
The imports that are incorrectly removed are here:
https://github.com/rabbitmq/rabbitmq-server/blob/main/deps/rabbit/src/rabbit_amqp_util.erl#L9
Here the problem I think is related to the fact that
amqp10_framing.hrl
is a generated file.rabbit_amqp_util.erl
includesrabbit_amqp.hrl
which in turn includesamqp10_common/include/amqp10_framing.hrl
but this file doesn't exist if you start from a fresh repo. If you runmake start-cluster
first and then run the sameelp
command,rabbit_amqp_uti.erl
is not modified byelp
.https://github.com/rabbitmq/rabbitmq-server/blob/main/deps/rabbitmq_peer_discovery_consul/src/rabbitmq_peer_discovery_consul_health_check_helper.erl#L18
In this case, the need for the removed include file is "hidden" by a macro -
?CONFIG_MAPPING
expands to code that uses thepeer_discovery_config_entry_meta
record.Context
elp version
):elp 1.1.0+build-2024-05-17
Thank you!
The text was updated successfully, but these errors were encountered: