PVS-Studioに぀いお知りたいこずや、質問するこずをためらわないこず





写真1






最近、ロシアおよび海倖のさたざたな専門IT䌚議での存圚感を匷化したした。 ほずんどのむベントでは、スタンドで立ち䞊がろうずしたすが、プレれンテヌションを行うこずもありたす。 䌚議は、圓瀟補品PVS-Studio静的コヌドアナラむザヌの認知床を高めるだけでなく、最も重芁なこずには、朜圚的な既存ナヌザヌをより身近に知るこずができたす。 スタンドで蚪問者ずコミュニケヌションを取りながら、圓瀟の埓業員はしばしば同じ質問に答えたす。 この蚘事では、䞀般的な静的解析、特にPVS-Studioに関する蚪問者の最もよくある質問に答えようずしたす。



手始めに、「期埅ず珟実」をテヌマにしたちょっずしたナヌモア。 私たちは倚くの蚘事を曞いおおり、人々がすでにそれらを読んでいるなら、少なくずも䞀般的には圌らは私たちの補品ずその機胜に぀いお知っおいるず単玔に信じおいたす。 残念ながら、これは垞にそうではありたせん。 最近の䌚議での蚪問者ずの実際のコミュニケヌションの䟋を次に瀺したす。 蚪問者「Habréの蚘事を読みたした。 面癜い。 あなたの分析噚が私たちにたったく合わないのは残念です。 すべおの゜ヌスコヌドは秘密です。送信するこずはできたせん。 ただし、クラりド䞊のすべおがそこで機胜したす。」







写真4






私たちのマヌケティング郚門にはおそらく䜕か取り組むべきこずがありたす。



次に、私は展瀺䌚の私たちのスタンドに䞀般的な蚪問者からの他の䞀般的な質問ず、それらぞの即垭の察話圢匏での回答をしたす。



Qあなたに぀いお䜕か聞きたした。 あなたはどこから来お、䜕をしおいお、あなたのこずをもっず知るには



A私たちはトゥヌラの小さな独立したチヌムです。 C、C ++、C、Java蚀語甚の静的コヌドアナラむザヌであるPVS-Studioを開発しおいたす。 PVS-Studio Webサむトで、圓瀟の詳现を確認できたす。 たた、蚘事を曞き、ブログ 、 Habré 、その他のリ゜ヌスに投皿したす。



Qどのような静的解析ですか 私たちのチヌムには、十分なコンパむラ譊告ず共同コヌドレビュヌがありたす。



Aコンパむラは、グロスでかなり明癜な゚ラヌのみを指摘できたす。 たずえば、到達䞍胜コヌドたたは初期化されおいない倉数の䜿甚。 コンパむラの゚ラヌ怜出は副次的なタスクです。 はい、コンパむラは最近非垞にむンテリゞェントになりたした。 しかし、コヌド内の゚ラヌを芋぀けるための特別なツヌルはコンパむラよりもはるかに優れおいるため、コヌドの詳现な分析を行い、タむプミス、論理゚ラヌ、ヌルポむンタヌ/リンクの朜圚的な䜿甚などを特定できたす。



共同コヌドレビュヌは、実瞟のある優れたテクノロゞです。 しかし、他の人のコヌドに取り組むために远加の埓業員を匕き付ける必芁性に関連する欠点もありたす。 これにより開発コストが増加したすが、ミスを犯すのは人間の性質であるため、゚ラヌをスキップしたり新しい゚ラヌを远加したりする可胜性は残りたす。



静的分析ずは、プログラムを実行せずに゜ヌスコヌドを怜蚌するこずです。 ゚ラヌに察する远加の障壁ずしお静的コヌド分析ツヌルを䜿甚するこずをお勧めしたす。



Q PVS-Studioは実行可胜ファむルを分析したすか、それずも゜ヌスコヌドを盎接分析したすか



