Testing gitlint
This commit is contained in:
parent
9f3fe29c27
commit
5c855faa3e
|
@ -0,0 +1,400 @@
|
||||||
|
# Copyright 2013-2014 Sebastian Kreft
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Regular expression matchers like \d, \w, must be escaped as in \\d, \\w.
|
||||||
|
# If you need to include a string like '{}' or '{foo}', you need to double the
|
||||||
|
# braces, as in '{{}}' or '{{foo}}'. See the pylint configuration for an
|
||||||
|
# example.
|
||||||
|
|
||||||
|
# NOTE: filter are regular expressions, and for readability they are broken up
|
||||||
|
# using '>-' line folding from YAML. This means that between each line a space
|
||||||
|
# will be added.
|
||||||
|
|
||||||
|
|
||||||
|
# Python
|
||||||
|
pylint:
|
||||||
|
extensions:
|
||||||
|
- .py
|
||||||
|
command: pylint
|
||||||
|
arguments:
|
||||||
|
- --rcfile={REPO_HOME}/script/formatting/config/pylintrc
|
||||||
|
- --output-format=text
|
||||||
|
- >-
|
||||||
|
--msg-template={{abspath}}:{{line}}:{{column}}:
|
||||||
|
[{{category}}:{{symbol}}] {{obj}}: {{msg}}
|
||||||
|
- --reports=n
|
||||||
|
- --verbose
|
||||||
|
filter: >-
|
||||||
|
^{filename}:(?P<line>{lines}):((?P<column>\d+):)?
|
||||||
|
\[(?P<severity>.+):(?P<message_id>\S+)\]\s+(:
|
||||||
|
)?(?P<message>.+)$
|
||||||
|
installation: "Run pip install pylint."
|
||||||
|
|
||||||
|
# Sample output:
|
||||||
|
# package/module.py:68:80: E501 line too long (80 > 79 characters)
|
||||||
|
pycodestyle:
|
||||||
|
extensions:
|
||||||
|
- .py
|
||||||
|
command: pycodestyle
|
||||||
|
arguments:
|
||||||
|
- "--ignore=E121,E123,E126,E226,E24,E704,W503,E501"
|
||||||
|
- "--max-line-length=100"
|
||||||
|
filter: >-
|
||||||
|
^{filename}:(?P<line>{lines}):((?P<column>\d+):)?
|
||||||
|
(?P<message_id>\S+) (?P<message>.+)$
|
||||||
|
installation: "Run pip install pycodestyle."
|
||||||
|
|
||||||
|
# Java
|
||||||
|
# Sample output:
|
||||||
|
# /path_to/error.java:0: Missing package-info.java file.
|
||||||
|
# /path_to/error.java:1:7: warning: Name 'foo' must match pattern '^[A-Z][a-zA-Z0-9]*$'.
|
||||||
|
checkstyle:
|
||||||
|
command: checkstyle
|
||||||
|
extensions:
|
||||||
|
- .java
|
||||||
|
requirements:
|
||||||
|
- java
|
||||||
|
arguments:
|
||||||
|
- -c
|
||||||
|
- "{REPO_HOME}/script/formatting/config/google_checks.xml"
|
||||||
|
filter: "{filename}:(?P<line>{lines}):((?P<column>\\d+):)? (?P<message>.+)"
|
||||||
|
installation: >-
|
||||||
|
sudo apt-get install checkstyle or go to
|
||||||
|
http://checkstyle.sourceforge.net/cmdline.html
|
||||||
|
|
||||||
|
## Sample output:
|
||||||
|
## /path_to/error.java:1: All methods are static.
|
||||||
|
## Disabled rulesets because of false positives
|
||||||
|
## rulesets/java/coupling.xml: Demeter
|
||||||
|
## rulesets/java/design.xml: Static class
|
||||||
|
## rulesets/java/optimizations.xml: Parameter could be final
|
||||||
|
## rulesets/java/junit.xml: maximum asserts, asserts should have message
|
||||||
|
#pmd:
|
||||||
|
# command: run.sh
|
||||||
|
# extensions:
|
||||||
|
# - .java
|
||||||
|
# requirements:
|
||||||
|
# - java
|
||||||
|
# arguments:
|
||||||
|
# - pmd
|
||||||
|
# - -format
|
||||||
|
# - text
|
||||||
|
# - -rulesets
|
||||||
|
# - "rulesets/java/android.xml,rulesets/java/basic.xml,\
|
||||||
|
# rulesets/java/braces.xml,rulesets/java/clone.xml,\
|
||||||
|
# rulesets/java/codesize.xml,rulesets/java/empty.xml,\
|
||||||
|
# rulesets/java/finalizers.xml,rulesets/java/imports.xml,\
|
||||||
|
# rulesets/java/j2ee.xml,rulesets/java/logging-jakarta-commons.xml,\
|
||||||
|
# rulesets/java/strictexception.xml,rulesets/java/strings.xml,\
|
||||||
|
# rulesets/java/sunsecure.xml,rulesets/java/typeresolution.xml,\
|
||||||
|
# rulesets/java/unnecessary.xml,rulesets/java/unusedcode.xml"
|
||||||
|
# - -d
|
||||||
|
# filter: "{filename}:(?P<line>{lines}):\\s+(?P<message>.+)"
|
||||||
|
# installation: Go to http://pmd.sourceforge.net/pmd-5.1.1/installing.html
|
||||||
|
#
|
||||||
|
## JSON
|
||||||
|
## Sample output:
|
||||||
|
## Expecting property name: line 3 column 5 (char 15)
|
||||||
|
#json:
|
||||||
|
# extensions:
|
||||||
|
# - .json
|
||||||
|
# command: python
|
||||||
|
# arguments:
|
||||||
|
# - -m
|
||||||
|
# - json.tool
|
||||||
|
# # enforce that here comes a colon
|
||||||
|
# filter: >-
|
||||||
|
# ^(?P<message>[^:]+(?=:
|
||||||
|
# line \d+ column \d+)|No JSON object could be decoded)(:
|
||||||
|
# line (?P<line>\d+) column (?P<column>\d+).*)?$
|
||||||
|
# installation: Nothing else should be required.
|
||||||
|
#
|
||||||
|
## CSS
|
||||||
|
## Sample output:
|
||||||
|
## /path_to/error.css: line 3, col 2, Warning - Duplicate property 'width' found.
|
||||||
|
#csslint:
|
||||||
|
# extensions:
|
||||||
|
# - .css
|
||||||
|
# command: csslint
|
||||||
|
# arguments:
|
||||||
|
# - "--ignore=ids,box-model,adjoining-classes,qualified-headings,\
|
||||||
|
# unique-headings,zero-units"
|
||||||
|
# - --format=compact
|
||||||
|
# filter: >-
|
||||||
|
# ^{filename}: line (?P<line>{lines}), col (?P<column>\d+)?,
|
||||||
|
# (?P<severity>\S+) - (?P<message>.+)
|
||||||
|
# installation: >-
|
||||||
|
# Go to https://github.com/stubbornella/csslint/wiki/Command-line-interface
|
||||||
|
# for installation instructions.
|
||||||
|
#
|
||||||
|
## SCSS
|
||||||
|
## Sample output:
|
||||||
|
## /path_to/error.scss:2 [W] `0px` should be written without units as `0`
|
||||||
|
#scss:
|
||||||
|
# extensions:
|
||||||
|
# - .scss
|
||||||
|
# command: scss-lint
|
||||||
|
# filter: >-
|
||||||
|
# ^{filename}:(?P<line>{lines})(:(?P<column>\d+))?
|
||||||
|
# \[(?P<severity>.+)\]( (?P<message_id>.+):)?
|
||||||
|
# (?P<message>.+)
|
||||||
|
# installation: >-
|
||||||
|
# gem install scss-lint or go to https://github.com/causes/scss-lint
|
||||||
|
#
|
||||||
|
## Javascript
|
||||||
|
## Sample output:
|
||||||
|
## Line 1, E:0002: Missing space before "="
|
||||||
|
#gjslint:
|
||||||
|
# extensions:
|
||||||
|
# - .js
|
||||||
|
# command: gjslint
|
||||||
|
# filter: >-
|
||||||
|
# ^Line\s+(?P<line>{lines}), (?P<severity>[^: ]+):((?P<message_id>\d+):)?
|
||||||
|
# (?P<message>.+)
|
||||||
|
# installation: >-
|
||||||
|
# Run pip install
|
||||||
|
# http://closure-linter.googlecode.com/files/closure_linter-latest.tar.gz,
|
||||||
|
# or visit https://developers.google.com/closure/utilities/docs/linter_howto
|
||||||
|
# for installation instructions.
|
||||||
|
#
|
||||||
|
## Sample output:
|
||||||
|
## /path_to/error.js: line 1, col 3, Use '===' to compare with ''.
|
||||||
|
#jshint:
|
||||||
|
# extensions:
|
||||||
|
# - .js
|
||||||
|
# command: jshint
|
||||||
|
# arguments:
|
||||||
|
# - --config
|
||||||
|
# - "{DEFAULT_CONFIGS}/jshint.json"
|
||||||
|
# filter: >-
|
||||||
|
# ^{filename}: line (?P<line>{lines}), col (?P<column>\d+), (?P<message>.+)
|
||||||
|
# installation: >-
|
||||||
|
# Visit http://www.jshint.com/install/ for installation instructions.
|
||||||
|
#
|
||||||
|
## PHP
|
||||||
|
## Sample output:
|
||||||
|
## PHP Parse error: syntax error, unexpected 'bar' (T_STRING) in /path_to/error.php on line 3
|
||||||
|
#php:
|
||||||
|
# extensions:
|
||||||
|
# - .php
|
||||||
|
# command: php
|
||||||
|
# arguments:
|
||||||
|
# - -l
|
||||||
|
# filter: ^(?P<message>.*) in {filename} on line (?P<line>\d+)
|
||||||
|
# installation: You first need to install PHP.
|
||||||
|
#
|
||||||
|
## Sample output:
|
||||||
|
## 2 | ERROR | Expected "if (...) {\n"; found "if (...) {"
|
||||||
|
#phpcs:
|
||||||
|
# extensions:
|
||||||
|
# - .php
|
||||||
|
# command: phpcs
|
||||||
|
# arguments:
|
||||||
|
# - --report-width=1000
|
||||||
|
# - --standard=PSR2
|
||||||
|
# filter: >-
|
||||||
|
# ^\s*(?P<line>{lines})\s+[|]\s+(?P<severity>\S+)\s+[|]\s+(?P<message>.+)
|
||||||
|
# installation: >-
|
||||||
|
# Visit https://github.com/squizlabs/PHP_CodeSniffer for installation
|
||||||
|
# instructions
|
||||||
|
#
|
||||||
|
#
|
||||||
|
## RST
|
||||||
|
## Sample output:
|
||||||
|
## /path_to/error.rst:3: (WARNING/2) Inline interpreted text or phrase reference start-string without end-string.
|
||||||
|
#rst:
|
||||||
|
# extensions:
|
||||||
|
# - .rst
|
||||||
|
# command: rst2html.py
|
||||||
|
# filter: >-
|
||||||
|
# ^{filename}:(?P<line>{lines}): [(](?P<severity>.+)[)] (?P<message>.+)
|
||||||
|
# installation: Run pip install docutils.
|
||||||
|
#
|
||||||
|
## PNG
|
||||||
|
#pngcrush:
|
||||||
|
# extensions:
|
||||||
|
# - .png
|
||||||
|
# command: pngcrush-linter.sh
|
||||||
|
# requirements:
|
||||||
|
# - pngcrush
|
||||||
|
# filter: (?P<message>.+)$
|
||||||
|
# installation: Run apt-get install pngcrush.
|
||||||
|
#
|
||||||
|
#optipng:
|
||||||
|
# extensions:
|
||||||
|
# - .png
|
||||||
|
# command: optipng-linter.sh
|
||||||
|
# requirements:
|
||||||
|
# - optipng
|
||||||
|
# filter: (?P<message>.+)$
|
||||||
|
# installation: Run apt-get install optipng.
|
||||||
|
#
|
||||||
|
## JPEG
|
||||||
|
#jpegtran:
|
||||||
|
# extensions:
|
||||||
|
# - .jpg
|
||||||
|
# - .jpeg
|
||||||
|
# command: jpegtran-linter.sh
|
||||||
|
# requirements:
|
||||||
|
# - jpegtran
|
||||||
|
# filter: (?P<message>.+)
|
||||||
|
# installation: Run apt-get install jpegtran.
|
||||||
|
#
|
||||||
|
## SHELL scripts
|
||||||
|
## Sample output
|
||||||
|
## /path_to/error.sh: line 3: syntax error: unexpected end of file
|
||||||
|
#bash:
|
||||||
|
# extensions:
|
||||||
|
# - .sh
|
||||||
|
# command: bash
|
||||||
|
# arguments:
|
||||||
|
# - "-n"
|
||||||
|
# filter: >-
|
||||||
|
# {filename}: line (?P<line>{lines}): (?P<message>.+)
|
||||||
|
# installation: Please install bash in your system.
|
||||||
|
#
|
||||||
|
## YAML
|
||||||
|
#yaml:
|
||||||
|
# extensions:
|
||||||
|
# - .yaml
|
||||||
|
# - .yml
|
||||||
|
# command: yamllint
|
||||||
|
# arguments:
|
||||||
|
# - --format
|
||||||
|
# - parsable
|
||||||
|
# - --config-data
|
||||||
|
# - "{{extends: default, rules: {{document-start: disable}}}}"
|
||||||
|
# # Matches either:
|
||||||
|
# # - syntax error, on any line
|
||||||
|
# # - other error, on a modified line only
|
||||||
|
# filter: >-
|
||||||
|
# ^{filename}:(?P<line>{lines}|\d+(?=:\d+:
|
||||||
|
# \[error\] syntax error:)):(?P<column>\d+):
|
||||||
|
# \[(?P<severity>\S+)\] (?P<message>.+)$
|
||||||
|
#
|
||||||
|
# installation: Run pip install yamllint.
|
||||||
|
#
|
||||||
|
## INI
|
||||||
|
#ini:
|
||||||
|
# extensions:
|
||||||
|
# - .ini
|
||||||
|
# - .cfg
|
||||||
|
# command: ini_linter.py
|
||||||
|
# filter: (?P<message>.+)$
|
||||||
|
# installation: ""
|
||||||
|
#
|
||||||
|
## HTML
|
||||||
|
## Sample output:
|
||||||
|
## line 2 column 1 - Warning: missing </h2> before </h3>
|
||||||
|
#tidy:
|
||||||
|
# extensions:
|
||||||
|
# - .html
|
||||||
|
# command: tidy-wrapper.sh
|
||||||
|
# requirements:
|
||||||
|
# - tidy
|
||||||
|
# - remove_template.py
|
||||||
|
# - grep
|
||||||
|
# arguments:
|
||||||
|
# - -qe
|
||||||
|
# - --drop-empty-elements
|
||||||
|
# - "false"
|
||||||
|
# installation: Visit https://w3c.github.io/tidy-html5/
|
||||||
|
# filter: >-
|
||||||
|
# ^line (?P<line>{lines}) column (?P<column>\d+) -
|
||||||
|
# (?P<severity>[^:]+): (?P<message>.+)
|
||||||
|
#
|
||||||
|
## Sample output:
|
||||||
|
## 1:10: Error: Javascript ...
|
||||||
|
#html_lint:
|
||||||
|
# extensions:
|
||||||
|
# - .html
|
||||||
|
# command: html_lint.py
|
||||||
|
# arguments:
|
||||||
|
# - --disable
|
||||||
|
# - optional_tag
|
||||||
|
# installation: pip install html-linter.
|
||||||
|
# filter: >-
|
||||||
|
# ^(?P<line>{lines}):(?P<column>\d+): (?P<severity>\S+): (?P<message>.+)
|
||||||
|
#
|
||||||
|
## Ruby
|
||||||
|
## Sample output:
|
||||||
|
## error.rb: warning: line 1, column 1: unused constant FOO
|
||||||
|
#rubylint:
|
||||||
|
# command: ruby-lint
|
||||||
|
# arguments:
|
||||||
|
# - --analysis
|
||||||
|
# - "argument_amount,loop_keywords,pedantics,shadowing_variables,\
|
||||||
|
# unused_variables,useless_equality_checks"
|
||||||
|
# extensions:
|
||||||
|
# - .rb
|
||||||
|
# # The first component is the basename, but it's not supported yet.
|
||||||
|
# filter: >-
|
||||||
|
# .*: (?P<severity>.+): line (?P<line>{lines}),
|
||||||
|
# column (?P<column>\d+): (?P<message>.+)
|
||||||
|
# installation: >-
|
||||||
|
# sudo gem install ruby-lint (requires ruby 1.9) or visit
|
||||||
|
# https://github.com/yorickpeterse/ruby-lint
|
||||||
|
#
|
||||||
|
#
|
||||||
|
## Sample output with the --format emacs option:
|
||||||
|
## /path_to/error.rb:1:4: C: Surrounding space missing for operator '='.
|
||||||
|
#rubocop:
|
||||||
|
# command: rubocop
|
||||||
|
# arguments:
|
||||||
|
# - --format
|
||||||
|
# - emacs
|
||||||
|
# - --rails
|
||||||
|
# extensions:
|
||||||
|
# - .rb
|
||||||
|
# # The first component is the relpath, but it's not supported yet.
|
||||||
|
# filter: >-
|
||||||
|
# {filename}:(?P<line>{lines}):(?P<column>\d+):
|
||||||
|
# (?P<severity>.+): (?P<message>.+)
|
||||||
|
# installation: >-
|
||||||
|
# sudo gem install rubocop or visit https://github.com/bbatsov/rubocop
|
||||||
|
#
|
||||||
|
## Coffeescript
|
||||||
|
## Sample output:
|
||||||
|
## /path_to/error.coffee,4,,error,Operators must be spaced properly =.
|
||||||
|
## /path_to/error.coffee,5,,error,[stdin]:5:1: error: reserved word 'yes' can't be assigned
|
||||||
|
#coffeelint:
|
||||||
|
# command: coffeelint
|
||||||
|
# extensions:
|
||||||
|
# - .coffee
|
||||||
|
# arguments:
|
||||||
|
# - --reporter=csv
|
||||||
|
# - --file={DEFAULT_CONFIGS}/coffeelint.json
|
||||||
|
# filter: >-
|
||||||
|
# {filename},(?P<line>{lines}),.*,(?P<severity>.+),(?:\[stdin\]:\d+:(?P<column>\d+): .*: )?(?P<message>.+)
|
||||||
|
# installation: npm install -g coffeelint
|
||||||
|
#
|
||||||
|
## C++
|
||||||
|
## Sample output:
|
||||||
|
## main.cpp:0: No copyright message found. You should have a line: "Copyright [year] <Copyright Owner>" [legal/copyright] [5]
|
||||||
|
#cpplint:
|
||||||
|
# extensions:
|
||||||
|
# - .c
|
||||||
|
# - .cc
|
||||||
|
# - .cpp
|
||||||
|
# - .c++
|
||||||
|
# - .h
|
||||||
|
# - .hpp
|
||||||
|
# - .h++
|
||||||
|
# command: cpplint
|
||||||
|
# requirements:
|
||||||
|
# - cpplint
|
||||||
|
# filter: >-
|
||||||
|
# ^{filename}:(?P<line>{lines}): (?P<message>.+) \[(?P<message_id>.+)\]
|
||||||
|
# \[(?P<severity>\d+)\]
|
||||||
|
# installation: "Run pip install cpplint."
|
|
@ -45,9 +45,9 @@ script:
|
||||||
- docker-compose -f docker-compose.test.yml run --workdir="/app/client/controller" --rm test gradle build
|
- docker-compose -f docker-compose.test.yml run --workdir="/app/client/controller" --rm test gradle build
|
||||||
- docker-compose -f docker-compose.test.yml run --workdir="/app/server" --rm $ci_env test bash -c "coverage run --omit=\"*/tests/*\" -m unittest discover -s analysis/tests -v && (codecov -F analysis || (sleep 5 && codecov -F analysis) || (sleep 5 && codecov -F analysis))"
|
- docker-compose -f docker-compose.test.yml run --workdir="/app/server" --rm $ci_env test bash -c "coverage run --omit=\"*/tests/*\" -m unittest discover -s analysis/tests -v && (codecov -F analysis || (sleep 5 && codecov -F analysis) || (sleep 5 && codecov -F analysis))"
|
||||||
- docker-compose -f docker-compose.test.yml run --workdir="/app/server/website" --rm $ci_env test bash -c "./wait-for-it.sh && python3 manage.py makemigrations website && coverage run --source=website manage.py test --noinput -v 2 && (codecov -F website || (sleep 5 && codecov -F website) || (sleep 5 && codecov -F website))"
|
- docker-compose -f docker-compose.test.yml run --workdir="/app/server/website" --rm $ci_env test bash -c "./wait-for-it.sh && python3 manage.py makemigrations website && coverage run --source=website manage.py test --noinput -v 2 && (codecov -F website || (sleep 5 && codecov -F website) || (sleep 5 && codecov -F website))"
|
||||||
# Only run source validation once (on ubuntu 18.04)
|
# Only run the linter once on ubuntu 18.04
|
||||||
- if [ $DOCKER_OS == ubuntu-18.04 ]; then
|
- if [ $DOCKER_OS == ubuntu-18.04 ]; then
|
||||||
docker-compose -f docker-compose.test.yml run --workdir="/app" --rm test python3 script/validators/source_validator.py;
|
docker-compose -f docker-compose.test.yml run --workdir="/app" --rm test bash -c "git reset --soft ${TRAVIS_COMMIT_RANGE%...*} && git lint";
|
||||||
fi
|
fi
|
||||||
|
|
||||||
after_script:
|
after_script:
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
plugins {
|
plugins {
|
||||||
id "de.undercouch.download" version "3.3.0"
|
|
||||||
id "com.github.spotbugs" version "2.0.0"
|
id "com.github.spotbugs" version "2.0.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,14 +76,3 @@ tasks.withType(com.github.spotbugs.SpotBugsTask) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
import de.undercouch.gradle.tasks.download.Download
|
|
||||||
task downloadJars(type: Download) {
|
|
||||||
src ([
|
|
||||||
'https://github.com/google/google-java-format/releases/download/google-java-format-1.5/google-java-format-1.5-all-deps.jar',
|
|
||||||
'https://github.com/checkstyle/checkstyle/releases/download/checkstyle-8.8/checkstyle-8.8-all.jar'
|
|
||||||
])
|
|
||||||
dest libsDir
|
|
||||||
overwrite false
|
|
||||||
}
|
|
||||||
|
|
||||||
build.finalizedBy(downloadJars)
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ COPY ./server/website/requirements.txt /
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y python3.6 python3-pip mysql-client \
|
&& apt-get install -y python3.6 python3-pip mysql-client \
|
||||||
libmysqlclient-dev python-mysqldb postgresql-client \
|
libmysqlclient-dev python-mysqldb postgresql-client \
|
||||||
openjdk-11-jdk git unzip wget curl \
|
openjdk-11-jdk checkstyle git unzip wget curl \
|
||||||
&& wget https://services.gradle.org/distributions/${GRADLE_VERSION}-bin.zip \
|
&& wget https://services.gradle.org/distributions/${GRADLE_VERSION}-bin.zip \
|
||||||
&& unzip ${GRADLE_VERSION}-bin.zip -d /opt \
|
&& unzip ${GRADLE_VERSION}-bin.zip -d /opt \
|
||||||
&& rm ${GRADLE_VERSION}-bin.zip \
|
&& rm ${GRADLE_VERSION}-bin.zip \
|
||||||
|
|
|
@ -26,6 +26,10 @@
|
||||||
<module name="FileTabCharacter">
|
<module name="FileTabCharacter">
|
||||||
<property name="eachLine" value="true"/>
|
<property name="eachLine" value="true"/>
|
||||||
</module>
|
</module>
|
||||||
|
<module name="LineLength">
|
||||||
|
<property name="max" value="100"/>
|
||||||
|
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
|
||||||
|
</module>
|
||||||
|
|
||||||
<module name="TreeWalker">
|
<module name="TreeWalker">
|
||||||
<module name="OuterTypeFilename"/>
|
<module name="OuterTypeFilename"/>
|
||||||
|
@ -39,10 +43,6 @@
|
||||||
<property name="allowByTailComment" value="true"/>
|
<property name="allowByTailComment" value="true"/>
|
||||||
<property name="allowNonPrintableEscapes" value="true"/>
|
<property name="allowNonPrintableEscapes" value="true"/>
|
||||||
</module>
|
</module>
|
||||||
<module name="LineLength">
|
|
||||||
<property name="max" value="100"/>
|
|
||||||
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
|
|
||||||
</module>
|
|
||||||
<module name="AvoidStarImport"/>
|
<module name="AvoidStarImport"/>
|
||||||
<module name="OneTopLevelClass"/>
|
<module name="OneTopLevelClass"/>
|
||||||
<module name="NoLineWrap"/>
|
<module name="NoLineWrap"/>
|
||||||
|
|
|
@ -3,48 +3,28 @@
|
||||||
# Specify a configuration file.
|
# Specify a configuration file.
|
||||||
#rcfile=
|
#rcfile=
|
||||||
|
|
||||||
# Python code to execute. Adds the analysis directory to the system path
|
# Python code to execute, usually for sys.path manipulation such as
|
||||||
# variable which is necessary to avoid ImportErrors in our website code.
|
# pygtk.require().
|
||||||
init-hook='import os, sys; cwd = os.getcwd(); analysis_path = os.path.join(cwd, 'server') if '/server/' not in cwd else cwd[0:cwd.index('/server/') + len('/server/') - 1]; sys.path.insert(0, analysis_path)'
|
# init-hook='import sys; import os; sys.path.append(os.path.abspath("."))'
|
||||||
|
init-hook='import sys; sys.path.append("."); sys.path.append("./server")'
|
||||||
|
|
||||||
|
# Profiled execution.
|
||||||
|
profile=no
|
||||||
|
|
||||||
# Add files or directories to the blacklist. They should be base names, not
|
# Add files or directories to the blacklist. They should be base names, not
|
||||||
# paths.
|
# paths.
|
||||||
ignore=CVS
|
ignore=CVS,.git
|
||||||
|
|
||||||
# Pickle collected data for later comparisons.
|
# Pickle collected data for later comparisons.
|
||||||
persistent=yes
|
persistent=no
|
||||||
|
|
||||||
# List of plugins (as comma separated values of python modules names) to load,
|
# List of plugins (as comma separated values of python modules names) to load,
|
||||||
# usually to register additional checkers.
|
# usually to register additional checkers.
|
||||||
load-plugins=
|
load-plugins=
|
||||||
|
|
||||||
# Use multiple processes to speed up Pylint.
|
|
||||||
jobs=1
|
|
||||||
|
|
||||||
# Allow loading of arbitrary C extensions. Extensions are imported into the
|
|
||||||
# active Python interpreter and may run arbitrary code.
|
|
||||||
unsafe-load-any-extension=no
|
|
||||||
|
|
||||||
# A comma-separated list of package or module names from where C extensions may
|
|
||||||
# be loaded. Extensions are loading into the active Python interpreter and may
|
|
||||||
# run arbitrary code
|
|
||||||
extension-pkg-whitelist=
|
|
||||||
|
|
||||||
# Allow optimization of some AST trees. This will activate a peephole AST
|
|
||||||
# optimizer, which will apply various small optimizations. For instance, it can
|
|
||||||
# be used to obtain the result of joining multiple strings with the addition
|
|
||||||
# operator. Joining a lot of strings can lead to a maximum recursion error in
|
|
||||||
# Pylint and this flag can prevent that. It has one side effect, the resulting
|
|
||||||
# AST will be different than the one from reality.
|
|
||||||
optimize-ast=no
|
|
||||||
|
|
||||||
|
|
||||||
[MESSAGES CONTROL]
|
[MESSAGES CONTROL]
|
||||||
|
|
||||||
# Only show warnings with the listed confidence levels. Leave empty to show
|
|
||||||
# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED
|
|
||||||
confidence=HIGH,INFERENCE_FAILURE,UNDEFINED
|
|
||||||
|
|
||||||
# Enable the message, report, category or checker with the given id(s). You can
|
# Enable the message, report, category or checker with the given id(s). You can
|
||||||
# either give multiple identifier separated by comma (,) or put this option
|
# either give multiple identifier separated by comma (,) or put this option
|
||||||
# multiple time. See also the "--disable" option for examples.
|
# multiple time. See also the "--disable" option for examples.
|
||||||
|
@ -59,6 +39,7 @@ confidence=HIGH,INFERENCE_FAILURE,UNDEFINED
|
||||||
# --enable=similarities". If you want to run only the classes checker, but have
|
# --enable=similarities". If you want to run only the classes checker, but have
|
||||||
# no Warning level messages displayed, use"--disable=all --enable=classes
|
# no Warning level messages displayed, use"--disable=all --enable=classes
|
||||||
# --disable=W"
|
# --disable=W"
|
||||||
|
# Custom setting
|
||||||
disable=import-star-module-level,old-octal-literal,oct-method,print-statement,unpacking-in-except,parameter-unpacking,backtick,old-raise-syntax,old-ne-operator,long-suffix,dict-view-method,dict-iter-method,metaclass-assignment,next-method-called,raising-string,indexing-exception,raw_input-builtin,long-builtin,file-builtin,execfile-builtin,coerce-builtin,cmp-builtin,buffer-builtin,basestring-builtin,apply-builtin,filter-builtin-not-iterating,using-cmp-argument,useless-suppression,range-builtin-not-iterating,suppressed-message,no-absolute-import,old-division,cmp-method,reload-builtin,zip-builtin-not-iterating,intern-builtin,unichr-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,input-builtin,round-builtin,hex-method,nonzero-method,map-builtin-not-iterating,missing-docstring,too-few-public-methods,too-many-arguments,too-many-locals,too-many-instance-attributes,too-many-statements,locally-disabled,superfluous-parens,too-many-branches,not-callable,too-many-nested-blocks,fixme,redefined-variable-type,no-member,locally-enabled,too-many-public-methods
|
disable=import-star-module-level,old-octal-literal,oct-method,print-statement,unpacking-in-except,parameter-unpacking,backtick,old-raise-syntax,old-ne-operator,long-suffix,dict-view-method,dict-iter-method,metaclass-assignment,next-method-called,raising-string,indexing-exception,raw_input-builtin,long-builtin,file-builtin,execfile-builtin,coerce-builtin,cmp-builtin,buffer-builtin,basestring-builtin,apply-builtin,filter-builtin-not-iterating,using-cmp-argument,useless-suppression,range-builtin-not-iterating,suppressed-message,no-absolute-import,old-division,cmp-method,reload-builtin,zip-builtin-not-iterating,intern-builtin,unichr-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,input-builtin,round-builtin,hex-method,nonzero-method,map-builtin-not-iterating,missing-docstring,too-few-public-methods,too-many-arguments,too-many-locals,too-many-instance-attributes,too-many-statements,locally-disabled,superfluous-parens,too-many-branches,not-callable,too-many-nested-blocks,fixme,redefined-variable-type,no-member,locally-enabled,too-many-public-methods
|
||||||
|
|
||||||
|
|
||||||
|
@ -84,11 +65,33 @@ reports=no
|
||||||
# (RP0004).
|
# (RP0004).
|
||||||
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
|
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
|
||||||
|
|
||||||
|
# Add a comment according to your evaluation note. This is used by the global
|
||||||
|
# evaluation report (RP0004).
|
||||||
|
comment=no
|
||||||
|
|
||||||
# Template used to display messages. This is a python new-style format string
|
# Template used to display messages. This is a python new-style format string
|
||||||
# used to format the message information. See doc for all details
|
# used to format the massage information. See doc for all details
|
||||||
#msg-template=
|
#msg-template=
|
||||||
|
|
||||||
|
|
||||||
|
[FORMAT]
|
||||||
|
|
||||||
|
# Maximum number of characters on a single line.
|
||||||
|
max-line-length=100
|
||||||
|
|
||||||
|
# Regexp for a line that is allowed to be longer than the limit.
|
||||||
|
# We also allow declaration of url in string to be longer as it is useful for
|
||||||
|
# automatic linking.
|
||||||
|
ignore-long-lines=^\s*(# )?<?https?://\S+>?$|'https?://\S+'$
|
||||||
|
|
||||||
|
# Maximum number of lines in a module
|
||||||
|
max-module-lines=2000
|
||||||
|
|
||||||
|
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
|
||||||
|
# tab).
|
||||||
|
indent-string=' '
|
||||||
|
|
||||||
|
|
||||||
[SIMILARITIES]
|
[SIMILARITIES]
|
||||||
|
|
||||||
# Minimum lines number of a similarity.
|
# Minimum lines number of a similarity.
|
||||||
|
@ -112,43 +115,21 @@ ignore-mixin-members=yes
|
||||||
|
|
||||||
# List of module names for which member attributes should not be checked
|
# List of module names for which member attributes should not be checked
|
||||||
# (useful for modules/projects where namespaces are manipulated during runtime
|
# (useful for modules/projects where namespaces are manipulated during runtime
|
||||||
# and thus existing member attributes cannot be deduced by static analysis. It
|
# and thus existing member attributes cannot be deduced by static analysis
|
||||||
# supports qualified module names, as well as Unix pattern matching.
|
ignored-modules=numpy
|
||||||
ignored-modules=
|
|
||||||
|
|
||||||
# List of classes names for which member attributes should not be checked
|
# List of classes names for which member attributes should not be checked
|
||||||
# (useful for classes with attributes dynamically set). This supports can work
|
# (useful for classes with attributes dynamically set).
|
||||||
# with qualified names.
|
ignored-classes=SQLObject,pytest
|
||||||
ignored-classes=
|
|
||||||
|
# When zope mode is activated, add a predefined set of Zope acquired attributes
|
||||||
|
# to generated-members.
|
||||||
|
zope=no
|
||||||
|
|
||||||
# List of members which are set dynamically and missed by pylint inference
|
# List of members which are set dynamically and missed by pylint inference
|
||||||
# system, and so shouldn't trigger E1101 when accessed. Python regular
|
# system, and so shouldn't trigger E0201 when accessed. Python regular
|
||||||
# expressions are accepted.
|
# expressions are accepted.
|
||||||
generated-members=
|
generated-members=REQUEST,acl_users,aq_parent
|
||||||
|
|
||||||
|
|
||||||
[LOGGING]
|
|
||||||
|
|
||||||
# Logging modules to check that the string format arguments are in logging
|
|
||||||
# function parameter format
|
|
||||||
logging-modules=logging
|
|
||||||
|
|
||||||
|
|
||||||
[SPELLING]
|
|
||||||
|
|
||||||
# Spelling dictionary name. Available dictionaries: none. To make it working
|
|
||||||
# install python-enchant package.
|
|
||||||
spelling-dict=
|
|
||||||
|
|
||||||
# List of comma separated words that should not be checked.
|
|
||||||
spelling-ignore-words=
|
|
||||||
|
|
||||||
# A path to a file that contains private dictionary; one word per line.
|
|
||||||
spelling-private-dict-file=
|
|
||||||
|
|
||||||
# Tells whether to store unknown words to indicated private dictionary in
|
|
||||||
# --spelling-private-dict-file option instead of raising a message.
|
|
||||||
spelling-store-unknown-words=no
|
|
||||||
|
|
||||||
|
|
||||||
[VARIABLES]
|
[VARIABLES]
|
||||||
|
@ -156,49 +137,71 @@ spelling-store-unknown-words=no
|
||||||
# Tells whether we should check for unused import in __init__ files.
|
# Tells whether we should check for unused import in __init__ files.
|
||||||
init-import=no
|
init-import=no
|
||||||
|
|
||||||
# A regular expression matching the name of dummy variables (i.e. expectedly
|
# A regular expression matching the beginning of the name of dummy variables
|
||||||
# not used).
|
# (i.e. not used).
|
||||||
dummy-variables-rgx=_$|dummy
|
dummy-variables-rgx=_$|dummy|unused_
|
||||||
|
|
||||||
# List of additional names supposed to be defined in builtins. Remember that
|
# List of additional names supposed to be defined in builtins. Remember that
|
||||||
# you should avoid to define new builtins when possible.
|
# you should avoid to define new builtins when possible.
|
||||||
additional-builtins=
|
additional-builtins=
|
||||||
|
|
||||||
# List of strings which can identify a callback function by name. A callback
|
|
||||||
# name must start or end with one of those strings.
|
|
||||||
callbacks=cb_,_cb
|
|
||||||
|
|
||||||
|
[BASIC]
|
||||||
|
|
||||||
[FORMAT]
|
# Required attributes for module, separated by a comma
|
||||||
|
required-attributes=
|
||||||
|
|
||||||
# Maximum number of characters on a single line.
|
# List of builtins function names that should not be used, separated by a comma
|
||||||
max-line-length=100
|
bad-functions=filter,apply,input
|
||||||
|
|
||||||
# Regexp for a line that is allowed to be longer than the limit.
|
# Regular expression which should only match correct module names
|
||||||
ignore-long-lines=^\s*(# )?<?https?://\S+>?$
|
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
|
||||||
|
|
||||||
# Allow the body of an if to be on the same line as the test if there is no
|
# Regular expression which should only match correct module level names
|
||||||
# else.
|
const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__)|logger)$
|
||||||
single-line-if-stmt=no
|
|
||||||
|
|
||||||
# List of optional constructs for which whitespace checking is disabled. `dict-
|
# Regular expression which should only match correct class names
|
||||||
# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
|
class-rgx=[A-Z_][a-zA-Z0-9]+$
|
||||||
# `trailing-comma` allows a space between comma and closing bracket: (a, ).
|
|
||||||
# `empty-line` allows space-only lines.
|
|
||||||
no-space-check=trailing-comma,dict-separator
|
|
||||||
|
|
||||||
# Maximum number of lines in a module
|
# Regular expression which should only match correct function names
|
||||||
max-module-lines=1000
|
function-rgx=[a-z_][a-z0-9_]{2,30}$|test_[a-z0-9_]{2,50}$
|
||||||
|
|
||||||
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
|
# Regular expression which should only match correct method names
|
||||||
# tab).
|
method-rgx=[a-z_][a-z0-9_]{2,30}$|test_[a-z0-9_]{2,50}$
|
||||||
indent-string=' '
|
|
||||||
|
|
||||||
# Number of spaces of indent required inside a hanging or continued line.
|
# Regular expression which should only match correct instance attribute names
|
||||||
indent-after-paren=4
|
# attr-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||||
|
# Custom setting
|
||||||
|
attr-rgx=(([a-z_][a-z0-9_]{1,30})|([XK][a-z0-9_]{0,30}))$
|
||||||
|
|
||||||
# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
|
# Regular expression which should only match correct argument names
|
||||||
expected-line-ending-format=
|
argument-rgx=[a-zX_][a-z0-9_]{0,30}$
|
||||||
|
|
||||||
|
# Regular expression which should only match correct variable names
|
||||||
|
variable-rgx=[a-zX_][a-z0-9_]{0,30}$
|
||||||
|
|
||||||
|
# Regular expression which should only match correct attribute names in class
|
||||||
|
# bodies
|
||||||
|
class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
|
||||||
|
|
||||||
|
# Regular expression which should only match correct list comprehension /
|
||||||
|
# generator expression variable names
|
||||||
|
inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
|
||||||
|
|
||||||
|
# Good variable names which should always be accepted, separated by a comma
|
||||||
|
# Custom setting
|
||||||
|
good-names=f,i,j,k,ex,Run,_,mu,y
|
||||||
|
|
||||||
|
# Bad variable names which should always be refused, separated by a comma
|
||||||
|
bad-names=foo,bar,baz,toto,tutu,tata
|
||||||
|
|
||||||
|
# Regular expression which should only match function or class names that do
|
||||||
|
# not require a docstring.
|
||||||
|
no-docstring-rgx=__.*__|.*Test|test_.*|_.*
|
||||||
|
|
||||||
|
# Minimum line length for functions/classes that require docstrings, shorter
|
||||||
|
# ones are exempt.
|
||||||
|
docstring-min-length=-1
|
||||||
|
|
||||||
|
|
||||||
[MISCELLANEOUS]
|
[MISCELLANEOUS]
|
||||||
|
@ -207,101 +210,12 @@ expected-line-ending-format=
|
||||||
notes=FIXME,XXX,TODO
|
notes=FIXME,XXX,TODO
|
||||||
|
|
||||||
|
|
||||||
[BASIC]
|
|
||||||
|
|
||||||
# List of builtins function names that should not be used, separated by a comma
|
|
||||||
bad-functions=map,filter,input
|
|
||||||
|
|
||||||
# Good variable names which should always be accepted, separated by a comma
|
|
||||||
good-names=ex,Run,_,mu,y
|
|
||||||
|
|
||||||
# Bad variable names which should always be refused, separated by a comma
|
|
||||||
bad-names=foo,bar,baz,toto,tutu,tata
|
|
||||||
|
|
||||||
# Colon-delimited sets of names that determine each other's naming style when
|
|
||||||
# the name regexes allow several styles.
|
|
||||||
name-group=
|
|
||||||
|
|
||||||
# Include a hint for the correct naming format with invalid-name
|
|
||||||
include-naming-hint=no
|
|
||||||
|
|
||||||
# Regular expression matching correct function names
|
|
||||||
function-rgx=[a-z_][a-z0-9_]{2,30}$
|
|
||||||
|
|
||||||
# Naming hint for function names
|
|
||||||
function-name-hint=[a-z_][a-z0-9_]{2,30}$
|
|
||||||
|
|
||||||
# Regular expression matching correct variable names
|
|
||||||
variable-rgx=(([a-z_][a-z0-9_]{0,30})|([XK][a-z0-9_]{0,30}))$
|
|
||||||
|
|
||||||
# Naming hint for variable names
|
|
||||||
variable-name-hint=[a-z_][a-z0-9_]{0,30}$
|
|
||||||
|
|
||||||
# Regular expression matching correct constant names
|
|
||||||
const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
|
|
||||||
|
|
||||||
# Naming hint for constant names
|
|
||||||
const-name-hint=(([A-Z_][A-Z0-9_]*)|(__.*__))$
|
|
||||||
|
|
||||||
# Regular expression matching correct attribute names
|
|
||||||
attr-rgx=(([a-z_][a-z0-9_]{1,30})|([XK][a-z0-9_]{0,30}))$
|
|
||||||
|
|
||||||
# Naming hint for attribute names
|
|
||||||
attr-name-hint=[a-z_][a-z0-9_]{1,30}$
|
|
||||||
|
|
||||||
# Regular expression matching correct argument names
|
|
||||||
argument-rgx=(([a-z_][a-z0-9_]{0,30})|([XK][a-z0-9_]{0,30}))$
|
|
||||||
|
|
||||||
# Naming hint for argument names
|
|
||||||
argument-name-hint=[a-z_][a-z0-9_]{2,30}$
|
|
||||||
|
|
||||||
# Regular expression matching correct class attribute names
|
|
||||||
class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
|
|
||||||
|
|
||||||
# Naming hint for class attribute names
|
|
||||||
class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
|
|
||||||
|
|
||||||
# Regular expression matching correct inline iteration names
|
|
||||||
inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
|
|
||||||
|
|
||||||
# Naming hint for inline iteration names
|
|
||||||
inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$
|
|
||||||
|
|
||||||
# Regular expression matching correct class names
|
|
||||||
class-rgx=[A-Z_][a-zA-Z0-9]+$
|
|
||||||
|
|
||||||
# Naming hint for class names
|
|
||||||
class-name-hint=[A-Z_][a-zA-Z0-9]+$
|
|
||||||
|
|
||||||
# Regular expression matching correct module names
|
|
||||||
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
|
|
||||||
|
|
||||||
# Naming hint for module names
|
|
||||||
module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
|
|
||||||
|
|
||||||
# Regular expression matching correct method names
|
|
||||||
method-rgx=[a-z_][a-z0-9_]{2,30}$
|
|
||||||
|
|
||||||
# Naming hint for method names
|
|
||||||
method-name-hint=[a-z_][a-z0-9_]{2,30}$
|
|
||||||
|
|
||||||
# Regular expression which should only match function or class names that do
|
|
||||||
# not require a docstring.
|
|
||||||
no-docstring-rgx=^_
|
|
||||||
|
|
||||||
# Minimum line length for functions/classes that require docstrings, shorter
|
|
||||||
# ones are exempt.
|
|
||||||
docstring-min-length=-1
|
|
||||||
|
|
||||||
|
|
||||||
[ELIF]
|
|
||||||
|
|
||||||
# Maximum number of nested blocks for function / method body
|
|
||||||
max-nested-blocks=5
|
|
||||||
|
|
||||||
|
|
||||||
[CLASSES]
|
[CLASSES]
|
||||||
|
|
||||||
|
# List of interface methods to ignore, separated by a comma. This is used for
|
||||||
|
# instance to not check methods defines in Zope's Interface base class.
|
||||||
|
ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by
|
||||||
|
|
||||||
# List of method names used to declare (i.e. assign) instance attributes.
|
# List of method names used to declare (i.e. assign) instance attributes.
|
||||||
defining-attr-methods=__init__,__new__,setUp
|
defining-attr-methods=__init__,__new__,setUp
|
||||||
|
|
||||||
|
@ -311,10 +225,6 @@ valid-classmethod-first-arg=cls
|
||||||
# List of valid names for the first argument in a metaclass class method.
|
# List of valid names for the first argument in a metaclass class method.
|
||||||
valid-metaclass-classmethod-first-arg=mcs
|
valid-metaclass-classmethod-first-arg=mcs
|
||||||
|
|
||||||
# List of member names, which should be excluded from the protected access
|
|
||||||
# warning.
|
|
||||||
exclude-protected=_asdict,_fields,_replace,_source,_make
|
|
||||||
|
|
||||||
|
|
||||||
[IMPORTS]
|
[IMPORTS]
|
||||||
|
|
||||||
|
@ -337,7 +247,7 @@ int-import-graph=
|
||||||
[DESIGN]
|
[DESIGN]
|
||||||
|
|
||||||
# Maximum number of arguments for function / method
|
# Maximum number of arguments for function / method
|
||||||
max-args=5
|
max-args=8
|
||||||
|
|
||||||
# Argument names that match this expression will be ignored. Default to name
|
# Argument names that match this expression will be ignored. Default to name
|
||||||
# with leading underscore
|
# with leading underscore
|
||||||
|
@ -350,7 +260,7 @@ max-locals=15
|
||||||
max-returns=6
|
max-returns=6
|
||||||
|
|
||||||
# Maximum number of branch for function / method body
|
# Maximum number of branch for function / method body
|
||||||
max-branches=12
|
max-branches=18
|
||||||
|
|
||||||
# Maximum number of statements in function / method body
|
# Maximum number of statements in function / method body
|
||||||
max-statements=50
|
max-statements=50
|
||||||
|
@ -359,17 +269,14 @@ max-statements=50
|
||||||
max-parents=7
|
max-parents=7
|
||||||
|
|
||||||
# Maximum number of attributes for a class (see R0902).
|
# Maximum number of attributes for a class (see R0902).
|
||||||
max-attributes=7
|
max-attributes=15
|
||||||
|
|
||||||
# Minimum number of public methods for a class (see R0903).
|
# Minimum number of public methods for a class (see R0903).
|
||||||
min-public-methods=2
|
min-public-methods=1
|
||||||
|
|
||||||
# Maximum number of public methods for a class (see R0904).
|
# Maximum number of public methods for a class (see R0904).
|
||||||
max-public-methods=20
|
max-public-methods=20
|
||||||
|
|
||||||
# Maximum number of boolean expressions in a if statement
|
|
||||||
max-bool-expr=5
|
|
||||||
|
|
||||||
|
|
||||||
[EXCEPTIONS]
|
[EXCEPTIONS]
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import autopep8
|
import autopep8
|
||||||
|
from fabric.api import local
|
||||||
|
|
||||||
EXIT_SUCCESS = 0
|
EXIT_SUCCESS = 0
|
||||||
EXIT_FAILURE = -1
|
EXIT_FAILURE = -1
|
||||||
|
@ -44,8 +45,10 @@ OTTERTUNE_DIR = os.path.abspath(functools.reduce(os.path.join,
|
||||||
os.path.pardir,
|
os.path.pardir,
|
||||||
os.path.pardir]))
|
os.path.pardir]))
|
||||||
|
|
||||||
|
JAVA_JAR_VERSION = '1.5'
|
||||||
JAVA_JAR_PATH = os.path.join(
|
JAVA_JAR_PATH = os.path.join(
|
||||||
OTTERTUNE_DIR, 'controller/build/libs/google-java-format-1.5-all-deps.jar')
|
OTTERTUNE_DIR, 'script/formatting/config',
|
||||||
|
'google-java-format-{}-all-deps.jar'.format(JAVA_JAR_VERSION))
|
||||||
|
|
||||||
# ==============================================
|
# ==============================================
|
||||||
# FILE HEADER FORMATS
|
# FILE HEADER FORMATS
|
||||||
|
@ -113,9 +116,16 @@ def format_java_file(file_path, update_header, format_code):
|
||||||
|
|
||||||
if format_code:
|
if format_code:
|
||||||
if not os.path.exists(JAVA_JAR_PATH):
|
if not os.path.exists(JAVA_JAR_PATH):
|
||||||
controller_dir = os.path.join(OTTERTUNE_DIR, 'controller')
|
local((
|
||||||
subprocess.check_output(["gradle", "downloadJars"], cwd=controller_dir)
|
'wget https://github.com/google/google-java-format/'
|
||||||
subprocess.check_output(["java", "-jar", JAVA_JAR_PATH, "-r", file_path])
|
'releases/download/google-java-format-{0}/'
|
||||||
|
'google-java-format-{0}-all-deps.jar && '
|
||||||
|
'mv {1} {2}').format(
|
||||||
|
JAVA_JAR_VERSION,
|
||||||
|
os.path.basename(JAVA_JAR_PATH),
|
||||||
|
JAVA_JAR_PATH))
|
||||||
|
|
||||||
|
local('java -jar {} -r {}'.format(JAVA_JAR_PATH, file_path))
|
||||||
|
|
||||||
|
|
||||||
def format_python_file(file_path, update_header, format_code):
|
def format_python_file(file_path, update_header, format_code):
|
||||||
|
|
|
@ -79,9 +79,6 @@ EXCLUDE_FILES = [
|
||||||
os.path.join(OTTERTUNE_DIR, 'server/analysis/simulation.py'),
|
os.path.join(OTTERTUNE_DIR, 'server/analysis/simulation.py'),
|
||||||
]
|
]
|
||||||
|
|
||||||
CHECKSTYLE_JAR_PATH = os.path.join(OTTERTUNE_DIR,
|
|
||||||
"client/controller/build/libs/checkstyle-8.8-all.jar")
|
|
||||||
|
|
||||||
# Regex patterns
|
# Regex patterns
|
||||||
PYCODESTYLE_COMMENT_PATTERN = re.compile(r'#\s*pycodestyle:\s*disable\s*=\s*[\w\,\s]+$')
|
PYCODESTYLE_COMMENT_PATTERN = re.compile(r'#\s*pycodestyle:\s*disable\s*=\s*[\w\,\s]+$')
|
||||||
|
|
||||||
|
@ -326,14 +323,9 @@ def check_java_checkstyle(file_path, config_path=None):
|
||||||
if not file_path.endswith(".java"):
|
if not file_path.endswith(".java"):
|
||||||
return True, None
|
return True, None
|
||||||
|
|
||||||
if not os.path.exists(CHECKSTYLE_JAR_PATH):
|
|
||||||
with lcd(os.path.join(OTTERTUNE_DIR, "client/controller")): # pylint: disable=not-context-manager
|
|
||||||
local("gradle downloadJars")
|
|
||||||
|
|
||||||
options = '' if config_path is None else '-c ' + config_path
|
options = '' if config_path is None else '-c ' + config_path
|
||||||
with quiet():
|
with quiet():
|
||||||
res = local("java -jar {} {} {}".format(CHECKSTYLE_JAR_PATH, options, file_path),
|
res = local("checkstyle {} {}".format(options, file_path), capture=True)
|
||||||
capture=True)
|
|
||||||
lines = res.stdout.split('\n')
|
lines = res.stdout.split('\n')
|
||||||
assert len(lines) >= 2 and lines[0] == "Starting audit..." and lines[-1] == "Audit done."
|
assert len(lines) >= 2 and lines[0] == "Starting audit..." and lines[-1] == "Audit done."
|
||||||
if len(lines) == 2:
|
if len(lines) == 2:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
autopep8==1.3.4
|
autopep8==1.4.4
|
||||||
celery==3.1.23
|
celery==3.1.23
|
||||||
Django==1.11.23
|
Django==1.11.23
|
||||||
django-celery==3.2.1
|
django-celery==3.2.1
|
||||||
|
@ -7,13 +7,14 @@ django-db-logger>=0.1.7
|
||||||
django-request-logging==0.4.6
|
django-request-logging==0.4.6
|
||||||
mock==2.0.0
|
mock==2.0.0
|
||||||
Fabric3>=1.13.1.post1
|
Fabric3>=1.13.1.post1
|
||||||
|
git-lint==0.1.2
|
||||||
hurry.filesize>=0.9
|
hurry.filesize>=0.9
|
||||||
numpy==1.14.0
|
numpy==1.14.0
|
||||||
requests==2.20.0
|
requests==2.20.0
|
||||||
pycodestyle==2.3.1
|
pycodestyle==2.5.0
|
||||||
astroid==1.5.1
|
astroid==2.3.2
|
||||||
psycopg2-binary>=2.5.4
|
psycopg2-binary>=2.5.4
|
||||||
pylint==1.5.2
|
pylint==2.4.3
|
||||||
pyDOE>=0.3.8
|
pyDOE>=0.3.8
|
||||||
mysqlclient==1.3.12
|
mysqlclient==1.3.12
|
||||||
scikit-learn==0.19.1
|
scikit-learn==0.19.1
|
||||||
|
|
|
@ -39,7 +39,7 @@ class ProjectForm(forms.ModelForm):
|
||||||
self._errors['name'] = ["Project '{}' already exists.".format(new_name)]
|
self._errors['name'] = ["Project '{}' already exists.".format(new_name)]
|
||||||
return valid
|
return valid
|
||||||
|
|
||||||
class Meta: # pylint: disable=old-style-class,no-init
|
class Meta: # pylint: disable=no-init
|
||||||
model = Project
|
model = Project
|
||||||
|
|
||||||
fields = ['name', 'description']
|
fields = ['name', 'description']
|
||||||
|
@ -130,7 +130,7 @@ class SessionForm(forms.ModelForm):
|
||||||
|
|
||||||
return model
|
return model
|
||||||
|
|
||||||
class Meta: # pylint: disable=old-style-class,no-init
|
class Meta: # pylint: disable=no-init
|
||||||
model = Session
|
model = Session
|
||||||
|
|
||||||
fields = ('name', 'description', 'tuning_session', 'dbms', 'cpu', 'memory', 'storage',
|
fields = ('name', 'description', 'tuning_session', 'dbms', 'cpu', 'memory', 'storage',
|
||||||
|
@ -154,6 +154,6 @@ class SessionKnobForm(forms.ModelForm):
|
||||||
self.fields['knob'].required = False
|
self.fields['knob'].required = False
|
||||||
self.fields['name'].widget.attrs['readonly'] = True
|
self.fields['name'].widget.attrs['readonly'] = True
|
||||||
|
|
||||||
class Meta: # pylint: disable=old-style-class,no-init
|
class Meta: # pylint: disable=no-init
|
||||||
model = SessionKnob
|
model = SessionKnob
|
||||||
fields = ['session', 'knob', 'minval', 'maxval', 'tunable']
|
fields = ['session', 'knob', 'minval', 'maxval', 'tunable']
|
||||||
|
|
|
@ -43,7 +43,7 @@ class BaseModel(models.Model):
|
||||||
def _model_name(cls):
|
def _model_name(cls):
|
||||||
return cls.__name__
|
return cls.__name__
|
||||||
|
|
||||||
class Meta: # pylint: disable=old-style-class,no-init
|
class Meta: # pylint: disable=no-init
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ class Project(BaseModel):
|
||||||
x.delete()
|
x.delete()
|
||||||
super(Project, self).delete(using, keep_parents)
|
super(Project, self).delete(using, keep_parents)
|
||||||
|
|
||||||
class Meta: # pylint: disable=old-style-class,no-init
|
class Meta: # pylint: disable=no-init
|
||||||
unique_together = ('user', 'name')
|
unique_together = ('user', 'name')
|
||||||
|
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ class Hardware(BaseModel):
|
||||||
default=StorageType.SSD, verbose_name='Storage Type')
|
default=StorageType.SSD, verbose_name='Storage Type')
|
||||||
additional_specs = models.TextField(null=True, default=None)
|
additional_specs = models.TextField(null=True, default=None)
|
||||||
|
|
||||||
class Meta: # pylint: disable=old-style-class,no-init
|
class Meta: # pylint: disable=no-init
|
||||||
unique_together = ('cpu', 'memory', 'storage', 'storage_type')
|
unique_together = ('cpu', 'memory', 'storage', 'storage_type')
|
||||||
|
|
||||||
|
|
||||||
|
@ -176,7 +176,7 @@ class Session(BaseModel):
|
||||||
r.delete()
|
r.delete()
|
||||||
super(Session, self).delete(using=DEFAULT_DB_ALIAS, keep_parents=False)
|
super(Session, self).delete(using=DEFAULT_DB_ALIAS, keep_parents=False)
|
||||||
|
|
||||||
class Meta: # pylint: disable=old-style-class,no-init
|
class Meta: # pylint: disable=no-init
|
||||||
unique_together = ('user', 'project', 'name')
|
unique_together = ('user', 'project', 'name')
|
||||||
|
|
||||||
|
|
||||||
|
@ -243,7 +243,7 @@ class DataModel(BaseModel):
|
||||||
data = models.TextField()
|
data = models.TextField()
|
||||||
dbms = models.ForeignKey(DBMSCatalog)
|
dbms = models.ForeignKey(DBMSCatalog)
|
||||||
|
|
||||||
class Meta: # pylint: disable=old-style-class,no-init
|
class Meta: # pylint: disable=no-init
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
|
|
||||||
|
@ -334,7 +334,7 @@ class Workload(BaseModel):
|
||||||
x.delete()
|
x.delete()
|
||||||
super(Workload, self).delete(using, keep_parents)
|
super(Workload, self).delete(using, keep_parents)
|
||||||
|
|
||||||
class Meta: # pylint: disable=old-style-class,no-init
|
class Meta: # pylint: disable=no-init
|
||||||
unique_together = ("dbms", "hardware", "name")
|
unique_together = ("dbms", "hardware", "name")
|
||||||
|
|
||||||
# @property
|
# @property
|
||||||
|
@ -413,7 +413,7 @@ class PipelineRun(models.Model):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.__unicode__()
|
return self.__unicode__()
|
||||||
|
|
||||||
class Meta: # pylint: disable=old-style-class,no-init
|
class Meta: # pylint: disable=no-init
|
||||||
ordering = ["-id"]
|
ordering = ["-id"]
|
||||||
|
|
||||||
|
|
||||||
|
@ -424,7 +424,7 @@ class PipelineData(models.Model):
|
||||||
data = models.TextField()
|
data = models.TextField()
|
||||||
creation_time = models.DateTimeField()
|
creation_time = models.DateTimeField()
|
||||||
|
|
||||||
class Meta: # pylint: disable=old-style-class,no-init
|
class Meta: # pylint: disable=no-init
|
||||||
unique_together = ("pipeline_run", "task_type", "workload")
|
unique_together = ("pipeline_run", "task_type", "workload")
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue