162306a36Sopenharmony_ci#!/bin/bash
262306a36Sopenharmony_ci# (c) 2017, Jonathan Corbet <corbet@lwn.net>
362306a36Sopenharmony_ci#           sayli karnik <karniksayli1995@gmail.com>
462306a36Sopenharmony_ci#
562306a36Sopenharmony_ci# This script detects files with kernel-doc comments for exported functions
662306a36Sopenharmony_ci# that are not included in documentation.
762306a36Sopenharmony_ci#
862306a36Sopenharmony_ci# usage: Run 'scripts/find-unused-docs.sh directory' from top level of kernel
962306a36Sopenharmony_ci# 	 tree.
1062306a36Sopenharmony_ci#
1162306a36Sopenharmony_ci# example: $scripts/find-unused-docs.sh drivers/scsi
1262306a36Sopenharmony_ci#
1362306a36Sopenharmony_ci# Licensed under the terms of the GNU GPL License
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciif ! [ -d "Documentation" ]; then
1662306a36Sopenharmony_ci	echo "Run from top level of kernel tree"
1762306a36Sopenharmony_ci	exit 1
1862306a36Sopenharmony_cifi
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciif [ "$#" -ne 1 ]; then
2162306a36Sopenharmony_ci	echo "Usage: scripts/find-unused-docs.sh directory"
2262306a36Sopenharmony_ci	exit 1
2362306a36Sopenharmony_cifi
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ciif ! [ -d "$1" ]; then
2662306a36Sopenharmony_ci	echo "Directory $1 doesn't exist"
2762306a36Sopenharmony_ci	exit 1
2862306a36Sopenharmony_cifi
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_cicd "$( dirname "${BASH_SOURCE[0]}" )"
3162306a36Sopenharmony_cicd ..
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_cicd Documentation/
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciecho "The following files contain kerneldoc comments for exported functions \
3662306a36Sopenharmony_cithat are not used in the formatted documentation"
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci# FILES INCLUDED
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_cifiles_included=($(grep -rHR ".. kernel-doc" --include \*.rst | cut -d " " -f 3))
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_cideclare -A FILES_INCLUDED
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_cifor each in "${files_included[@]}"; do
4562306a36Sopenharmony_ci	FILES_INCLUDED[$each]="$each"
4662306a36Sopenharmony_ci	done
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_cicd ..
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci# FILES NOT INCLUDED
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_cifor file in `find $1 -name '*.c'`; do
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci	if [[ ${FILES_INCLUDED[$file]+_} ]]; then
5562306a36Sopenharmony_ci	continue;
5662306a36Sopenharmony_ci	fi
5762306a36Sopenharmony_ci	str=$(scripts/kernel-doc -export "$file" 2>/dev/null)
5862306a36Sopenharmony_ci	if [[ -n "$str" ]]; then
5962306a36Sopenharmony_ci	echo "$file"
6062306a36Sopenharmony_ci	fi
6162306a36Sopenharmony_ci	done
6262306a36Sopenharmony_ci
63