A脆匱性の怜玢に぀いお説明する堎合、実行可胜コヌドの分析は、りむルス察策の動䜜により䌌おおり、デヌタベヌスのバむナリコヌドで眲名を怜玢したす。



PVS-Studioは゜ヌスコヌドを分析したす 。 これにより、はるかに広い範囲の゚ラヌず朜圚的な脆匱性を特定し、䜜業の速床を䞊げ、より信頌性の高い結果を埗るこずができたす。



はい、もちろん、コヌドを逆アセンブルしお、アルゎリズムの゚ラヌを芋぀けるこずができたす。 ただし、バむナリコヌドでは倚くの情報が倱われるこずを理解する必芁がありたす。 たずえば、コヌドがコンパむルされるず、真の条件は垞に単玔に削陀され、この条件に問題があるこずを芋぀ける方法はありたせん。



Q統合オプションずは䜕ですか IDEのプラグむンはありたすか



A珟圚、PVS-StudioはプラグむンずしおVisual Studio 2010-2017に統合されおいたす。 IntelliJ IDEA甚のJavaプラグむンがありたす。 たた、特殊なモゞュヌルのおかげで、Qt CreatorずCLionでCMakeプロゞェクトを管理できたす。



アナラむザヌは絶えず進化しおいるため、 圓瀟のWebサむトにアクセスしお、補品の機胜に関する最新情報を確認できたす。



Q SonarQubeを䜿甚しおいたす。



Aすばらしい遞択。 SonarQubeのPVS-Studioプラグむンを䜿甚するず、分析結果をSonarQubeにむンポヌトし、通垞の方法でそれらを操䜜できたす。



Qどういうわけか、分析をビルドシステムに統合する必芁がありたす。



A PVS-Studioはコマンドラむンから䜿甚できたす。 アナラむザヌには、広範なタスクを解決するための倚数の蚭定が含たれおいたす。 たた、䜿甚シナリオに関係なく、アナラむザヌの実装フェヌズ䞭にクラむアントにサポヌトを提䟛し、ラむセンス期間党䜓を通じお技術サポヌトを提䟛したす。



Qアナラむザヌを詊す方法は



A ダりンロヌドペヌゞを䜿甚しお 、必芁な配垃キットをダりンロヌドし、PVS-Studioを詊甚モヌドで操䜜したす。 補品の評䟡にさらに時間が必芁な堎合、たたはデモ版の制限に満足できない堎合は、お問い合わせください 。



たた、展瀺䌚では、蚪問者ぱンタヌプラむズキヌを取埗できたす。その有効期間は1か月です。 これを行うには、ナニコヌンを持っおブヌスに来おください。 さらに、宝くじのメンバヌになり、PVS-Studioから賞品を受け取るこずができたす。



Q私は孊生ですが、PVS-Studioを無料で䜿甚できたすか



Aこれは、゜ヌスコヌドに特別な皮類のコメントを远加する堎合に可胜です。 この方法でマヌクされたファむルは、制限なしで゚ラヌがチェックされたす。 この動䜜モヌドの詳现に぀いおは、「 PVS-Studioを無料で䜿甚する方法 」の蚘事をご芧ください。



Q顧客は誰ですか



A珟圚、䞖界䞭の200瀟以䞊の䌁業が顧客になっおいたす。 圌らの掻動範囲は非垞に倚様です。 既存の顧客のリストは、 圓瀟のりェブサむトで芋぀けるこずができたす。



Qそれで、ロヌカル操䜜モヌドがありたすか



A PVS-Studioアナラむザヌは専甚コンピュヌタヌにロヌカルにむンストヌルされ、完党に独立しお動䜜したす。 プラグむンからドキュメント蚺断の説明などぞのクむックリンクだけでなく、曎新を受信するにはむンタヌネット接続が必芁です。 珟圚、「クラりド」を介しお䜜業するためのオプションを怜蚎しおいたすが、これは暙準操䜜モヌドに远加されるものです。



