1*4882a593Smuzhiyun#!/bin/bash 2*4882a593Smuzhiyun# (c) 2017, Jonathan Corbet <corbet@lwn.net> 3*4882a593Smuzhiyun# sayli karnik <karniksayli1995@gmail.com> 4*4882a593Smuzhiyun# 5*4882a593Smuzhiyun# This script detects files with kernel-doc comments for exported functions 6*4882a593Smuzhiyun# that are not included in documentation. 7*4882a593Smuzhiyun# 8*4882a593Smuzhiyun# usage: Run 'scripts/find-unused-docs.sh directory' from top level of kernel 9*4882a593Smuzhiyun# tree. 10*4882a593Smuzhiyun# 11*4882a593Smuzhiyun# example: $scripts/find-unused-docs.sh drivers/scsi 12*4882a593Smuzhiyun# 13*4882a593Smuzhiyun# Licensed under the terms of the GNU GPL License 14*4882a593Smuzhiyun 15*4882a593Smuzhiyunif ! [ -d "Documentation" ]; then 16*4882a593Smuzhiyun echo "Run from top level of kernel tree" 17*4882a593Smuzhiyun exit 1 18*4882a593Smuzhiyunfi 19*4882a593Smuzhiyun 20*4882a593Smuzhiyunif [ "$#" -ne 1 ]; then 21*4882a593Smuzhiyun echo "Usage: scripts/find-unused-docs.sh directory" 22*4882a593Smuzhiyun exit 1 23*4882a593Smuzhiyunfi 24*4882a593Smuzhiyun 25*4882a593Smuzhiyunif ! [ -d "$1" ]; then 26*4882a593Smuzhiyun echo "Directory $1 doesn't exist" 27*4882a593Smuzhiyun exit 1 28*4882a593Smuzhiyunfi 29*4882a593Smuzhiyun 30*4882a593Smuzhiyuncd "$( dirname "${BASH_SOURCE[0]}" )" 31*4882a593Smuzhiyuncd .. 32*4882a593Smuzhiyun 33*4882a593Smuzhiyuncd Documentation/ 34*4882a593Smuzhiyun 35*4882a593Smuzhiyunecho "The following files contain kerneldoc comments for exported functions \ 36*4882a593Smuzhiyunthat are not used in the formatted documentation" 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun# FILES INCLUDED 39*4882a593Smuzhiyun 40*4882a593Smuzhiyunfiles_included=($(grep -rHR ".. kernel-doc" --include \*.rst | cut -d " " -f 3)) 41*4882a593Smuzhiyun 42*4882a593Smuzhiyundeclare -A FILES_INCLUDED 43*4882a593Smuzhiyun 44*4882a593Smuzhiyunfor each in "${files_included[@]}"; do 45*4882a593Smuzhiyun FILES_INCLUDED[$each]="$each" 46*4882a593Smuzhiyun done 47*4882a593Smuzhiyun 48*4882a593Smuzhiyuncd .. 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun# FILES NOT INCLUDED 51*4882a593Smuzhiyun 52*4882a593Smuzhiyunfor file in `find $1 -name '*.c'`; do 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun if [[ ${FILES_INCLUDED[$file]+_} ]]; then 55*4882a593Smuzhiyun continue; 56*4882a593Smuzhiyun fi 57*4882a593Smuzhiyun str=$(scripts/kernel-doc -export "$file" 2>/dev/null) 58*4882a593Smuzhiyun if [[ -n "$str" ]]; then 59*4882a593Smuzhiyun echo "$file" 60*4882a593Smuzhiyun fi 61*4882a593Smuzhiyun done 62*4882a593Smuzhiyun 63