18c2ecf20Sopenharmony_ci#!/bin/bash
28c2ecf20Sopenharmony_ci# (c) 2017, Jonathan Corbet <corbet@lwn.net>
38c2ecf20Sopenharmony_ci#           sayli karnik <karniksayli1995@gmail.com>
48c2ecf20Sopenharmony_ci#
58c2ecf20Sopenharmony_ci# This script detects files with kernel-doc comments for exported functions
68c2ecf20Sopenharmony_ci# that are not included in documentation.
78c2ecf20Sopenharmony_ci#
88c2ecf20Sopenharmony_ci# usage: Run 'scripts/find-unused-docs.sh directory' from top level of kernel
98c2ecf20Sopenharmony_ci# 	 tree.
108c2ecf20Sopenharmony_ci#
118c2ecf20Sopenharmony_ci# example: $scripts/find-unused-docs.sh drivers/scsi
128c2ecf20Sopenharmony_ci#
138c2ecf20Sopenharmony_ci# Licensed under the terms of the GNU GPL License
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ciif ! [ -d "Documentation" ]; then
168c2ecf20Sopenharmony_ci	echo "Run from top level of kernel tree"
178c2ecf20Sopenharmony_ci	exit 1
188c2ecf20Sopenharmony_cifi
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ciif [ "$#" -ne 1 ]; then
218c2ecf20Sopenharmony_ci	echo "Usage: scripts/find-unused-docs.sh directory"
228c2ecf20Sopenharmony_ci	exit 1
238c2ecf20Sopenharmony_cifi
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ciif ! [ -d "$1" ]; then
268c2ecf20Sopenharmony_ci	echo "Directory $1 doesn't exist"
278c2ecf20Sopenharmony_ci	exit 1
288c2ecf20Sopenharmony_cifi
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_cicd "$( dirname "${BASH_SOURCE[0]}" )"
318c2ecf20Sopenharmony_cicd ..
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_cicd Documentation/
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ciecho "The following files contain kerneldoc comments for exported functions \
368c2ecf20Sopenharmony_cithat are not used in the formatted documentation"
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci# FILES INCLUDED
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_cifiles_included=($(grep -rHR ".. kernel-doc" --include \*.rst | cut -d " " -f 3))
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_cideclare -A FILES_INCLUDED
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_cifor each in "${files_included[@]}"; do
458c2ecf20Sopenharmony_ci	FILES_INCLUDED[$each]="$each"
468c2ecf20Sopenharmony_ci	done
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_cicd ..
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ci# FILES NOT INCLUDED
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_cifor file in `find $1 -name '*.c'`; do
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ci	if [[ ${FILES_INCLUDED[$file]+_} ]]; then
558c2ecf20Sopenharmony_ci	continue;
568c2ecf20Sopenharmony_ci	fi
578c2ecf20Sopenharmony_ci	str=$(scripts/kernel-doc -export "$file" 2>/dev/null)
588c2ecf20Sopenharmony_ci	if [[ -n "$str" ]]; then
598c2ecf20Sopenharmony_ci	echo "$file"
608c2ecf20Sopenharmony_ci	fi
618c2ecf20Sopenharmony_ci	done
628c2ecf20Sopenharmony_ci
63