Skip to content

Commit

Permalink
Merge pull request apache#17 from javelinjs/scala-package-style-check
Browse files Browse the repository at this point in the history
Scala package style check
  • Loading branch information
yzhliu committed Dec 31, 2015
2 parents 621573d + ab87ca9 commit ce20e5a
Show file tree
Hide file tree
Showing 16 changed files with 334 additions and 159 deletions.
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ env:
#- TASK=python_test
#- TASK=r_test
- TASK=scala_test
- TASK=scala_lint

# TODO, R test, distributed test, clang, more g++ versions

Expand Down
148 changes: 148 additions & 0 deletions scala-package/core/scalastyle-config.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one or more
~ contributor license agreements. See the NOTICE file distributed with
~ this work for additional information regarding copyright ownership.
~ The ASF licenses this file to You 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.
-->
<!--
If you wish to turn off checking for a section of code, you can put a comment in the source
before and after the section, with the following syntax:
// scalastyle:off
... // stuff that breaks the styles
// scalastyle:on
You can also disable only one rule, by specifying its rule id, as specified in:
http://www.scalastyle.org/rules-0.7.0.html
// scalastyle:off println
println("I do want to print something here")
// scalastyle:on println
-->

<scalastyle>
<name>Scalastyle standard configuration</name>

<check level="error" class="org.scalastyle.file.FileTabChecker" enabled="true"></check>

<check level="error" class="org.scalastyle.scalariform.SpacesAfterPlusChecker" enabled="true"></check>

<check level="error" class="org.scalastyle.scalariform.SpacesBeforePlusChecker" enabled="true"></check>

<check level="error" class="org.scalastyle.file.WhitespaceEndOfLineChecker" enabled="true"></check>

<check level="error" class="org.scalastyle.file.FileLineLengthChecker" enabled="true">
<parameters>
<parameter name="maxLineLength"><![CDATA[100]]></parameter>
<parameter name="tabSize"><![CDATA[2]]></parameter>
<parameter name="ignoreImports">true</parameter>
</parameters>
</check>

<check level="error" class="org.scalastyle.scalariform.ClassNamesChecker" enabled="true">
<parameters><parameter name="regex"><![CDATA[[A-Z][A-Za-z]*]]></parameter></parameters>
</check>

<check level="error" class="org.scalastyle.scalariform.ObjectNamesChecker" enabled="true">
<parameters><parameter name="regex"><![CDATA[[A-Z][A-Za-z]*]]></parameter></parameters>
</check>

<check level="error" class="org.scalastyle.scalariform.PackageObjectNamesChecker" enabled="true">
<parameters><parameter name="regex"><![CDATA[^[a-z][A-Za-z]*$]]></parameter></parameters>
</check>

<check level="error" class="org.scalastyle.scalariform.ParameterNumberChecker" enabled="true">
<parameters><parameter name="maxParameters"><![CDATA[10]]></parameter></parameters>
</check>

<check customId="finalize" level="error" class="org.scalastyle.scalariform.NoFinalizeChecker" enabled="true">
<customMessage><![CDATA[Are you sure you want to implement finalize? If yes, wrap the class block with
// scalastyle:off finalize
class XXX {
...
}
// scalastyle:on finalize
]]></customMessage>
</check>

<check level="error" class="org.scalastyle.scalariform.CovariantEqualsChecker" enabled="true"></check>

<check level="error" class="org.scalastyle.scalariform.StructuralTypeChecker" enabled="true"></check>

<check level="error" class="org.scalastyle.scalariform.UppercaseLChecker" enabled="true"></check>

<check level="error" class="org.scalastyle.scalariform.IfBraceChecker" enabled="true">
<parameters>
<parameter name="singleLineAllowed"><![CDATA[true]]></parameter>
<parameter name="doubleLineAllowed"><![CDATA[true]]></parameter>
</parameters>
</check>

<check level="error" class="org.scalastyle.scalariform.PublicMethodsHaveTypeChecker" enabled="true"></check>

<check level="error" class="org.scalastyle.file.NewLineAtEofChecker" enabled="true"></check>

<check level="error" class="org.scalastyle.scalariform.NonASCIICharacterChecker" enabled="true"></check>

<check level="error" class="org.scalastyle.scalariform.SpaceAfterCommentStartChecker" enabled="true"></check>

<check level="error" class="org.scalastyle.scalariform.EnsureSingleSpaceBeforeTokenChecker" enabled="true">
<parameters>
<parameter name="tokens">ARROW, EQUALS, ELSE, TRY, CATCH, FINALLY, LARROW, RARROW</parameter>
</parameters>
</check>

<check level="error" class="org.scalastyle.scalariform.EnsureSingleSpaceAfterTokenChecker" enabled="true">
<parameters>
<parameter name="tokens">ARROW, EQUALS, COMMA, COLON, IF, ELSE, DO, WHILE, FOR, MATCH, TRY, CATCH, FINALLY, LARROW, RARROW</parameter>
</parameters>
</check>

