mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Add style checker
Rename files Changes from review Update test/docsCodeStyle.sh Co-Authored-By: chriseth <chris@ethereum.org> Update test/docsCodeStyle.sh Co-Authored-By: chriseth <chris@ethereum.org> Remove extraneous brackets
This commit is contained in:
parent
967ee944a5
commit
85ec44826a
@ -183,6 +183,22 @@ jobs:
|
|||||||
name: Check spelling
|
name: Check spelling
|
||||||
command: ~/.local/bin/codespell -S "*.enc,.git" -I ./scripts/codespell_whitelist.txt
|
command: ~/.local/bin/codespell -S "*.enc,.git" -I ./scripts/codespell_whitelist.txt
|
||||||
|
|
||||||
|
chk_docs_examples:
|
||||||
|
docker:
|
||||||
|
- image: circleci/node
|
||||||
|
environment:
|
||||||
|
TERM: xterm
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- attach_workspace:
|
||||||
|
at: build
|
||||||
|
- run:
|
||||||
|
name: JS deps
|
||||||
|
command: sudo npm install -g solhint
|
||||||
|
- run:
|
||||||
|
name: Test Docs examples
|
||||||
|
command: ./test/docsCodeStyle.sh
|
||||||
|
|
||||||
chk_coding_style:
|
chk_coding_style:
|
||||||
docker:
|
docker:
|
||||||
- image: buildpack-deps:disco
|
- image: buildpack-deps:disco
|
||||||
@ -586,6 +602,7 @@ workflows:
|
|||||||
# basic checks
|
# basic checks
|
||||||
- chk_spelling: *workflow_trigger_on_tags
|
- chk_spelling: *workflow_trigger_on_tags
|
||||||
- chk_coding_style: *workflow_trigger_on_tags
|
- chk_coding_style: *workflow_trigger_on_tags
|
||||||
|
- chk_docs_examples: *workflow_trigger_on_tags
|
||||||
- chk_buglist: *workflow_trigger_on_tags
|
- chk_buglist: *workflow_trigger_on_tags
|
||||||
- chk_proofs: *workflow_trigger_on_tags
|
- chk_proofs: *workflow_trigger_on_tags
|
||||||
|
|
||||||
@ -646,4 +663,3 @@ workflows:
|
|||||||
# Code Coverage enabled build and tests
|
# Code Coverage enabled build and tests
|
||||||
- b_ubu_codecov: *workflow_trigger_on_tags
|
- b_ubu_codecov: *workflow_trigger_on_tags
|
||||||
- t_ubu_codecov: *workflow_ubuntu1904_codecov
|
- t_ubu_codecov: *workflow_ubuntu1904_codecov
|
||||||
|
|
||||||
|
@ -59,8 +59,10 @@ def extract_docs_cases(path):
|
|||||||
def write_cases(f, tests):
|
def write_cases(f, tests):
|
||||||
cleaned_filename = f.replace(".","_").replace("-","_").replace(" ","_").lower()
|
cleaned_filename = f.replace(".","_").replace("-","_").replace(" ","_").lower()
|
||||||
for test in tests:
|
for test in tests:
|
||||||
open('test_%s_%s.sol' % (hashlib.sha256(test).hexdigest(), cleaned_filename), 'wb').write(test)
|
# When code examples are extracted they indented by 8 spaces, which violates the style guide,
|
||||||
|
# so before checking remove 4 spaces from each line.
|
||||||
|
remainder = re.sub(r'^ {4}', '', test, 0, re.MULTILINE)
|
||||||
|
open('test_%s_%s.sol' % (hashlib.sha256(test).hexdigest(), cleaned_filename), 'wb').write(remainder)
|
||||||
|
|
||||||
def extract_and_write(f, path):
|
def extract_and_write(f, path):
|
||||||
if docs:
|
if docs:
|
||||||
|
8
test/.solhint.json
Normal file
8
test/.solhint.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"extends": "solhint:default",
|
||||||
|
"plugins": [],
|
||||||
|
"rules": {
|
||||||
|
"compiler-fixed": false,
|
||||||
|
"no-inline-assembly": false
|
||||||
|
}
|
||||||
|
}
|
1
test/.solhintignore
Normal file
1
test/.solhintignore
Normal file
@ -0,0 +1 @@
|
|||||||
|
*contributing_rst*
|
@ -308,6 +308,7 @@ SOLTMPDIR=$(mktemp -d)
|
|||||||
set -e
|
set -e
|
||||||
cd "$SOLTMPDIR"
|
cd "$SOLTMPDIR"
|
||||||
"$REPO_ROOT"/scripts/isolate_tests.py "$REPO_ROOT"/docs/ docs
|
"$REPO_ROOT"/scripts/isolate_tests.py "$REPO_ROOT"/docs/ docs
|
||||||
|
|
||||||
for f in *.sol
|
for f in *.sol
|
||||||
do
|
do
|
||||||
# The contributors guide uses syntax tests, but we cannot
|
# The contributors guide uses syntax tests, but we cannot
|
||||||
@ -317,6 +318,7 @@ SOLTMPDIR=$(mktemp -d)
|
|||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
echo "$f"
|
echo "$f"
|
||||||
|
|
||||||
opts=''
|
opts=''
|
||||||
# We expect errors if explicitly stated, or if imports
|
# We expect errors if explicitly stated, or if imports
|
||||||
# are used (in the style guide)
|
# are used (in the style guide)
|
||||||
|
49
test/docsCodeStyle.sh
Executable file
49
test/docsCodeStyle.sh
Executable file
@ -0,0 +1,49 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
## GLOBAL VARIABLES
|
||||||
|
|
||||||
|
REPO_ROOT=$(cd $(dirname "$0")/.. && pwd)
|
||||||
|
|
||||||
|
## FUNCTIONS
|
||||||
|
|
||||||
|
if [ "$CIRCLECI" ]
|
||||||
|
then
|
||||||
|
function printTask() { echo "$(tput bold)$(tput setaf 2)$1$(tput setaf 7)"; }
|
||||||
|
function printError() { echo "$(tput setaf 1)$1$(tput setaf 7)"; }
|
||||||
|
else
|
||||||
|
function printTask() { echo "$(tput bold)$(tput setaf 2)$1$(tput sgr0)"; }
|
||||||
|
function printError() { echo "$(tput setaf 1)$1$(tput sgr0)"; }
|
||||||
|
fi
|
||||||
|
|
||||||
|
printTask "Checking docs examples style"
|
||||||
|
SOLTMPDIR=$(mktemp -d)
|
||||||
|
(
|
||||||
|
set -e
|
||||||
|
cd "$SOLTMPDIR"
|
||||||
|
"$REPO_ROOT"/scripts/isolate_tests.py "$REPO_ROOT"/docs/ docs
|
||||||
|
|
||||||
|
if npm -v >/dev/null 2>&1; then
|
||||||
|
if npm list -g | grep solhint >/dev/null 2>&1; then
|
||||||
|
echo "node is installed, setting up solhint"
|
||||||
|
cp "$REPO_ROOT"/test/.solhint.json "$SOLTMPDIR"/.solhint.json
|
||||||
|
cp "$REPO_ROOT"/test/.solhintignore "$SOLTMPDIR"/.solhintignore
|
||||||
|
|
||||||
|
for f in *.sol
|
||||||
|
do
|
||||||
|
echo "$f"
|
||||||
|
# Only report errors
|
||||||
|
solhint -f unix "$SOLTMPDIR/$f"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo "node is installed, but not solhint"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "node not installed, skipping docs style checker"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
)
|
||||||
|
rm -rf "$SOLTMPDIR"
|
||||||
|
echo "Done."
|
Loading…
Reference in New Issue
Block a user