.\" Copyright (c) 2017, 2020, Oracle and/or its affiliates. All rights reserved. .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. .\" .\" This code is free software; you can redistribute it and/or modify it .\" under the terms of the GNU General Public License version 2 only, as .\" published by the Free Software Foundation. .\" .\" This code is distributed in the hope that it will be useful, but WITHOUT .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or .\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License .\" version 2 for more details (a copy is included in the LICENSE file that .\" accompanied this code). .\" .\" You should have received a copy of the GNU General Public License version .\" 2 along with this work; if not, write to the Free Software Foundation, .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. .\" .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA .\" or visit www.oracle.com if you need additional information or have any .\" questions. .\" .\" Automatically generated by Pandoc 2.3.1 .\" .TH "JDEPRSCAN" "1" "2021" "JDK 17" "JDK Commands" .hy .SH "نام (NAME)" .PP jdeprscan \- ابزار تحلیل ایستا برای بررسی و پویش استفاده از المان‌های منسوخ‌شده در کلاس‌های جاوا (نسخه ۱۷) .SH "خلاصه دستور (SYNOPSIS)" .PP \f[CB]jdeprscan\f[R] [\f[I]گزینه‌ها\f[R]] {\f[I]dir\f[R]|\f[I]jar\f[R]|\f[I]class\f[R]} .TP .B \f[I]گزینه‌ها\f[R] بخش \f[B]گزینه‌های دستور jdeprscan\f[R] را ببینید. .RS .RE .TP .B \f[I]dir\f[R]|\f[I]jar\f[R]|\f[I]class\f[R] دستور \f[CB]jdeprscan\f[R] هر آرگومان ورودی را برای یافتن موارد استفاده از APIهای منسوخ‌شده (\f[I]deprecated\f[R]) پویش می‌کند. آرگومان‌ها می‌توانند یکی از موارد زیر باشند: .RS .IP \[bu] 2 \f[I]dir\f[R]: دایرکتوری (پوشه) .IP \[bu] 2 \f[I]jar\f[R]: فایل JAR .IP \[bu] 2 \f[I]class\f[R]: نام کلاس یا فایل کلاس .PP نام کلاس باید از نقطه (\f[CB]\&.\f[R]) به عنوان جداکننده استفاده کند. به عنوان مثال: .PP \f[CB]java.lang.Thread\f[R] .PP برای کلاس‌های تو در تو (\f[I]nested classes\f[R])، باید از کاراکتر جداکننده علامت دلار \f[CB]$\f[R] استفاده شود. به عنوان مثال: .PP \f[CB]java.lang.Thread$State\f[R] .PP فایل کلاس نیز می‌تواند مستقیماً نام‌گذاری شود. به عنوان مثال: .PP \f[CB]build/classes/java/lang/Thread$State.class\f[R] .RE .SH "توضیحات (DESCRIPTION)" .PP ابزار \f[CB]jdeprscan\f[R] یک ابزار تحلیل ایستا ارائه شده توسط JDK است که یک فایل JAR یا مجموعه‌ای از فایل‌های کلاس را برای یافتن استفاده از المان‌های منسوخ‌شده API پویش می‌کند. APIهای منسوخ‌شده شناسایی‌شده توسط ابزار \f[CB]jdeprscan\f[R] فقط مواردی هستند که توسط جاوا SE تعریف شده‌اند. APIهای منسوخ‌شده که توسط کتابخانه‌های شخص ثالث (\f[I]third\-party\f[R]) تعریف شده‌اند گزارش نمی‌شوند. .PP برای پویش یک فایل JAR یا مجموعه‌ای از فایل‌های کلاس، ابتدا باید اطمینان حاصل کنید که تمام کلاس‌هایی که کلاس‌های مورد بررسی به آن‌ها وابسته هستند، در مسیر کلاس (\f[I]class path\f[R]) موجود باشند. مسیر کلاس را با استفاده از گزینه \f[CB]\-\-class\-path\f[R] که در بخش \f[B]گزینه‌های دستور jdeprscan\f[R] شرح داده شده است، تنظیم کنید. معمولاً از همان مسیر کلاسی استفاده می‌کنید که هنگام اجرای برنامه خود به کار می‌برید. .PP اگر \f[CB]jdeprscan\f[R] نتواند تمام کلاس‌های وابسته را پیدا کند، برای هر کلاسی که مفقود است یک پیام خطا تولید می‌کند. این پیام‌های خطا معمولاً به این شکل هستند: .RS .PP \f[CB]error:\ cannot\ find\ class\ ...\f[R] .RE .PP در صورت بروز این خطاها، باید مسیر کلاس را به گونه‌ای تنظیم کنید که شامل تمامی کلاس‌های وابسته باشد. .SH "گزینه‌های دستور JDEPRSCAN (OPTIONS FOR THE JDEPRSCAN COMMAND)" .PP گزینه‌های زیر در دسترس هستند: .TP .B \f[CB]\-\-class\-path\f[R] \f[I]path\f[R] مسیر جستجو را برای تفکیک و یافتن کلاس‌های وابسته فراهم می‌کند. .RS .PP مقدار \f[I]path\f[R] می‌تواند یک مسیر جستجو متشکل از یک یا چند دایرکتوری باشد که با جداکننده مسیر مخصوص سیستم‌عامل از یکدیگر جدا شده‌اند. به عنوان مثال: .IP \[bu] 2 \f[B]لینوکس و macOS:\f[R] .RS 2 .RS .PP \f[CB]\-\-class\-path\ /some/directory:/another/different/dir\f[R] .RE .RE .PP \f[B]نکته:\f[R] .PP در ویندوز، از نقطه ویرگول (\f[CB];\f[R]) به عنوان جداکننده به جای دو نقطه (\f[CB]:\f[R]) استفاده کنید. .IP \[bu] 2 \f[B]ویندوز:\f[R] .RS 2 .RS .PP \f[CB]\-\-class\-path\ \\some\\directory;\\another\\different\\dir\f[R] .RE .RE .RE .TP .B \f[CB]\-\-for\-removal\f[R] پویش یا فهرست‌بندی را فقط به APIهایی محدود می‌کند که برای حذف در آینده نشانه‌گذاری شده‌اند (\f[I]deprecated for removal\f[R]). همراه با نسخه‌های انتشار 6، 7 یا 8 قابل استفاده نیست. .RS .RE .TP .B \f[CB]\-\-full\-version\f[R] رشته نسخه کامل ابزار را چاپ می‌کند. .RS .RE .TP .B \f[CB]\-\-help\f[R] یا \f[CB]\-h\f[R] یک پیام راهنمای کامل را چاپ می‌کند. .RS .RE .TP .B \f[CB]\-\-list\f[R] یا \f[CB]\-l\f[R] مجموعه APIهای منسوخ‌شده را چاپ می‌کند. هیچ پویشی انجام نمی‌شود، بنابراین نباید هیچ آرگومان دایرکتوری، فایل jar یا کلاسی ارائه شود. .RS .RE .TP .B \f[CB]\-\-release\f[R] \f[CB]6\f[R]|\f[CB]7\f[R]|\f[CB]8\f[R]|\f[CB]9\f[R] نسخه انتشار جاوا SE را مشخص می‌کند که مجموعه APIهای منسوخ‌شده را برای پویش فراهم می‌آورد. .RS .RE .TP .B \f[CB]\-\-verbose\f[R] یا \f[CB]\-v\f[R] خروجی پیام‌های اضافی را در طول پردازش فعال می‌کند. .RS .RE .TP .B \f[CB]\-\-version\f[R] رشته نسخه مختصر ابزار را چاپ می‌کند. .RS .RE .SH "نمونه خروجی JDEPRSCAN (EXAMPLE OF JDEPRSCAN OUTPUT)" .PP فایل JAR این کتابخانه نامی شبیه به \f[CB]commons\-math3\-3.6.1.jar\f[R] خواهد داشت. برای پویش این فایل JAR از نظر استفاده از APIهای منسوخ‌شده، دستور زیر را اجرا کنید: .RS .PP \f[CB]jdeprscan\ commons\-math3\-3.6.1.jar\f[R] .RE .PP این دستور چندین خط خروجی تولید می‌کند. به عنوان مثال، یک خط از خروجی ممکن است به صورت زیر باشد: .IP .nf \f[CB] class\ org/apache/commons/math3/util/MathUtils\ uses\ deprecated\ method\ java/lang/Double::(D)V \f[R] .fi .PP \f[B]نکته:\f[R] .PP نام کلاس با استفاده از نام باینری جدا شده با اسلش، طبق توضیحات بخش 4.2.1 در مشخصات ماشین مجازی جاوا (JVMS) مشخص شده است. این همان قالبی است که در داخل فایل‌های کلاس استفاده می‌شود. .PP مورد منسوخ‌شده‌ای که استفاده می‌کند، متدی در کلاس \f[CB]java.lang.Double\f[R] است. .PP نام متد منسوخ‌شده \f[CB]\f[R] است، که یک نام ویژه به معنای سازنده (\f[I]constructor\f[R]) بودن متد است. یک نام ویژه دیگر \f[CB]\f[R] است که نشان‌دهنده مقداردهی اولیه ایستا در کلاس (\f[I]class static initializer\f[R]) می‌باشد. .PP سایر متدها تنها با نام متد خود فهرست می‌شوند. به دنبال نام متد، لیست آرگومان‌ها و نوع بازگشتی قرار می‌گیرد: .RS .PP \f[CB](D)V\f[R] .RE .PP این نشان می‌دهد که متد تنها یک مقدار \f[I]double\f[R] (یک نوع اولیه یا \f[I]primitive\f[R]) دریافت کرده و \f[I]void\f[R] برمی‌گرداند. نوع آرگومان‌ها و مقادیر بازگشتی ممکن است پیچیده و رمزی به نظر برسند. به عنوان مثال، یک خط دیگر از خروجی ممکن است به این صورت باشد: .IP .nf \f[CB] class\ org/apache/commons/math3/util/Precision\ uses\ deprecated\ method\ java/math/BigDecimal::setScale(II)Ljava/math/BigDecimal; \f[R] .fi .PP در این خط از خروجی، متد منسوخ‌شده روی کلاس \f[CB]java.math.BigDecimal\f[R] قرار دارد و خود متد \f[CB]setScale()\f[R] است. در این مورد، عبارت \f[CB](II)\f[R] به این معنی است که متد دو آرگومان از نوع \f[CB]int\f[R] دریافت می‌کند. عبارت \f[CB]Ljava/math/BigDecimal;\f[R] پس از پرانتز نشان می‌دهد که یک ارجاع به \f[CB]java.math.BigDecimal\f[R] بازمی‌گرداند. .SH "تحلیل با JDEPRSCAN می‌تواند وابسته به نسخه باشد (JDEPRSCAN ANALYSIS CAN BE VERSION\-SPECIFIC)" .PP شما می‌توانید از \f[CB]jdeprscan\f[R] نسبت به سه نسخه قبلی JDK استفاده کنید. به عنوان مثال، اگر در حال اجرای JDK 9 هستید، می‌توانید برنامه را در برابر JDK 8، 7 و 6 بررسی کنید. .PP به عنوان مثال، به این قطعه کد نگاه کنید: .IP .nf \f[CB] public\ class\ Deprecations\ { \ \ \ SecurityManager\ sm\ =\ new\ RMISecurityManager();\ \ \ \ //\ deprecated\ in\ 8 \ \ \ Boolean\ b2\ =\ new\ Boolean(true);\ \ \ \ \ \ \ \ \ \ //\ deprecated\ in\ 9 } \f[R] .fi .PP کلاس کامل در JDK 7 بدون هیچ هشداری کامپایل می‌شود. .PP اگر \f[CB]jdeprscan\f[R] را روی سیستمی با JDK 9 اجرا کنید، خروجی زیر را مشاهده خواهید کرد: .IP .nf \f[CB] $\ jdeprscan\ \-\-class\-path\ classes\ \-\-release\ 7\ example.Deprecations (no\ output) \f[R] .fi .PP دستور \f[CB]jdeprscan\f[R] را با مقدار انتشار 8 اجرا کنید: .IP .nf \f[CB] $\ jdeprscan\ \-\-class\-path\ classes\ \-\-release\ 8\ example.Deprecations class\ example/Deprecations\ uses\ type\ java/rmi/RMISecurityManager\ deprecated class\ example/Deprecations\ uses\ method\ in\ type\ java/rmi/RMISecurityManager\ deprecated \f[R] .fi .PP دستور \f[CB]jdeprscan\f[R] را روی JDK 9 اجرا کنید: .IP .nf \f[CB] $\ jdeprscan\ \-\-class\-path\ classes\ example.Deprecations class\ example/Deprecations\ uses\ type\ java/rmi/RMISecurityManager\ deprecated class\ example/Deprecations\ uses\ method\ in\ type\ java/rmi/RMISecurityManager\ deprecated class\ example/Deprecations\ uses\ method\ java/lang/Boolean\ \ (Z)V\ deprecated \f[R] .fi