I started asking a question, then mostly answered it. This is the condensed version number ~5. Essentially I just ran into a bunch of issues understanding how archan
works and how to apply it to my project. I think my below notes might be helpful to others and could be optionally integrated to the README
Would you consider reordering the example commands? I think creating the CSV with dependenpy
might be the most common use case and would be helpful if listed first. I wasn't sure where the CSV files were coming from until I dug further
# Generate CSV DSM data for archan (dependenpy must be installed)
dependenpy archan --format=csv archan_dsm.csv
# No configuration, read CSV data from file
archan --no-config --input archan_dsm.csv
# or read CSV data from STDIN
dependenpy archan --format=csv | archan --no-config
# Load configuration file and run archan (see Configuration section to know how archan finds the config file)
archan
# or specify the configuration file to load
archan --config my_config.yml
# Output the list of available plugins in the current environment
archan --list-plugins
I created a modified version of the archan config, but I had to comment out the names to prevent skipping the steps:
analysis:
archan_pylint.PylintProvider:
# name: Pylint
arguments:
pylint_args:
- dash_charts
checkers:
archan.CodeClean:
allow_failure: true
arguments:
threshold: 10
dependenpy.InternalDependencies:
# name: Software Architecture
arguments:
packages:
- dash_charts
checkers:
- archan.CompleteMediation
- archan.EconomyOfMechanism:
allow_failure: true
arguments:
simplicity_factor: 2
- archan.LayeredArchitecture
- archan.LeastCommonMechanism:
allow_failure: true
arguments:
independence_factor: 5
Open Design:
Source Code: true
Installed the dependencies and ran archan
> poetry add dependenpy git+https://github.com/pawamoy/archan-pylint.git git+https://github.com/pawamoy/archan.git -D
Updating dependencies
Resolving dependencies... (25.4s)
Writing lock file
Package operations: 8 installs, 0 updates, 0 removals
β’ Installing dependenpy (3.3.0)
β’ Installing lazy-object-proxy (1.4.3)
β’ Installing wrapt (1.12.1)
β’ Installing astroid (2.4.2)
β’ Installing pylint (2.6.0)
β’ Installing archan-pylint (0.1.0 ef4a609)
β’ Installing tap.py (3.0)
β’ Installing archan (0.3.0 9443064)
β― poetry run archan -c .archan.yaml
TAP version 13
# TAP results for Pylint Provider: Issues per Module
ok 1 Code Clean (ALLOWED FAILURE)
# TAP results for Internal Dependencies
ok 2 Complete Mediation
ok 3 Economy of Mechanism
ok 4 Layered Architecture
ok 5 Least Common Mechanism (ALLOWED FAILURE)
# TAP results for Open Design
ok 6 Source Code
On a side-note, can you publish a new wheel to PyPi? The current one has a typo bug for .ingo
and some API differences (notably analyzers vs. analysis)