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