<!-- We should enable this rule once the code base is stable enough -->
<check level="error" class="org.scalastyle.scalariform.NotImplementedErrorUsage" enabled="false"></check>

<!-- all printlns need to be wrapped in '// scalastyle:off/on println' -->
<check customId="println" level="error" class="org.scalastyle.scalariform.TokenChecker" enabled="true">
<parameters><parameter name="regex">^println$</parameter></parameters>
<customMessage><![CDATA[Are you sure you want to println? If yes, wrap the code block with
// scalastyle:off println
println(...)
// scalastyle:on println]]></customMessage>
</check>

<check customId="classforname" level="error" class="org.scalastyle.file.RegexChecker" enabled="true">
<parameters><parameter name="regex">Class\.forName</parameter></parameters>
<customMessage><![CDATA[
Are you sure that you want to use Class.forName? In most cases, you should use Utils.classForName instead.
If you must use Class.forName, wrap the code block with
// scalastyle:off classforname
Class.forName(...)
// scalastyle:on classforname
]]></customMessage>
</check>

<!-- JavaConversions should be replaced with JavaConverters -->
<check customId="javaconversions" level="error" class="org.scalastyle.scalariform.TokenChecker" enabled="true">
<parameters><parameter name="regex">JavaConversions</parameter></parameters>
<customMessage>Instead of importing implicits in scala.collection.JavaConversions._, import
scala.collection.JavaConverters._ and use .asScala / .asJava methods</customMessage>
</check>

<check level="error" class="org.scalastyle.scalariform.EqualsHashCodeChecker" enabled="true"></check>

<check level="error" class="org.scalastyle.scalariform.IllegalImportsChecker" enabled="true">
<parameters><parameter name="illegalImports"><![CDATA[sun._,java.awt._]]></parameter></parameters>
</check>

<!-- We can use return quite a bit for control flows and guards -->
<check level="warning" class="org.scalastyle.scalariform.ReturnChecker" enabled="true"></check>
</scalastyle>
9 changes: 0 additions & 9 deletions scala-package/core/src/main/resources/scalastyle_config.xml

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ class Accuracy extends EvalMetric("accuracy") {
val pred: NDArray = preds.slice(i, i)
val label: NDArray = labels.slice(i, i)

// require(label.shape(0) < predLabel.shape(0), "Should not have more predict labels than actual labels ")
// require(label.shape(0) < predLabel.shape(0),
// "Should not have more predict labels than actual labels ")
})
}
}
Expand Down
10 changes: 7 additions & 3 deletions scala-package/core/src/main/scala/ml/dmlc/mxnet/Executor.scala
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ object Executor {
* @param batchSize The number of samples in a mini-batch.
* @param workLoadList The list of work load for different devices, in the same order as ctx
* @return The split slices to get a specific slice.
* @throws IllegalArgumentException If there are two many splits such that some slice can be empty.
* @throws IllegalArgumentException
* If there are two many splits such that some slice can be empty.
*/
private def splitInputSlice[@specialized(Int, Float, Double) V]
(batchSize: Int, workLoadList: Array[V])
Expand Down Expand Up @@ -84,6 +85,7 @@ object Executor {
* @param symbol
* @see Symbol.bind : to create executor
*/
// scalastyle:off finalize
class Executor(val handle: ExecutorHandle, val symbol: Symbol) {
var argArrays: Array[NDArray] = null
protected var gradArrays: Array[NDArray] = null
Expand Down Expand Up @@ -131,7 +133,7 @@ class Executor(val handle: ExecutorHandle, val symbol: Symbol) {
* This parameter is only needed when bind is called
* on outputs that are not a loss function.
*/
def backward(outGrads: Array[NDArray]):Unit = {
def backward(outGrads: Array[NDArray]): Unit = {
require(outGrads != null)
val ndArrayPtrs = outGrads.map(_.handle.value)
checkCall(_LIB.mxExecutorBackward(handle, outGrads.length, ndArrayPtrs))
Expand Down Expand Up @@ -188,7 +190,8 @@ class Executor(val handle: ExecutorHandle, val symbol: Symbol) {
* Whether allow extra parameters that are not needed by symbol
* If this is True, no error will be thrown when arg_params or aux_params
* contain extra parameters that is not needed by the executor.
* @throws IllegalArgumentException If there is additional parameters in the dict but allow_extra_params=False
* @throws IllegalArgumentException
* If there is additional parameters in the dict but allow_extra_params=False
*/
def copyParamsFrom(argParams: Map[String, NDArray],
auxParams: Map[String, NDArray],
Expand Down Expand Up @@ -229,3 +232,4 @@ class Executor(val handle: ExecutorHandle, val symbol: Symbol) {
str.value
}
}
// scalastyle:on finalize
Loading

0 comments on commit ce20e5a

Please sign in to comment.