Skip to content

Commit

Permalink
bears/dart: Add bear for Dart using Dart Linter
Browse files Browse the repository at this point in the history
Add a bear for Dart, which is a scalable programming language.
It looks a bit like a python or javascript.

Fixes #105
  • Loading branch information
Adrianzatreanu committed Feb 27, 2016
1 parent 8430f31 commit 93b3d8f
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .ci/deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,7 @@ for dep_version in "${dep_versions[@]}" ; do
done

python setup.py --help

# Dart Lint commands
wget -nc -O ~/dart-sdk.zip https://storage.googleapis.com/dart-archive/channels/stable/release/1.14.2/sdk/dartsdk-linux-x64-release.zip
unzip -n ~/dart-sdk.zip -d ~/
26 changes: 26 additions & 0 deletions bears/dart/DartLintBear.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import re

from coalib.bearlib.abstractions.Lint import Lint
from coalib.bears.LocalBear import LocalBear
from coalib.results.RESULT_SEVERITY import RESULT_SEVERITY


class DartLintBear(LocalBear, Lint):
executable = 'dartanalyzer'
output_regex = re.compile(
r'\[(?P<severity>error|warning)\] (?P<message>.+)\('
r'(?P<file_name>.+), line (?P<line>\d+),'
r' col (?P<column>\d+)\)')
severity_map = {
"error": RESULT_SEVERITY.MAJOR,
"warning": RESULT_SEVERITY.NORMAL}

def run(self, filename, file):
'''
Checks the code with ``dart-linter``.
This bear expects dart commands to be on your ``PATH``. Please ensure
/path/to/dart-sdk/bin is in your ``PATH``.
'''
self.arguments = '{filename}'
return self.lint(filename)
Empty file added bears/dart/__init__.py
Empty file.
2 changes: 2 additions & 0 deletions circle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@ dependencies:
- ~/coala-bears/node_modules
- ~/.rvm/gems/ruby-2.1.5/gems/
- ~/.RLibrary
- ~/dart-sdk/bin
pre:
- echo 'export PATH=$PATH:~/coala-bears/node_modules/.bin' >> ~/.circlerc
- echo 'export LINTR_COMMENT_BOT=false' >> ~/.circlerc
- echo 'export PATH=$PATH:~/dart-sdk/bin' >> ~/.circlerc
- sed -i '/source \/home\/ubuntu\/virtualenvs\//d' ~/.circlerc
- nvm alias default node
override:
Expand Down
32 changes: 32 additions & 0 deletions tests/dart/DartLintBearTest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from bears.dart.DartLintBear import DartLintBear
from tests.LocalBearTestHelper import verify_local_bear


good_file = """
printNumber(num aNumber) {
print('The number is $aNumber.');
}
main() {
var answer = 42; // The meaning of life.
printNumber(answer);
}
""".splitlines(keepends=True)


bad_file = """
printNumber(num aNumber) {
print('The number is $aNumber.')
}
main() {
var answer = 42; // The meaning of life.
printNumber(answer)
}
""".splitlines(keepends=True)


DartLintBearTest = verify_local_bear(DartLintBear,
valid_files=(good_file,),
invalid_files=(bad_file,),
tempfile_kwargs={"suffix": ".dart"})
Empty file added tests/dart/__init__.py
Empty file.

0 comments on commit 93b3d8f

Please sign in to comment.