Code metric analyzer for Swift projects.
Code metrics analyzer for Swift projects.
|
|
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
The goal of this software is to provide an insight of the architectural state of a software written in
Swiftthat consists in several modules. Inspired by the book of Robert C. Martin, Clean Architecture, the software will scan the project to identify the different components in order to assess several common code metrics in the software industry:
This is a Python 3 script that depends on matplotlib, adjustText, pyfunctional and pygraphviz.
This latest package depends on the Graphviz binary that must be installed.
The package is available on
pipwith
pip3 install swift-code-metrics.
The syntax is:
swift-code-metrics --source --artifacts --exclude --tests-paths --generate-graphs
--sourceis the path to the folder that contains the main Xcode project or Workspace
--artifactspath to the folder that will contain the generated
output.jsonreport
--exclude(optional) space separated list of path substrings to exclude from analysis (e.g.
Testswill ignore all files/folders that contain
Tests)
--tests-paths(default:
Test Tests) space separated list of path substrings matching test classes
--generate-graphs(optional) if passed, it will generate the graphs related to the analysis and save them in the artifacts folder
Please follow the guide with a practical example to get started.
This tool is designed for medium/large codebases composed by different frameworks. The script will scan the directory and it will identify the frameworks by the name of the 'root' folder, so it's strictly dependent on the file hierarchy (unless a project path override file is specified)
Libraries built with
spmare not supported.
The framework name is inferred using the directory structure. If the file is in the root dir, the
default_framework_namewill be used. No inspection of the xcodeproj will be made.
The list of methods currently doesn't support computed vars
Inline comments in code (such as
struct Data: {} //dummy data) are currently not supported
Only
XCTesttest frameworks are currently supported