xref: /openbmc/linux/scripts/find-unused-docs.sh (revision 1630146d)
145653c84Ssayli karnik#!/bin/bash
245653c84Ssayli karnik# (c) 2017, Jonathan Corbet <corbet@lwn.net>
345653c84Ssayli karnik#           sayli karnik <karniksayli1995@gmail.com>
445653c84Ssayli karnik#
545653c84Ssayli karnik# This script detects files with kernel-doc comments for exported functions
645653c84Ssayli karnik# that are not included in documentation.
745653c84Ssayli karnik#
845653c84Ssayli karnik# usage: Run 'scripts/find-unused-docs.sh directory' from top level of kernel
945653c84Ssayli karnik# 	 tree.
1045653c84Ssayli karnik#
1145653c84Ssayli karnik# example: $scripts/find-unused-docs.sh drivers/scsi
1245653c84Ssayli karnik#
1345653c84Ssayli karnik# Licensed under the terms of the GNU GPL License
1445653c84Ssayli karnik
1545653c84Ssayli karnikif ! [ -d "Documentation" ]; then
1645653c84Ssayli karnik	echo "Run from top level of kernel tree"
1745653c84Ssayli karnik	exit 1
1845653c84Ssayli karnikfi
1945653c84Ssayli karnik
2045653c84Ssayli karnikif [ "$#" -ne 1 ]; then
2145653c84Ssayli karnik	echo "Usage: scripts/find-unused-docs.sh directory"
2245653c84Ssayli karnik	exit 1
2345653c84Ssayli karnikfi
2445653c84Ssayli karnik
2545653c84Ssayli karnikif ! [ -d "$1" ]; then
2645653c84Ssayli karnik	echo "Directory $1 doesn't exist"
2745653c84Ssayli karnik	exit 1
2845653c84Ssayli karnikfi
2945653c84Ssayli karnik
3045653c84Ssayli karnikcd "$( dirname "${BASH_SOURCE[0]}" )"
3145653c84Ssayli karnikcd ..
3245653c84Ssayli karnik
3345653c84Ssayli karnikcd Documentation/
3445653c84Ssayli karnik
3545653c84Ssayli karnikecho "The following files contain kerneldoc comments for exported functions \
3645653c84Ssayli karnikthat are not used in the formatted documentation"
3745653c84Ssayli karnik
3845653c84Ssayli karnik# FILES INCLUDED
3945653c84Ssayli karnik
4045653c84Ssayli karnikfiles_included=($(grep -rHR ".. kernel-doc" --include \*.rst | cut -d " " -f 3))
4145653c84Ssayli karnik
4245653c84Ssayli karnikdeclare -A FILES_INCLUDED
4345653c84Ssayli karnik
4445653c84Ssayli karnikfor each in "${files_included[@]}"; do
4545653c84Ssayli karnik	FILES_INCLUDED[$each]="$each"
4645653c84Ssayli karnik	done
4745653c84Ssayli karnik
4845653c84Ssayli karnikcd ..
4945653c84Ssayli karnik
5045653c84Ssayli karnik# FILES NOT INCLUDED
5145653c84Ssayli karnik
5245653c84Ssayli karnikfor file in `find $1 -name '*.c'`; do
5345653c84Ssayli karnik
5445653c84Ssayli karnik	if [[ ${FILES_INCLUDED[$file]+_} ]]; then
5545653c84Ssayli karnik	continue;
5645653c84Ssayli karnik	fi
571630146dSGeert Uytterhoeven	str=$(scripts/kernel-doc -export "$file" 2>/dev/null)
5845653c84Ssayli karnik	if [[ -n "$str" ]]; then
5945653c84Ssayli karnik	echo "$file"
6045653c84Ssayli karnik	fi
6145653c84Ssayli karnik	done
6245653c84Ssayli karnik
63