Benoit Marty
1 year ago
committed by
GitHub
11 changed files with 235 additions and 31 deletions
@ -0,0 +1,55 @@
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env bash |
||||
|
||||
# |
||||
# Copyright 2023 New Vector Ltd |
||||
# |
||||
# 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. |
||||
# |
||||
|
||||
####################################################################################################################### |
||||
# Search forbidden pattern |
||||
####################################################################################################################### |
||||
|
||||
searchForbiddenStringsScript=./tmp/search_forbidden_strings.pl |
||||
|
||||
if [[ -f ${searchForbiddenStringsScript} ]]; then |
||||
echo "${searchForbiddenStringsScript} already there" |
||||
else |
||||
mkdir tmp |
||||
echo "Get the script" |
||||
wget https://raw.githubusercontent.com/matrix-org/matrix-dev-tools/develop/bin/search_forbidden_strings.pl -O ${searchForbiddenStringsScript} |
||||
fi |
||||
|
||||
if [[ -x ${searchForbiddenStringsScript} ]]; then |
||||
echo "${searchForbiddenStringsScript} is already executable" |
||||
else |
||||
echo "Make the script executable" |
||||
chmod u+x ${searchForbiddenStringsScript} |
||||
fi |
||||
|
||||
echo |
||||
echo "Search for forbidden patterns in code..." |
||||
|
||||
# list all Kotlin folders of the project. |
||||
allKotlinDirs=`find . -type d |grep -v build |grep -v \.git |grep -v \.gradle |grep kotlin$` |
||||
|
||||
${searchForbiddenStringsScript} ./tools/check/forbidden_strings_in_code.txt $allKotlinDirs |
||||
|
||||
resultForbiddenStringInCode=$? |
||||
|
||||
if [[ ${resultForbiddenStringInCode} -eq 0 ]]; then |
||||
echo "MAIN OK" |
||||
else |
||||
echo "❌ MAIN ERROR" |
||||
exit 1 |
||||
fi |
@ -0,0 +1,131 @@
@@ -0,0 +1,131 @@
|
||||
# |
||||
# Copyright 2023 New Vector Ltd |
||||
# |
||||
# 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. |
||||
# |
||||
|
||||
# This file list String which are not allowed in source code. |
||||
# Use Perl regex to write forbidden strings |
||||
# Note: line cannot start with a space. Use \s instead. |
||||
# It is possible to specify an authorized number of occurrence with === suffix. Default is 0 |
||||
# Example: |
||||
# AuthorizedStringThreeTimes===3 |
||||
|
||||
# Extension:kt |
||||
|
||||
### No import static: use full class name |
||||
import static |
||||
|
||||
### Rubbish from merge. Please delete those lines (sometimes in comment) |
||||
<<<<<<< |
||||
>>>>>>> |
||||
|
||||
### carry return before "}". Please remove empty lines. |
||||
\n\s*\n\s*\} |
||||
|
||||
### typo detected. |
||||
formated |
||||
abtract |
||||
Succes[^s] |
||||
succes[^s] |
||||
|
||||
### Use int instead of Integer |
||||
protected Integer |
||||
|
||||
### Use the interface declaration. Example: use type "Map" instead of type "HashMap" to declare variable or parameter. For Kotlin, use mapOf, setOf, ... |
||||
(private|public|protected| ) (static )?(final )?(HashMap|HashSet|ArrayList)< |
||||
|
||||
### Use int instead of short |
||||
Short\.parseShort |
||||
\(short\) |
||||
private short |
||||
final short |
||||
|
||||
### Line length is limited to 160 chars. Please split long lines |
||||
#[^─]{161} |
||||
|
||||
### "DO NOT COMMIT" has been committed |
||||
DO NOT COMMIT |
||||
|
||||
### invalid formatting |
||||
\s{8}/\*\n \* |
||||
# Now checked by ktlint |
||||
# [^\w]if\( |
||||
# while\( |
||||
# for\( |
||||
|
||||
# Add space after // |
||||
# DISABLED To re-enable when code will be formatted globally |
||||
#^\s*//[^\s] |
||||
|
||||
### invalid formatting (too many space char) |
||||
^ /\* |
||||
|
||||
### unnecessary parenthesis around numbers, example: " (0)" |
||||
\(\d+\) |
||||
|
||||
### import the package, do not use long class name with package |
||||
android\.os\.Build\. |
||||
|
||||
### Tab char is forbidden. Use only spaces |
||||
\t |
||||
|
||||
# Empty lines and trailing space |
||||
# DISABLED To re-enable when code will be formatted globally |
||||
#[ ]$ |
||||
|
||||
### Deprecated, use retrofit2.HttpException |
||||
import retrofit2\.adapter\.rxjava\.HttpException |
||||
|
||||
### This is generally not necessary, no need to reset the padding if there is no drawable |
||||
setCompoundDrawablePadding\(0\) |
||||
|
||||
# Change thread with Rx |
||||
# DISABLED |
||||
#runOnUiThread |
||||
|
||||
### Bad formatting of chain (missing new line) |
||||
\w\.flatMap\( |
||||
|
||||
### In Kotlin, Void has to be null safe, i.e. use 'Void?' instead of 'Void' |
||||
\: Void\) |
||||
|
||||
### Kotlin conversion tools introduce this, but is can be replace by trim() |
||||
trim \{ it \<\= \' \' \} |
||||
|
||||
### Put the operator at the beginning of next line |
||||
==$ |
||||
|
||||
### Use JsonUtils.getBasicGson() |
||||
new Gson\(\) |
||||
|
||||
### Use TextUtils.formatFileSize |
||||
Formatter\.formatFileSize===1 |
||||
|
||||
### Use TextUtils.formatFileSize with short format param to true |
||||
Formatter\.formatShortFileSize===1 |
||||
|
||||
### Use `Context#getSystemService` extension function provided by `core-ktx` |
||||
getSystemService\(Context |
||||
|
||||
### Use DefaultSharedPreferences.getInstance() instead for better performance |
||||
PreferenceManager\.getDefaultSharedPreferences==2 |
||||
|
||||
### Use the Clock interface, or use `measureTimeMillis` |
||||
System\.currentTimeMillis\(\)===1 |
||||
|
||||
### Remove extra space between the name and the description |
||||
\* @\w+ \w+ + |
||||
|
||||
### Suspicious String template. Please check that the string template will behave as expected, i.e. the class field and not the whole object will be used. For instance `Timber.d("$event.type")` is not correct, you should write `Timber.d("${event.type}")`. In the former the whole event content will be logged, since it's a data class. If this is expected (i.e. to fix false positive), please add explicit curly braces (`{` and `}`) around the variable, for instance `"elementLogs.${i}.txt"` |
||||
\$[a-zA-Z_]\w*\??\.[a-zA-Z_] |
Loading…
Reference in new issue