dash/test/lint
Kittywhiskers Van Gogh 41a6613fba
refactor: subsume CoinJoin objects under CJContext, deglobalize coinJoin{ClientQueueManager,Server} (#5337)
## Motivation

CoinJoin's subsystems are initialized by variables and managers that
occupy the global context. The _extent_ to which these subsystems
entrench themselves into the codebase is difficult to assess and moving
them out of the global context forces us to enumerate the subsystems in
the codebase that rely on CoinJoin logic and enumerate the order in
which components are initialized and destroyed.

Keeping this in mind, the scope of this pull request aims to:

* Reduce the amount of CoinJoin-specific entities present in the global
scope
* Make the remaining usage of these entities in the global scope
explicit and easily searchable

## Additional Information

* The initialization of `CCoinJoinClientQueueManager` is dependent on
blocks-only mode being disabled (which can be alternatively interpreted
as enabling the relay of transactions). The same applies to
`CBlockPolicyEstimator`, which `CCoinJoinClientQueueManager` depends.

Therefore, `CCoinJoinClientQueueManager` is only initialized if
transaction relaying is enabled and so is its scheduled maintenance
task. This can be found by looking at `init.cpp`
[here](93f8df1c31/src/init.cpp (L1681-L1683)),
[here](93f8df1c31/src/init.cpp (L2253-L2255))
and
[here](93f8df1c31/src/init.cpp (L2326-L2327)).
  
For this reason, `CBlockPolicyEstimator` is not a member of `CJContext`
and its usage is fulfilled by passing it as a reference when
initializing the scheduling task.

* `CJClientManager` has not used `CConnman` or `CTxMemPool` as `const`
as existing code that is outside the scope of this PR would cast away
constness, which would be unacceptable. Furthermore, some logical paths
are taken that will grind to a halt if they are stored as `const`.

  Examples of such a call chains would be:

* `CJClientManager::DoMaintenance >
CCoinJoinClientManager::DoMaintenance > DoAutomaticDenominating >
CCoinJoinClientSession::DoAutomaticDenominating >
CCoinJoinClientSession::StartNewQueue > CConnman::AddPendingMasternode`
which modifies `CConnman::vPendingMasternodes`, which is non-const
behaviour

* `CJClientManager::DoMaintenance >
CCoinJoinClientManager::DoMaintenance > DoAutomaticDenominating >
CCoinJoin::IsCollateralValid > AcceptToMemoryPool` which adds a
transaction to the memory pool, which is non-const behaviour

* There were cppcheck [linter
failures](https://github.com/dashpay/dash/pull/5337#issuecomment-1685084688)
that seemed to be caused by the usage of `Assert` in
`coinjoin/client.h`. This seems to be resolved by backporting
[bitcoin#24714](https://github.com/bitcoin/bitcoin/pull/24714). (Thanks
@knst!)
    * Depends on #5546

---------

Co-authored-by: Kittywhiskers Van Gogh <63189531+kittywhiskers@users.noreply.github.com>
Co-authored-by: PastaPastaPasta <6443210+PastaPastaPasta@users.noreply.github.com>
2023-09-13 12:52:38 -05:00
..
check-doc.py merge bitcoin#19671: Remove -zapwallettxes 2022-05-13 18:06:06 +05:30
check-rpc-mappings.py refactor: remove leftover rpc prefix from filename (evo, quorum) 2022-10-21 21:51:45 +05:30
commit-script-check.sh
extended-lint-all.sh Merge #18673: scripted-diff: Sort test includes 2023-08-29 22:00:59 -05:00
extended-lint-cppcheck.sh Merge #18673: scripted-diff: Sort test includes 2023-08-29 22:00:59 -05:00
git-subtree-check.sh
lint-all.sh
lint-assertions.sh partial bitcoin#19277: Add Assert identity function' 2022-05-13 18:06:06 +05:30
lint-circular-dependencies.sh refactor: subsume CoinJoin objects under CJContext, deglobalize coinJoin{ClientQueueManager,Server} (#5337) 2023-09-13 12:52:38 -05:00
lint-cppcheck-dash.sh feat: mnlistdiff v20 CL sig quorums (#5377) 2023-07-10 11:23:09 -05:00
lint-filenames.sh build: add exclusions to linting scripts and filters 2022-12-01 00:51:08 +05:30
lint-format-strings.py Merge #16688: log: Add validation interface logging 2023-05-24 12:43:57 -05:00
lint-format-strings.sh Merge #18673: scripted-diff: Sort test includes 2023-08-29 22:00:59 -05:00
lint-git-commit-check.sh
lint-include-guards.sh build: add exclusions to linting scripts and filters 2022-12-01 00:51:08 +05:30
lint-includes.sh merge bitcoin#21059: Drop boost/preprocessor dependencies 2023-09-04 20:50:27 -05:00
lint-locale-dependence.sh Merge #18673: scripted-diff: Sort test includes 2023-08-29 22:00:59 -05:00
lint-logs.sh Merge #17260: Split some CWallet functions into new LegacyScriptPubKeyMan (#4938) 2022-08-08 11:05:21 -05:00
lint-python-dead-code.sh
lint-python-mutable-default-parameters.sh Merge #16726: tests: Avoid common Python default parameter gotcha when mutable dict/list:s are used as default parameter values 2023-04-04 12:45:27 -05:00
lint-python-utf8-encoding.sh Merge #18673: scripted-diff: Sort test includes 2023-08-29 22:00:59 -05:00
lint-python.sh build: add exclusions to linting scripts and filters 2022-12-01 00:51:08 +05:30
lint-qt.sh
lint-rpc-help.sh
lint-shebang.sh Merge #18673: scripted-diff: Sort test includes 2023-08-29 22:00:59 -05:00
lint-shell-locale.sh build/depends: commit dashpay/bls-signatures@66ee820f to source tree as vendored (#5077) 2022-11-22 11:34:46 -06:00
lint-shell.sh Merge #18673: scripted-diff: Sort test includes 2023-08-29 22:00:59 -05:00
lint-spelling.ignore-words.txt Merge #18253: doc: Correct spelling errors in comments 2023-04-04 12:53:49 -05:00
lint-spelling.sh partial Merge bitcoin/bitcoin#22405: build: remove --enable-glibc-back-compat from Guix build 2023-03-26 16:50:26 -05:00
lint-submodule.sh
lint-tests.sh
lint-whitespace.sh Merge #20937: guix: Make nsis reproducible by respecting SOURCE-DATE-EPOCH 2023-03-26 16:50:26 -05:00
README.md Merge #17176: ci: Cleanup macOS runs 2022-05-17 01:20:21 -04:00

This folder contains lint scripts.

check-doc.py

Check for missing documentation of command line options.

commit-script-check.sh

Verification of scripted diffs. Scripted diffs are only assumed to run on the latest LTS release of Ubuntu. Running them on other operating systems might require installing GNU tools, such as GNU sed.

git-subtree-check.sh

Run this script from the root of the repository to verify that a subtree matches the contents of the commit it claims to have been updated to.

To use, make sure that you have fetched the upstream repository branch in which the subtree is maintained:

Usage: git-subtree-check.sh DIR (COMMIT)

COMMIT may be omitted, in which case HEAD is used.

lint-all.sh

Calls other scripts with the lint- prefix.