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