Qそしお、たずえば、Coverityアナラむザヌで埗意なこずは䜕ですか



Aこの質問に簡単で包括的な答えを出すこずは䞍可胜です。 他のアナラむザヌず比范する詊みはすべお倱敗したした。 私たちは、特別に準備されたテストベヌスず他の臎呜的な眪を䜿甚しお、結果を「巻き䞊げる」バむアスで告発されたした。 さらに、アナラむザヌを単に「正面から」比范するこずはできたせん。 各ツヌルは䞀意であり、独自の長所ず短所がありたす。 䞀郚のツヌルはパフォヌマンスに重点を眮いおおり、他のツヌルはコヌドの「におい」を芋぀けおスタむルを改善するこずに焊点を圓おおいたす。 バグず朜圚的な脆匱性を探したす。



垌望ず適切な方法論があれば、調査を実斜し、圓瀟のアナラむザヌを他のアナラむザヌず比范しお、それに぀いおの蚘事を曞くこずができたす。 これを行うには、制限なしで䞀時ラむセンスキヌを発行したす。 しかし、批刀に備えおください。



Qわからないので、コンパむルされおいないコヌドでのみ゚ラヌを探しおいたすか ぀たり、プログラムはコンパむラヌチェックさえパスしたせんでしたか



Aそうではありたせん。 PVS-Studioは、コンパむルされたプログラムでのみ゚ラヌを怜玢および怜出したす。 実際のアプリケヌションで。 これらのプログラムぱラヌなしでコンパむルされるだけでなく、他のアナラむザヌによっおチェックされるものもありたす。 それでも、゚ラヌを探したす。 これに぀いおは、オヌプン゜ヌスプロゞェクトをチェックしお、ブログに蚘事を曞くこずがよくありたす。



Q PVS-Studioはプロゞェクトでどのような゚ラヌを怜出できたすか タむプミス



Aもちろん、タむプミスは静的解析によっお怜出された叀兞的な゚ラヌのクラスに属したす。 しかし、これに加えお、PVS-Studioは朜圚的に数癟の゚ラヌパタヌンを怜出できたす。 䟋ヌルポむンタヌの逆参照、れロ陀算、条件は垞にfalseたたはtrue、䞍正なむンデックス操䜜、配列の境界倖ぞの移動など。 ゚ラヌの完党なリストは、 ドキュメントペヌゞに蚘茉されおいたす。



Qアナラむザヌで確認した埌、プログラムに゚ラヌが含たれおいないこずを確認できたすか



Aいいえ。 PVS-Studioは、プログラムの正確性を蚌明するためのツヌルではありたせん。 これは別のクラスのツヌルです。 アナラむザヌのタスクは、コヌド内の朜圚的な゚ラヌを迅速か぀確実に瀺すこずです。 特定の蚭蚈の誀ibility性に関する決定は、開発者が垞に゚ラヌの発生のコンテキストずプロゞェクトに関する知識を䜿甚しお行いたす。 たた、アナラむザヌは開発者を支揎し、誀怜知の数を最小限に抑え、受け取った譊告のリストを凊理するための远加機胜を提䟛したす。



Q PVS-Studioはどのように機胜したすか どのような皮類の゚ラヌ怜玢メカニズムですか おそらく正芏衚珟を䜿甚しおいたす。



A正芏衚珟の䜿甚は非垞に非効率的です。 たずえば、条件内で最も原始的な゚ラヌのみを怜出できたす2぀の同䞀の郚分匏を比范したす。



if ((a+b+) == (a+b+)) {....}
      
      





同時に、䜜業のロゞックを倉曎せずにコヌドを少し倉曎するず、そのようなアナラむザヌは行き止たりになりたす。



 if ((a+b+) == (b+a+)) {....}
      
      





PVS-Studioアナラむザヌははるかにむンテリゞェントであり、次のメカニズムを䜿甚したす。





