mirror of
https://github.com/jerryscript-project/jerryscript.git
synced 2025-12-15 16:29:21 +00:00
Related issue: #900 JerryScript-DCO-1.0-Signed-off-by: László Langó llango.u-szeged@partner.samsung.com
128 lines
5.2 KiB
Tcl
128 lines
5.2 KiB
Tcl
#!/usr/bin/tclsh
|
|
|
|
# Copyright 2014-2016 Samsung Electronics Co., Ltd.
|
|
# Copyright 2016 University of Szeged.
|
|
#
|
|
# 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.
|
|
|
|
# Indentation
|
|
|
|
foreach fileName [getSourceFileNames] {
|
|
set indent 0
|
|
set lastCheckedLineNumber -1
|
|
set is_in_comment "no"
|
|
set is_in_pp_define "no"
|
|
set is_in_class "no"
|
|
set is_in_template "no"
|
|
set parentheses_level 0
|
|
set template_brackets_level 0
|
|
|
|
foreach token [getTokens $fileName 1 0 -1 -1 {}] {
|
|
set type [lindex $token 3]
|
|
set lineNumber [lindex $token 1]
|
|
|
|
if {$is_in_comment == "yes"} {
|
|
set is_in_comment "no"
|
|
}
|
|
|
|
if {$type == "newline"} {
|
|
set is_in_pp_define "no"
|
|
} elseif {$type == "class"} {
|
|
set is_in_class "yes"
|
|
} elseif {$type == "template"} {
|
|
set is_in_template "yes"
|
|
} elseif {$is_in_class == "yes" && $type == "semicolon" && $indent == 0} {
|
|
set is_in_class "no"
|
|
} elseif {$type == "ccomment"} {
|
|
set is_in_comment "yes"
|
|
} elseif {[string first "pp_" $type] == 0} {
|
|
if {$type == "pp_define"} {
|
|
set is_in_pp_define "yes"
|
|
}
|
|
|
|
set lastCheckedLineNumber $lineNumber
|
|
} elseif {$type == "space"} {
|
|
} elseif {$type != "eof"} {
|
|
if {$type == "rightbrace" && $indent > 0} {
|
|
incr indent -2
|
|
}
|
|
|
|
if {$is_in_pp_define == "no" && $is_in_comment == "no" && $parentheses_level == 0 &&
|
|
$is_in_template == "no"} {
|
|
set line [getLine $fileName $lineNumber]
|
|
|
|
if {$lineNumber != $lastCheckedLineNumber} {
|
|
if {[regexp {^[[:blank:]]*} $line match]} {
|
|
set real_indent [string length $match]
|
|
if {$indent != $real_indent} {
|
|
if {[regexp {^[[:blank:]]*(private:|public:|protected:)} $line]} {
|
|
if {$indent != $real_indent + 2} {
|
|
set exp_indent [expr {$indent - 2}]
|
|
report $fileName $lineNumber "Indentation: $real_indent -> $exp_indent. Line: '$line'"
|
|
}
|
|
} elseif {![regexp {^[[:alnum:]_]{1,}:$} $line] || $real_indent != 0} {
|
|
report $fileName $lineNumber "Indentation: $real_indent -> $indent. Line: '$line'"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if {$lineNumber == $lastCheckedLineNumber} {
|
|
if {$type == "leftbrace"} {
|
|
if {![regexp {^[[:blank:]]*\{[[:blank:]]*$} $line]
|
|
&& ![regexp {[^\{=]=[^\{=]\{.*\},?} $line]} {
|
|
report $fileName $lineNumber "Left brace is not the only non-space character in the line: '$line'"
|
|
}
|
|
}
|
|
if {$type == "rightbrace"} {
|
|
if {![regexp {^.* = .*\{.*\}[,;]?$} $line]
|
|
&& ![regexp {[^\{=]=[^\{=]\{.*\}[,;]?} $line]} {
|
|
report $fileName $lineNumber "Right brace is not first non-space character in the line: '$line'"
|
|
}
|
|
}
|
|
}
|
|
if {$type == "rightbrace"} {
|
|
if {![regexp {^[[:blank:]]*\};?((( [a-z_\(][a-z0-9_\(\)]{0,}){1,})?;| /\*.*\*/| //.*)?$} $line]
|
|
&& ![regexp {[^\{=]=[^\{=]\{.*\}[,;]?} $line]} {
|
|
report $fileName $lineNumber "Right brace is not the only non-space character in the line and \
|
|
is not single right brace followed by \[a-z0-9_() \] string and single semicolon character: '$line'"
|
|
}
|
|
}
|
|
}
|
|
|
|
if {$type == "leftbrace"} {
|
|
if {![regexp {^extern "C"} [getLine $fileName [expr {$lineNumber - 1}]]]} {
|
|
incr indent 2
|
|
}
|
|
} elseif {$type == "leftparen"} {
|
|
incr parentheses_level 1
|
|
} elseif {$type == "rightparen"} {
|
|
incr parentheses_level -1
|
|
}
|
|
|
|
if {$is_in_template == "yes"} {
|
|
if {$type == "less"} {
|
|
incr template_brackets_level
|
|
} elseif {$type == "greater"} {
|
|
incr template_brackets_level -1
|
|
if {$template_brackets_level == 0} {
|
|
set is_in_template "no"
|
|
}
|
|
}
|
|
}
|
|
|
|
set lastCheckedLineNumber $lineNumber
|
|
}
|
|
}
|
|
}
|