با نوشتن صحیح Regexes از سرریزهای پشته خودداری کنید

عکس پروفایل نویسنده

@منبع سونارمنبع سونار

ما ابزار کلاس و کیفیت کد جهانی را تولید می کنیم: SonarQube ، SonarLint و SonarCloud

ما اخیراً روی افزودن قوانینی کار کرده ایم که به شما کمک می کند عبارات منظم بهتر در جاوا بنویسید.

من قبلاً در مورد قوانینی برای یافتن خطا در کلاسهای شخصیت و استفاده از نشانگرهای مرزی و عبارات منظم بیش از حد پیچیده صحبت کرده ام. این قوانین به شما کمک می کنند تا عبارات منظم خود را دقیق و قابل نگهداری کنید. امروز من به شما نشان می دهم که چگونه اطمینان حاصل کنید که عبارت منظم برنامه شما را خراب نمی کند.

به عنوان یک یادآوری مختصر: عبارات منظم مکانیسم مختصر و قدرتمندی برای تطبیق الگوها در رشته ها هستند. بخشی از قدرت عبارات منظم این است که یک الگو می تواند به طور خلاصه رشته ای را توصیف کند که ممکن است بسیار بزرگتر از الگوی اصلی باشد. گاهی خیلی خیلی بزرگتر. گاهی اوقات به اندازه کافی برای پشته کردن پشته و خراب کردن برنامه شما است.

با توجه به نحوه تطبیق بیان منظم در جاوا (و بسیاری دیگر از زبانها / کتابخانه ها) ، تطبیق یک الگو ممکن است – بسته به regex – به فضای پشته متناسب با طول ورودی نیاز داشته باشد. این بدان معنی است که ورودی های بزرگ می توانند باعث خراب شدن برنامه با a شوند

StackOverflowException

وقتی می خواهید از regex استفاده کنید.

هنگامی که تجزیه و تحلیل سعی در پیدا کردن این مشکل در کد خود داشتیم …

Leave a reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>