これはすべお、私の同僚のAndrei Karpovが最近の蚘事「 ゚ラヌおよび朜圚的な脆匱性を芋぀けるためにPVS-Studioコヌドアナラむザヌで䜿甚される技術 」で詳しく説明したした。



Qたあ、C / C ++プロゞェクト、15幎の開発、500䞇行のコヌドがありたす。 今すぐPVS-Studioの䜿甚を開始できたすか



Aはい。 実装段階では、プロゞェクトの完党なチェックを䞀床行う必芁がありたす。 その埌、受信したすべおの譊告おそらく倚くの譊告が衚瀺されたすは、埌でこの技術的負債に戻るために、面癜くない䞀時的に結論を抑制しおいるこずに泚意するこずができたす。 その埌、PVS-Studioを䜿甚しお定期的に新しいコヌドのみをチェックできたす。 このペヌゞおよびアナラむザのその他の機胜の詳现に぀いおは、ドキュメントのペヌゞをご芧ください 。



Qどのくらいの頻床でテストを実行する必芁がありたすか そしお、毎回コヌドベヌス党䜓をチェックしたすか



A静的解析を最も効率的に䜿甚するには、できるだけ頻繁に新しいコヌドをチェックする必芁がありたす。 このため、PVS-Studioはむンクリメンタル分析モヌドを実装しおいたす。 プロゞェクトの最埌のビルド以降に倉曎されたファむルは、怜蚌のために送信されたす。 他の操䜜モヌドがありたす。 これにより、開発段階ですでに゚ラヌを識別できるため、リリヌスに゚ラヌが混入するリスクが軜枛されたす。



Q PVS-Studioを䜿甚しおいたす。 アナラむザヌぱラヌを怜出したすが、その倚くは未䜿甚のコヌドたたはテストにありたす。 これでいいですか



Aそれは非垞に正垞です。 動的分析ずは察照的に、静的分析の機胜の1぀は、コヌドの実行時に実行されるコヌドだけでなく、コヌドベヌス党䜓の怜蚌です。 プログラムコヌドのデバッグに倚くの時間ず劎力を費やし、すべおが安定しお動䜜するずしたす。 しかし、めったに䜿甚されないか、ただ䜿甚されおいない関数がありたす。 そのような関数で゚ラヌを芋぀ける可胜性は高いです。 そしお、ある時点で関数の䜿甚を開始するず、䜕かがおかしくなりたす。 静的解析を䜿甚するず、このような状況のリスクを最小限に抑えるこずができたす。



たた、コヌドには明らかに誀った構造が含たれおいる可胜性がありたすこれは通垞テストで発生したす。したがっお、PVS-Studio蚭定を介しおプロゞェクトたたはパスを指定しおスキャンから陀倖するのが理にかなっおいたす。 ただし、テスト自䜓に゚ラヌが含たれるこずがありたす。 そのような状況を特定するこずは非垞に困難であり、この堎合、開発者が決定を䞋す必芁がありたす。



Q脆匱性の怜玢はどうですか



A PVS-StudioアナラむザヌはSAST静的アプリケヌションセキュリティテストツヌルであり、 CWE Common Weakness Enumerationに埓っお分類された朜圚的な脆匱性を識別するこずができたす。 CWEアラヌトは、埓来のPVS-Studioアラヌトずほが重耇しおいたす。 SASTの詳现に぀いおは、 ドキュメントをご芧ください。 朜圚的な脆匱性が必ずしもハッカヌによっお悪甚される可胜性のある実際の脆匱性に぀ながるずは限らないこずを理解するこずが重芁です。 識別された脆匱性は、 CVE Common Vulnerabilities and Exposuresによっお分類されたす。 それでも、 朜圚的な脆匱性を排陀するこずは、プログラムのセキュリティの向䞊に明らかに貢献し、将来の実際の脆匱性を特定するリスクを最小限に抑えたす。



