ANDROID社区
  • 源代码
  • 资讯
  • 技术文章
  • 代码片断
  • 工具
      
    • 我收藏的代码
    • 我读过的代码
    • 我收藏的文章
    • 退出登录
    注册 | 登录
Kernel  |  3.3

下载     查看原文件
  1. 根目录:
  2. scripts
  3. checkkconfigsymbols.sh
Bash程序  |  60行  |  1.82 KB
  • 原始内容
  • 高亮显示
  • 复制内容
#!/bin/sh
# Find Kconfig variables used in source code but never defined in Kconfig
# Copyright (C) 2007, Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>

# Tested with dash.
paths="$@"
[ -z "$paths" ] && paths=.

# Doing this once at the beginning saves a lot of time, on a cache-hot tree.
Kconfigs="`find . -name 'Kconfig' -o -name 'Kconfig*[^~]'`"

/bin/echo -e "File list \tundefined symbol used"
find $paths -name '*.[chS]' -o -name 'Makefile' -o -name 'Makefile*[^~]'| while read i
do
	# Output the bare Kconfig variable and the filename; the _MODULE part at
	# the end is not removed here (would need perl an not-hungry regexp for that).
	sed -ne 's!^.*\<\(UML_\)\?CONFIG_\([0-9A-Za-z_]\+\).*!\2 '$i'!p' < $i
done | \
# Smart "sort|uniq" implemented in awk and tuned to collect the names of all
# files which use a given symbol
awk '{map[$1, count[$1]++] = $2; }
END {
	for (combIdx in map) {
		split(combIdx, separate, SUBSEP);
		# The value may have been removed.
		if (! ( (separate[1], separate[2]) in map ) )
			continue;
		symb=separate[1];
		printf "%s ", symb;
		#Use gawk extension to delete the names vector
		delete names;
		#Portably delete the names vector
		#split("", names);
		for (i=0; i < count[symb]; i++) {
			names[map[symb, i]] = 1;
			# Unfortunately, we may still encounter symb, i in the
			# outside iteration.
			delete map[symb, i];
		}
		i=0;
		for (name in names) {
			if (i > 0)
				printf ", %s", name;
			else
				printf "%s", name;
			i++;
		}
		printf "\n";
	}
}' |
while read symb files; do
	# Remove the _MODULE suffix when checking the variable name. This should
	# be done only on tristate symbols, actually, but Kconfig parsing is
	# beyond the purpose of this script.
	symb_bare=`echo $symb | sed -e 's/_MODULE//'`
	if ! grep -q "\<$symb_bare\>" $Kconfigs; then
		/bin/echo -e "$files: \t$symb"
	fi
done|sort

网站相关

  • 关于我们 - 理想与情怀,使命与责任
  • 反馈建议或意见

常用链接

  • 土拨鼠 - 互联网工具小站
  • Android社区 - 汇集优秀技术文章
  • Flutter - 快速构建你的iOS && Android应用

关于

提供Android系统源代码在线阅读功能,同时我们采集了一些优秀的解读系统的文章并得到作者的援权发布。希望本站能成为您学习Android系统,进行Android开发的良师益友。

Copyright© 2013-2016 All Rights Reserved 京ICP备18004812号-1    京公网安备 11010502044971号