Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Paddle-Lite
提交
ab5a35c2
P
Paddle-Lite
项目概览
PaddlePaddle
/
Paddle-Lite
通知
331
Star
4
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
271
列表
看板
标记
里程碑
合并请求
78
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle-Lite
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
271
Issue
271
列表
看板
标记
里程碑
合并请求
78
合并请求
78
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
ab5a35c2
编写于
5月 18, 2018
作者:
朔-望
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add clang-tidy
上级
37c04470
变更
8
展开全部
隐藏空白更改
内联
并排
Showing
8 changed file
with
1043 addition
and
74 deletion
+1043
-74
.clang-tidy
.clang-tidy
+67
-55
.travis.yml
.travis.yml
+15
-8
.travis/pre-commit-job.sh
.travis/pre-commit-job.sh
+0
-0
build.sh
build.sh
+29
-1
cmake-build-release/compile_commands.json
cmake-build-release/compile_commands.json
+312
-0
compile_commands.json
compile_commands.json
+312
-0
tools/pre-commit.hooks/.clang-tidy.hook
tools/pre-commit.hooks/.clang-tidy.hook
+12
-10
tools/pre-commit.hooks/run-clang-tidy.py
tools/pre-commit.hooks/run-clang-tidy.py
+296
-0
未找到文件。
.clang-tidy
浏览文件 @
ab5a35c2
---
Checks: >
Checks:
*
'clang-diagnostic-*,clang-analyzer-*,-*,
-android-*
*
-bugprone-bool-pointer-implicit-conversion
-android-*
-cert-env33-c
-bugprone-bool-pointer-implicit-conversion
-cert-dcl50-cpp
-cert-env33-c
-cert-dcl59-cpp
-cert-dcl50-cpp
-cppcoreguidelines-*
-cert-dcl59-cpp
-fuchsia-*
-cppcoreguidelines-no-malloc
-google-*
-cppcoreguidelines-owning-memory
google-default-arguments
-cppcoreguidelines-pro-bounds-array-to-pointer-decay
google-explicit-constructor
-cppcoreguidelines-pro-bounds-constant-array-index
google-runtime-member-string-references
-cppcoreguidelines-pro-bounds-pointer-arithmetic
google-runtime-operator
-cppcoreguidelines-pro-type-const-cast
-hicpp-braces-around-statements
-cppcoreguidelines-pro-type-cstyle-cast
-hicpp-named-parameter
-cppcoreguidelines-pro-type-reinterpret-cast
-hicpp-no-array-decay
-cppcoreguidelines-pro-type-union-access
-hicpp-no-assembler
-cppcoreguidelines-pro-type-vararg
-hicpp-no-malloc
-cppcoreguidelines-special-member-functions
-hicpp-function-size
-fuchsia-*
-hicpp-special-member-functions
-google-*
-hicpp-vararg
google-default-arguments
-llvm-*
google-explicit-constructor
-objc-*
google-runtime-member-string-references
-readability-else-after-return
google-runtime-operator
-readability-implicit-bool-conversion
-hicpp-braces-around-statements
-readability-named-parameter
-hicpp-named-parameter
-readability-simplify-boolean-expr
-hicpp-no-array-decay
-readability-braces-around-statements
-hicpp-no-assembler
-readability-identifier-naming
-hicpp-no-malloc
-readability-function-size
-hicpp-function-size
-readability-redundant-member-init
-hicpp-special-member-functions
-misc-bool-pointer-implicit-conversion
-hicpp-vararg
-misc-definitions-in-headers
-llvm-*
-misc-unused-alias-decls
-objc-*
-misc-unused-parameters
-readability-else-after-return
-misc-unused-using-decls
-readability-implicit-bool-conversion
-modernize-use-using
-readability-named-parameter
-modernize-use-default-member-init
-readability-simplify-boolean-expr
-clang-diagnostic-*
-readability-braces-around-statements
-clang-analyzer-*
-readability-identifier-naming
WarningsAsErrors: ''
-readability-function-size
HeaderFilterRegex: ''
-readability-redundant-member-init
AnalyzeTemporaryDtors: false
-misc-bool-pointer-implicit-conversion
FormatStyle: none
-misc-definitions-in-headers
User: allonli
-misc-unused-alias-decls
CheckOptions:
-misc-unused-parameters
- key: google-readability-braces-around-statements.ShortStatementLines
-misc-unused-using-decls
value: '1'
-modernize-use-using
- key: google-readability-function-size.StatementThreshold
-modernize-use-default-member-init
value: '800'
-clang-diagnostic-*
- key: google-readability-namespace-comments.ShortNamespaceLines
-clang-analyzer-*'
value: '10'
...
- key: google-readability-namespace-comments.SpacesBeforeComments
value: '2'
- key: modernize-loop-convert.MaxCopySize
value: '16'
- key: modernize-loop-convert.MinConfidence
value: reasonable
- key: modernize-loop-convert.NamingStyle
value: CamelCase
- key: modernize-pass-by-value.IncludeStyle
value: llvm
- key: modernize-replace-auto-ptr.IncludeStyle
value: llvm
- key: modernize-use-nullptr.NullMacros
value: 'NULL'
.travis.yml
浏览文件 @
ab5a35c2
...
@@ -7,7 +7,6 @@ os:
...
@@ -7,7 +7,6 @@ os:
-
linux
-
linux
env
:
env
:
global
:
global
:
-
JOB=check_style
-
CMAKE_URL=https://cmake.org/files/v3.11/cmake-3.11.1-Linux-x86_64.tar.gz
-
CMAKE_URL=https://cmake.org/files/v3.11/cmake-3.11.1-Linux-x86_64.tar.gz
addons
:
addons
:
apt
:
apt
:
...
@@ -19,8 +18,11 @@ addons:
...
@@ -19,8 +18,11 @@ addons:
-
python
-
python
-
python-pip
-
python-pip
-
python2.7-dev
-
python2.7-dev
-
clang-6.0
-
libc6-i386
-
libc6-i386
-
clang-6.0
-
libclang-6.0
-
llvm-6.0
-
llvm-6.0-dev
-
curl
-
curl
compiler
:
compiler
:
...
@@ -37,16 +39,21 @@ before_install:
...
@@ -37,16 +39,21 @@ before_install:
export PATH=${DEPS_DIR}/cmake/bin:${PATH}
export PATH=${DEPS_DIR}/cmake/bin:${PATH}
fi
fi
install
:
#
install:
-
if [ "$CXX" = "g++" ]; then export CXX="g++-5" CC="gcc-5"; fi
#
- if [ "$CXX" = "g++" ]; then export CXX="g++-5" CC="gcc-5"; fi
-
if [ "$CXX" = "clang++" ]; then export CXX="clang++-6.0" CC="clang-6.0"; fi
#
- if [ "$CXX" = "clang++" ]; then export CXX="clang++-6.0" CC="clang-6.0"; fi
script
:
before_
script
:
-
|
-
|
echo "cmake generate compile_commands.json for clang-tidy"
ls -l -a
clang-tidy -version
clang-format -version
script
:
-
|
function timeout() { perl -e 'alarm shift; exec @ARGV' "$@"; }
function timeout() { perl -e 'alarm shift; exec @ARGV' "$@"; }
-
|
-
|
timeout 600 .travis/
${JOB}
.sh # 10min timeout
timeout 600 .travis/
pre-commit-job
.sh # 10min timeout
RESULT=$?; if [ $RESULT -eq 0 ] || [ $RESULT -eq 142 ]; then true; else exit 1; fi;
RESULT=$?; if [ $RESULT -eq 0 ] || [ $RESULT -eq 142 ]; then true; else exit 1; fi;
notifications
:
notifications
:
...
...
.travis/
check_style
.sh
→
.travis/
pre-commit-job
.sh
浏览文件 @
ab5a35c2
文件已移动
build.sh
浏览文件 @
ab5a35c2
#!/bin/bash
#!/bin/bash
build_for_linux
()
{
build_for_linux
()
{
echo
"linux"
if
[
!
`
which brew
`
]
;
then
echo
"building failed! homebrew not found, please install homebrew."
return
fi
if
[
!
`
which cmake
`
]
;
then
echo
"installing cmake."
brew
install
cmake
if
[
!
$?
]
;
then
echo
"cmake install failed."
return
fi
fi
PLATFORM
=
"x86"
MODE
=
"Release"
CXX_FLAGS
=
"-std=c++11 -O3 -s"
BUILD_DIR
=
build/release/
"
${
PLATFORM
}
"
mkdir
-p
${
BUILD_DIR
}
/build
mkdir
-p
${
BUILD_DIR
}
/test
cp
-r
test
/models
${
BUILD_DIR
}
/test/models
cmake
.
\
-B
"
${
BUILD_DIR
}
"
\
-DCMAKE_BUILD_TYPE
=
"
${
MODE
}
"
\
-DCMAKE_CXX_FLAGS
=
"
${
CXX_FLAGS
}
"
\
-DIS_MAC
=
true
cd
${
BUILD_DIR
}
make
-j
8
}
}
build_for_mac
()
{
build_for_mac
()
{
...
...
cmake-build-release/compile_commands.json
0 → 100644
浏览文件 @
ab5a35c2
此差异已折叠。
点击以展开。
compile_commands.json
0 → 100644
浏览文件 @
ab5a35c2
此差异已折叠。
点击以展开。
tools/pre-commit.hooks/.clang-tidy.hook
浏览文件 @
ab5a35c2
#!/bin/bash
#!/bin/bash
set
-e
echo
"allonli clang-tidy formating init"
echo
"allonli clang-tidy formating init"
clang-tidy
-checks
=
"-*,misc-unused-using-decls"
-fix
src/framework/data_type.h
--
TOTAL_ERRORS
=
0
cmake
-DCMAKE_EXPORT_COMPILE_COMMANDS
=
ON
clang-foramt
-version
clang-tidy
-version
python ./tools/pre-commit.hooks/run-clang-tidy.py
#TOTAL_ERRORS=0
# The trick to remove deleted files: https://stackoverflow.com/a/2413151
# The trick to remove deleted files: https://stackoverflow.com/a/2413151
for
file
in
$(
git diff
--cached
--name-status
|
awk
'$1 != "D" {print $2}'
|
grep
"src"
|
grep
-v
".pb."
)
;
do
#
for file in $(git diff --cached --name-status | awk '$1 != "D" {print $2}' | grep "src" | grep -v ".pb."); do
echo
"clang-tidy formating
$file
"
#
echo "clang-tidy formating $file"
clang-tidy
$file
#
clang-tidy $file
TOTAL_ERRORS
=
$(
expr
$TOTAL_ERRORS
+
$?
)
;
#
TOTAL_ERRORS=$(expr $TOTAL_ERRORS + $?);
done
#
done
#
exit
$TOTAL_ERRORS
#
exit $TOTAL_ERRORS
tools/pre-commit.hooks/run-clang-tidy.py
0 → 100755
浏览文件 @
ab5a35c2
#!/usr/bin/env python
#
#===- run-clang-tidy.py - Parallel clang-tidy runner ---------*- python -*--===#
#
# The LLVM Compiler Infrastructure
#
# This file is distributed under the University of Illinois Open Source
# License. See LICENSE.TXT for details.
#
#===------------------------------------------------------------------------===#
# FIXME: Integrate with clang-tidy-diff.py
"""
Parallel clang-tidy runner
==========================
Runs clang-tidy over all files in a compilation database. Requires clang-tidy
and clang-apply-replacements in $PATH.
Example invocations.
- Run clang-tidy on all files in the current working directory with a default
set of checks and show warnings in the cpp files and all project headers.
run-clang-tidy.py $PWD
- Fix all header guards.
run-clang-tidy.py -fix -checks=-*,llvm-header-guard
- Fix all header guards included from clang-tidy and header guards
for clang-tidy headers.
run-clang-tidy.py -fix -checks=-*,llvm-header-guard extra/clang-tidy
\
-header-filter=extra/clang-tidy
Compilation database setup:
http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html
"""
from
__future__
import
print_function
import
argparse
import
glob
import
json
import
multiprocessing
import
os
import
re
import
shutil
import
subprocess
import
sys
import
tempfile
import
threading
import
traceback
import
yaml
is_py2
=
sys
.
version
[
0
]
==
'2'
if
is_py2
:
import
Queue
as
queue
else
:
import
queue
as
queue
def
find_compilation_database
(
path
):
"""Adjusts the directory until a compilation database is found."""
result
=
'./'
while
not
os
.
path
.
isfile
(
os
.
path
.
join
(
result
,
path
)):
if
os
.
path
.
realpath
(
result
)
==
'/'
:
print
(
'Error: could not find compilation database.'
)
sys
.
exit
(
1
)
result
+=
'../'
return
os
.
path
.
realpath
(
result
)
def
make_absolute
(
f
,
directory
):
if
os
.
path
.
isabs
(
f
):
return
f
return
os
.
path
.
normpath
(
os
.
path
.
join
(
directory
,
f
))
def
get_tidy_invocation
(
f
,
clang_tidy_binary
,
checks
,
tmpdir
,
build_path
,
header_filter
,
extra_arg
,
extra_arg_before
,
quiet
):
"""Gets a command line for clang-tidy."""
start
=
[
clang_tidy_binary
]
if
header_filter
is
not
None
:
start
.
append
(
'-header-filter='
+
header_filter
)
else
:
# Show warnings in all in-project headers by default.
start
.
append
(
'-header-filter=^'
+
build_path
+
'/.*'
)
if
checks
:
start
.
append
(
'-checks='
+
checks
)
if
tmpdir
is
not
None
:
start
.
append
(
'-export-fixes'
)
# Get a temporary file. We immediately close the handle so clang-tidy can
# overwrite it.
(
handle
,
name
)
=
tempfile
.
mkstemp
(
suffix
=
'.yaml'
,
dir
=
tmpdir
)
os
.
close
(
handle
)
start
.
append
(
name
)
for
arg
in
extra_arg
:
start
.
append
(
'-extra-arg=%s'
%
arg
)
for
arg
in
extra_arg_before
:
start
.
append
(
'-extra-arg-before=%s'
%
arg
)
start
.
append
(
'-p='
+
build_path
)
if
quiet
:
start
.
append
(
'-quiet'
)
start
.
append
(
f
)
return
start
def
merge_replacement_files
(
tmpdir
,
mergefile
):
"""Merge all replacement files in a directory into a single file"""
# The fixes suggested by clang-tidy >= 4.0.0 are given under
# the top level key 'Diagnostics' in the output yaml files
mergekey
=
"Diagnostics"
merged
=
[]
for
replacefile
in
glob
.
iglob
(
os
.
path
.
join
(
tmpdir
,
'*.yaml'
)):
content
=
yaml
.
safe_load
(
open
(
replacefile
,
'r'
))
if
not
content
:
continue
# Skip empty files.
merged
.
extend
(
content
.
get
(
mergekey
,
[]))
if
merged
:
# MainSourceFile: The key is required by the definition inside
# include/clang/Tooling/ReplacementsYaml.h, but the value
# is actually never used inside clang-apply-replacements,
# so we set it to '' here.
output
=
{
'MainSourceFile'
:
''
,
mergekey
:
merged
}
with
open
(
mergefile
,
'w'
)
as
out
:
yaml
.
safe_dump
(
output
,
out
)
else
:
# Empty the file:
open
(
mergefile
,
'w'
).
close
()
def
check_clang_apply_replacements_binary
(
args
):
"""Checks if invoking supplied clang-apply-replacements binary works."""
try
:
subprocess
.
check_call
([
args
.
clang_apply_replacements_binary
,
'--version'
])
except
:
print
(
'Unable to run clang-apply-replacements. Is clang-apply-replacements '
'binary correctly specified?'
,
file
=
sys
.
stderr
)
traceback
.
print_exc
()
sys
.
exit
(
1
)
def
apply_fixes
(
args
,
tmpdir
):
"""Calls clang-apply-fixes on a given directory."""
invocation
=
[
args
.
clang_apply_replacements_binary
]
if
args
.
format
:
invocation
.
append
(
'-format'
)
if
args
.
style
:
invocation
.
append
(
'-style='
+
args
.
style
)
invocation
.
append
(
tmpdir
)
subprocess
.
call
(
invocation
)
def
run_tidy
(
args
,
tmpdir
,
build_path
,
queue
):
"""Takes filenames out of queue and runs clang-tidy on them."""
while
True
:
name
=
queue
.
get
()
invocation
=
get_tidy_invocation
(
name
,
args
.
clang_tidy_binary
,
args
.
checks
,
tmpdir
,
build_path
,
args
.
header_filter
,
args
.
extra_arg
,
args
.
extra_arg_before
,
args
.
quiet
)
sys
.
stdout
.
write
(
' '
.
join
(
invocation
)
+
'
\n
'
)
subprocess
.
call
(
invocation
)
queue
.
task_done
()
def
main
():
parser
=
argparse
.
ArgumentParser
(
description
=
'Runs clang-tidy over all files '
'in a compilation database. Requires '
'clang-tidy and clang-apply-replacements in '
'$PATH.'
)
parser
.
add_argument
(
'-clang-tidy-binary'
,
metavar
=
'PATH'
,
default
=
'clang-tidy'
,
help
=
'path to clang-tidy binary'
)
parser
.
add_argument
(
'-clang-apply-replacements-binary'
,
metavar
=
'PATH'
,
default
=
'clang-apply-replacements'
,
help
=
'path to clang-apply-replacements binary'
)
parser
.
add_argument
(
'-checks'
,
default
=
None
,
help
=
'checks filter, when not specified, use clang-tidy '
'default'
)
parser
.
add_argument
(
'-header-filter'
,
default
=
None
,
help
=
'regular expression matching the names of the '
'headers to output diagnostics from. Diagnostics from '
'the main file of each translation unit are always '
'displayed.'
)
parser
.
add_argument
(
'-export-fixes'
,
metavar
=
'filename'
,
dest
=
'export_fixes'
,
help
=
'Create a yaml file to store suggested fixes in, '
'which can be applied with clang-apply-replacements.'
)
parser
.
add_argument
(
'-j'
,
type
=
int
,
default
=
0
,
help
=
'number of tidy instances to be run in parallel.'
)
parser
.
add_argument
(
'files'
,
nargs
=
'*'
,
default
=
[
'.*'
],
help
=
'files to be processed (regex on path)'
)
parser
.
add_argument
(
'-fix'
,
action
=
'store_true'
,
help
=
'apply fix-its'
)
parser
.
add_argument
(
'-format'
,
action
=
'store_true'
,
help
=
'Reformat code '
'after applying fixes'
)
parser
.
add_argument
(
'-style'
,
default
=
'file'
,
help
=
'The style of reformat '
'code after applying fixes'
)
parser
.
add_argument
(
'-p'
,
dest
=
'build_path'
,
help
=
'Path used to read a compile command database.'
)
parser
.
add_argument
(
'-extra-arg'
,
dest
=
'extra_arg'
,
action
=
'append'
,
default
=
[],
help
=
'Additional argument to append to the compiler '
'command line.'
)
parser
.
add_argument
(
'-extra-arg-before'
,
dest
=
'extra_arg_before'
,
action
=
'append'
,
default
=
[],
help
=
'Additional argument to prepend to the compiler '
'command line.'
)
parser
.
add_argument
(
'-quiet'
,
action
=
'store_true'
,
help
=
'Run clang-tidy in quiet mode'
)
args
=
parser
.
parse_args
()
db_path
=
'compile_commands.json'
if
args
.
build_path
is
not
None
:
build_path
=
args
.
build_path
else
:
# Find our database
build_path
=
find_compilation_database
(
db_path
)
try
:
invocation
=
[
args
.
clang_tidy_binary
,
'-list-checks'
]
invocation
.
append
(
'-p='
+
build_path
)
if
args
.
checks
:
invocation
.
append
(
'-checks='
+
args
.
checks
)
invocation
.
append
(
'-'
)
subprocess
.
check_call
(
invocation
)
except
:
print
(
"Unable to run clang-tidy."
,
file
=
sys
.
stderr
)
sys
.
exit
(
1
)
# Load the database and extract all files.
database
=
json
.
load
(
open
(
os
.
path
.
join
(
build_path
,
db_path
)))
files
=
[
make_absolute
(
entry
[
'file'
],
entry
[
'directory'
])
for
entry
in
database
]
max_task
=
args
.
j
if
max_task
==
0
:
max_task
=
multiprocessing
.
cpu_count
()
tmpdir
=
None
if
args
.
fix
or
args
.
export_fixes
:
check_clang_apply_replacements_binary
(
args
)
tmpdir
=
tempfile
.
mkdtemp
()
# Build up a big regexy filter from all command line arguments.
file_name_re
=
re
.
compile
(
'|'
.
join
(
args
.
files
))
try
:
# Spin up a bunch of tidy-launching threads.
task_queue
=
queue
.
Queue
(
max_task
)
for
_
in
range
(
max_task
):
t
=
threading
.
Thread
(
target
=
run_tidy
,
args
=
(
args
,
tmpdir
,
build_path
,
task_queue
))
t
.
daemon
=
True
t
.
start
()
# Fill the queue with files.
for
name
in
files
:
if
file_name_re
.
search
(
name
):
task_queue
.
put
(
name
)
# Wait for all threads to be done.
task_queue
.
join
()
except
KeyboardInterrupt
:
# This is a sad hack. Unfortunately subprocess goes
# bonkers with ctrl-c and we start forking merrily.
print
(
'
\n
Ctrl-C detected, goodbye.'
)
if
tmpdir
:
shutil
.
rmtree
(
tmpdir
)
os
.
kill
(
0
,
9
)
return_code
=
0
if
args
.
export_fixes
:
print
(
'Writing fixes to '
+
args
.
export_fixes
+
' ...'
)
try
:
merge_replacement_files
(
tmpdir
,
args
.
export_fixes
)
except
:
print
(
'Error exporting fixes.
\n
'
,
file
=
sys
.
stderr
)
traceback
.
print_exc
()
return_code
=
1
if
args
.
fix
:
print
(
'Applying fixes ...'
)
try
:
apply_fixes
(
args
,
tmpdir
)
except
:
print
(
'Error applying fixes.
\n
'
,
file
=
sys
.
stderr
)
traceback
.
print_exc
()
return_code
=
1
if
tmpdir
:
shutil
.
rmtree
(
tmpdir
)
sys
.
exit
(
return_code
)
if
__name__
==
'__main__'
:
main
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录