Q開発チヌムを率いおいたす。 PVS-Studioはどの皋床圹立ちたすか



Aコヌドの品質ず信頌性の向䞊に加えお、PVS-Studioの実装により、たずえば責任の分割に関連する玔粋に管理的なタスクを解決できたす。 アナラむザヌパッケヌゞにはBlameNotifierナヌティリティが含たれおおり、バヌゞョン管理システムに誀ったコヌドを送信した埓業員を自動的に識別するこずができたす。 同時に、メヌル通知は請負業者ずそのマネヌゞャヌの䞡方に送信されたす。



たた、゚ラヌレポヌトを、ヘッドが䜿甚するのに䟿利な詳现なhtmlレポヌトなど、ナヌザヌにずっお䟿利な任意の圢匏に倉換するように構成するこずもできたす。



最埌に、SonarQubeを䜿甚する堎合、このツヌルのすべおの利点を䜿甚しお、特殊なプラグむンを䜿甚するPVS-Studioアナラむザヌを䜿甚しおプロゞェクト怜蚌の結果をSonarQubeにアップロヌドするこずにより、継続的なコヌド品質管理を保蚌できたす。



Q機械孊習の䜿甚たたは䜿甚を蚈画しおいたすか



Aこれは倧きくお興味深いトピックです。 これに぀いお重芁な蚘事を曞く予定です。 今、私はいく぀かの短い考えを衚明するだけです。



機械孊習を䜿甚しお蚈算機を䜜成する必芁はありたせん。 䞀定のルヌル匏があり、それをコヌドに適甚し、䜕らかの結論を匕き出す必芁がありたす。 これらのパタヌンが既に存圚する堎合、新しい゚ラヌパタヌンを怜出するためにニュヌラルネットワヌクを蚭定する必芁がある理由は明らかではなく、それらを正しく適甚する必芁がありたす。 そしお、最も重芁なこずは、そのようなトレヌニングのベヌスをどこで入手できるかが明確ではないこずです。 あなたが孊ぶこずができる曞かれた゚ラヌがある数十䞇のプロゞェクトのサンプルはどこにありたすか



私たちの意芋では、機械孊習アルゎリズムを䜿甚するこずが理にかなっおいる唯䞀の堎所は、誀怜知を陀倖するこずです。



Q PVS-StudioでPVS-Studioコヌドをチェックしたすか



Aもちろんです さらに、゚ラヌが発生した堎合は、犯人のリストが公開され、その埌アむスクリヌムで冷蔵庫から砎られたす。 しかし、真剣に、私たちはあなた自身のツヌルを䜿甚するこずが非垞に有甚であるず信じおいたす。 これにより、ナヌザヌの芳点から補品を芋お、いく぀かの欠点に気付くこずができたす。



Qデスクトップずむダヌフラップ付きのブランドキャップの玠晎らしいステヌタスを取埗するにはどうすればよいですか



A最寄りの展瀺䌚でナニコヌンを持っおブヌスに来おください。そこでブヌスを出展したす。 私たちは䜕かを思い぀きたす:)







写真2






展瀺䌚での私たちのスタンドぞの蚪問者の最も䞀般的な質問に答えるこずができたこずを願っおいたす。 もちろん、答えるには別の蚘事を曞く必芁があるかもしれないより耇雑な質問がありたす。



蚪問者ず通信するずき、私たちは䞻なアむデアを䌝えようずしたす静的分析はすべおの病気の䞇胜薬ではありたせんが、その䜿甚は健康あなたのプログラムに非垞に圹立ちたす。 PVS-Studioを䜿甚しお、病気にならないでください



結論ずしお、再び倚くの有甚なリンクを提䟛したす。











この蚘事を英語圏の聎衆ず共有したい堎合は、翻蚳ぞのリンクを䜿甚しおくださいSergey Khrenov。 PVS-Studioに぀いお知りたいこず、そしおあえお聞かないこず



All Articles