From de8ca92755ecbb9722ba9bbb42a05a9f2d4dd20b Mon Sep 17 00:00:00 2001 From: nisse Date: Mon, 23 Jan 2017 02:41:08 -0800 Subject: [PATCH] New script to count usage of C++ classes. This script is similar to header_usage.sh, but it counts usage (number of files) of each class defined in some header file. E.g., the following classes appear unused, AsyncHttpsProxyServerSocket CompositeMediaEngineWithFakeVoiceEngine DesktopId RtpDataCallback ScopedMessageData ScreencastEventCatcher NOTRY=true BUG=None Review-Url: https://codereview.webrtc.org/2649103002 Cr-Commit-Position: refs/heads/master@{#16204} --- webrtc/tools/class_usage.sh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100755 webrtc/tools/class_usage.sh diff --git a/webrtc/tools/class_usage.sh b/webrtc/tools/class_usage.sh new file mode 100755 index 0000000000..02b80c2599 --- /dev/null +++ b/webrtc/tools/class_usage.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. +# +# Use of this source code is governed by a BSD-style license +# that can be found in the LICENSE file in the root of the source +# tree. An additional intellectual property rights grant can be found +# in the file PATENTS. All contributing project authors may +# be found in the AUTHORS file in the root of the source tree. + +# This script is run in a git repository. It lists all classes defined +# in header files, sorted by the number of other files where the name +# of the class occurs. It is intentionally not limited to only source +# files. Classes close to the top of the list are candidates for +# removal. + +git grep -h '^class .*[:{]' -- '*.h' '*.hpp' \ + | sed -e 's/WEBRTC_DLL_EXPORT// ' -e 's/^class *\([^ :{(<]*\).*/\1/' \ + | sort | uniq | while read class ; do + count="$(git grep -l -w -F "${class}" | wc -l)" + echo "${count}" "${class}" +done | sort -n