Visual Studio 2019 をインストールしてHello World したら Windows Defender にTrojan:Win32/Fuery.C!cl だと言われて検疫されてしまいました。
コンパイルして実行したのは以下のコード。
本当に単純ないわゆるHello World です。
これはどう考えてもFalse Positive (誤検知)ですね。。。。
MS のフィードバックに連絡しておくことにしたいと思います。
† 2019/5/17 追記
Microsoft Security Intelligence の Submit a file for malware analysisから、Incorrect detection として報告してみたところ、Analyst comments として以下の返信が送られてきました。これで直ったんでしょうかね。
Analyst comments:
We have removed the detection. Please follow the steps below to clear cached detection and obtain the latest malware definitions.
1. Open command prompt as administrator and change directory to c:\Program Files\Windows Defender
2. Run “MpCmdRun.exe -removedefinitions -dynamicsignatures”
3. Run "MpCmdRun.exe -SignatureUpdate"
Alternatively, the latest definition is available for download here: https://www.microsoft.com/en-us/wdsi/definitions
Thank you for contacting Microsoft.
Visual Studio 2019 をオフラインインストールする方法を調べてみたのでメモ。
Visual Studio や MS Office など MS のプロダクトは、最近はオンラインインストール版しか存在しないので、ネットがない環境等でオフラインインストールしたい場合には一手間必要になります。例えば VS2019 Community のC++ デスクトップ開発(約2GB強) をオフラインインストールしたい場合には、VS2019 Community のインストーラーを使ってコマンドラインから以下のような引数を与えると、 vslayout フォルダに必要なファイルをダウンロードすることができます。
ちなみに--add オプションや --lang オプションなどを使わないと全てのモジュール(20GB 以上あります)をダウンロードしてくる仕様になっているので注意が必要です。
インストールは vslayout フォルダをコピーし、フォルダ内にある vs_community.exe に同じ引数を与えてやれば OK です。
† 参考
C 言語における scanf() は実用上はほぼ意味がない関数ですが、入門書などの例題では依然としてよく使われています。
Visual Studio 2017 の時から scanf() を使うためには scanf_s() を使うか、もしくはセキュリティ開発サイクル(SDL)チェックをオフにする必要があり、SDL の設定についてはプロジェクトを作る時のウィザードで制御することが可能でした。ところが、Visual Studio 2019 になってから SDL のチェックボックスが出なくなってしまったので、忘れないうちに設定の変更のやり方をメモしておきます。
教科書的な例題をそのまま動かしたいときに気をつけるべき点は以下の2点くらいでしょうか。
プロジェクトのプロパティ → 構成プロパティ → C/C++ → 「SDL チェック」を「いいえ(/SDL-)」に変更
プロジェクトのプロパティ → 構成プロパティ → リンカー → システム →「サブシステム」を「コンソール(/SUBSYSTEM:CONSOLE)」に変更
VS 2019 の正式版がリリースされた*1ようなのでメモ。
コード補完を支援する IntelliCode や、リモートのメンバーと作業をリアルタイムに共有する Live Share が目玉のようです。
Live Share は10年以上前に盛んに開発されていた、遠隔ペアプログラミング支援のような感じでしょうか。
メモリの使用量もかなり削減*2されているところも嬉しいポイントですね。
Microsoft、「Visual Studio 2019」を一般公開 ~無償の“Community”エディションも - 窓の杜
コーディング関連では、ナビゲーションやリファクタリング、コードクリーンアップなどの機能が強化された。AIによる支援を受けたコード補完機能「Visual Studio IntelliCode」や、コーディングセッションを他のメンバーと簡単にリアルタイム共有できる「Live Share」
Visual Studio 2017/2019 を使って C 言語の入門書の問題をコンパイルしていると、scanf() が動かなくて困ることがあります。
例えば以下のような、文字列を読み取るコードをコンパイルするとC4996*1 というエラーになります。このような Visual Studio (というか、VC++ のコンパイラ) の挙動についてはC 言語を始めたばかりの初学者にとっては大きな障害となります。ただ、VC++ がこのような仕様になっているのは、初心者にとって scanf() の取り扱いは難しく、バッファオーバーランを起こしやすい問題を考えると仕方がない面もあります。
C4996エラーの例:
† ポイントは SDL チェックの有無
前述の C4996 エラーについては Visual Studio のセキュリティ開発サイクル(SDL)チェックで制御されているので、入門書の練習問題を解くなど、脆弱性について考慮しなくて良い場合にはこのチェックを外すことでコンパイルが可能です。SDL チェックの詳細については「/sdl (追加のセキュリティ チェックの有効化)」に記載されているので、詳細に知りたい場合にはこちらを参照してください。
設定変更の具体的な方法はプロジェクトのプロパティを開いて「C/C++」→「全般」にある「SDL チェック」 を無効化してやります。
† 新規のプロジェクトを作るときは・・・・
ちなみに新規のプロジェクトを作成するときに SDL チェックをしないようにする場合には、新規プロジェクトを作成するときに Visual C++ → Windows デスクトップ → Windows デスクトップウィザード を選択してやると、以下の画像のようにウィザードの最後に 「セキュリティ開発サイクル(SDL)チェック」が現れるので、このチェックを外してやれば OK です。
MS がVisual Studio for Mac を一般公開していたのでメモ。
初めてサイトにアクセスした人は「Visual Studio for Mac を 5 月 17 日までにダウンロードすると、60 日間 Xamarin University に無料でアクセスできます。」という特典の意味がよく分からないかもしれませんが、この Visual Studio for Mac は以前にMSが買収した Xamarin をベースとして作られているからですね。
Visual Studio をインストールすると様々なプログラムが導入されるので、綺麗にアンインストールするのが難しいのですが、このような問題を解決してくれるVisual Studio Uninstaller を見つけたのでメモ。GitHub に上がっていたので始めは気づきませんでしたが、よく見たら Microsoft のリポジトリだったので、半ばオフィシャルのアンインストーラーということになります。
使い方はReleases · Microsoft/VisualStudioUninstaller から zip ファイルをダウンロードして、適当な所に展開し、出てきたSetup.ForcedUninstall.exe を管理者権限で実行してやるだけです。
Visual Studio 2017 の正式版がリリースされました*1。
今バージョンからインストーラーが新しくなり、原則としてオンラインによるインストールになったので、インストーラー自体は 1MB くらいしかありません。ネット接続がない環境でインストールしたい場合にはコマンドラインから以下のコマンドを使ってオフラインインストーラーを作ることができます。ダウンロードされるファイルは 20GB くらいになるので要注意。日本語版しか使わないのであれば以下に加えて--lang ja-JP を指定すればいくらか容量を節約することができます。
Create an offline installer for Visual Studio 2017 | Microsoft Docs
- For Visual Studio Enterprise, run:
vs_enterprise.exe --layout c:\vs2017offline- For Visual Studio Professional, run:
vs_professional.exe --layout c:\vs2017offline- For Visual Studio Community, run:
vs_community.exe --layout c:\vs2017offline
現在は RC 版が公開されているVisual Studio 2017(Visual Studio 15) ですが、正式リリースが 3月7日に決まったようです。
今回のバージョンからインストーラーが改良されており、インストールしてみるとわかりますがインストールの所用時間が劇的に短くなりました。インストールの容量もかなり削減されています。
今年は最初のバージョンである Visual Studio 97 から 20 年という節目の年なので、リリースのイベントも大々的に行われるようです。
† 参考
MS の Visual Studio にはメンテナンスしやすさを表す Maintainability Index という 0~100までの値をとるメトリクスががあり、20以上でであれば良好、10台であればほどほど、9以下だとメンテナビリティが低いことを表すということになっています。
Maintainability Index – Calculates an index value between 0 and 100 that represents the relative ease of maintaining the code. A high value means better maintainability. Color coded ratings can be used to quickly identify trouble spots in your code. A green rating is between 20 and 100 and indicates that the code has good maintainability. A yellow rating is between 10 and 19 and indicates that the code is moderately maintainable. A red rating is a rating between 0 and 9 and indicates low maintainability.
最近までこの算出方法を知らなかったのですが、下記のようなちょっと面白い式になっているようです。
Maintainability Index = 171 - 5.2 * ln(Halstead Volume) - 0.23 * (Cyclomatic Complexity) - 16.2 * ln(Lines of Code)*1
この式は CMU SEI のMaintainability Index Technique for Measuring Program Maintainability*2 からもたらされたもので、履歴を見ると 97年ごろからある伝統的なものみたいですね。まだこれは読んだことがなかったので、今度読んでみようと思います。