Runs static analysis using @exercism/static-analysis
on exercises from the @exercism/javascript
track.
Clone this repository and then run:
yarn install
You'll need at least Node LTS for this to work.
yarn build
You can run this either via yarn
:
yarn analyze:bat --debug --console two-fer ~/path/to/solution/folder
Or directly via the provided shell script:
./bin/analyze.sh --debug --console two-fer ~/path/to/solution/folder
Add the --debug
and --console
flags to get output in the terminal window.
To create the image, execute the following command from the repository root:
docker build -t exercism/javascript-analyzer .
To run
from docker pass in the solutions path as a volume and execute with the necessary parameters:
docker run -v $(PATH_TO_SOLUTION):/solution exercism/javascript-analyzer ${SLUG} /solution
Example:
docker run -v ~/solution-238382y7sds7fsadfasj23j:/solution exercism/javascript-analyzer two-fer /solution
We use various tools to maintain this repository and this analyzer.
In order to contribute to the code of this track, you'll need NodeJS (LTS or higher) installed, with some of the bin/*
files having extra dependencies, as listed in their file-level commentary.
./bin/analyze.sh two-fer ~/folder/to/solution -dcp
This runs the analyzer using two-fer
as exercise and a path to a solution.
Most scripts, including this one, accept a wide range of flags to change or enhance the behaviour, as coded in execution_options.ts
.
Run with the -h
/ --help
flag to get a list of flags and their description.
./bin/analyze.sh --help
You'll most likely want -dcp
(--debug
,--console
and --pretty
) during development, which enables console output (instead of stdout
/stderr
) and shows logger.log
as well as logger.error
and logger.fatal
.
It will also format the output JSON with 2 space indentation, both in the output file and the console.
If you wish to preview the actual messages, pass in --noTemplates
to use the analyzer Comment
Factories to generate actual messages.
If the comment factories are kept in-sync with website-copy
, it will be the exact same output as on the site.
./bin/batch.sh two-fer -cp
Runs all the fixtures in ~/test/fixtures/two-fer
through the analyzer, giving a summary at the end with all results.
This places an analysis.json
in the source fixture folder.
You'll most likely want -cp
(--console
and --pretty
) during development, which enables console output (instead of stdout
/stderr
) and formats the
output JSON with 2 space indentation.
If you wish to preview the actual messages, pass in --noTemplates
to use the analyzer Comment
Factories to generate actual messages.
If the comment factories are kept in-sync with website-copy
, it will be the exact same output as on the site.
./bin/remote.sh https://exercism.io/tracks/javascript/exercises/two-fer/solutions/df3bb5d7131c44ea9c62206cc8d6c225 -dcp --dry
You need the exercism
cli in order for this to work. It takes an exercism solution url and downloads it using the exercism
cli.
It then runs the analyzer on it.
You'll most likely want -dcp --dry
(--debug
, --pretty
, --console
and dry run
) during development, which enables console output (instead of
stdout
/stderr
), shows logger.log
as well as logger.error
and logger.fatal
, pretty prints the JSON output and disables writing the output
to analysis.json
.
You can pass the following type of URLs:
- Published solutions:
/tracks/javascript/exercises/<slug>/<id>
- Mentor solutions:
/mentor/solutions/<id>
- Your solutions:
/my/solutions/<id>
- Private solutions:
/solutions/<id>
If you wish to preview the actual messages, pass in --noTemplates
to use the analyzer Comment
Factories to generate actual messages.
If the comment factories are kept in-sync with website-copy
, it will be the exact same output as on the site.