2015年7月27日月曜日

[AutoIt] システム情報マクロ

AutoIt を書いていると Windows のバージョン違いによる 挙動・UI の違いが障害になることが多々あります。
AutoIt のコード側で対処する必要がありますが、そんな時に便利なのがシステム情報マクロです。

https://www.autoitscript.com/autoit3/docs/macros/SystemInfo.htm

@OSVersion
名前のまんまの機能です。OS のバージョンを参照できます。
値は、"WIN_81" のように WIN_ + OS名 となってます。詳しくは、上記リンクを参照してください。

これで、OS ごとの差異を場合分けすることができます。

@OSLang
こちらも、名前のまんまの機能です。OS の Locale がこのマクロから参照できます。
https://www.autoitscript.com/autoit3/docs/appendix/OSLangCodes.htm

言語が違うとウィンドウの名前引きに失敗してしまします。
コントロールID 指定でも良いのですが、名前引きの方が柔軟性が高いので、個人的にはこちらを利用することが多いです。




マクロは他にも色々あるので、便利に使えるのではないかと思います。
今回は以上です。それでは。

2015年7月22日水曜日

色のサイト公開

ある日、「背景色」と「文字色」のテストができるツールが欲しいと言われました。
そんなの世の中にいっぱいあるだろーと思ったが、ご所望のものが見つからないとのこと。
個人的に普段やらないことができるし、面白そうだと思ったので作りました。

できたのが、こちら。
http://srz-zumix.github.io/site/colorscheme/#/


作り始めたら、こだわりだしてしまって2週間くらいかかりました。
で、依頼主に見せたんですが、当の本人は既に気移りしていて「あ、そう」って反応でした。
スピードは大事だと学びました。

2015年7月13日月曜日

[Jenkins] ビルドが失敗したときにスレーブをオフラインにする


Offline Node On Failure Plugin を使う
Offline Node On Failure Plugin
その名の通り、ビルドが失敗したらオフラインにするプラグインです。

インストールすると、ビルド後の処理に「Take node offline on failure」が追加されます。
細かい設定などは一切ありません。失敗したらオフラインにします。(master は除く)



失敗かつ特定のログがある/ない場合にオフラインにしたい
さて、Offline Node On Failure Plugin は単純に失敗したらオフラインにするプラグインでした。
ただ、同じ失敗でもオフラインにしたいときもあれば、したくないときもあるでしょう。
その場合は、オフラインにしたくないときはビルドステータスを不安定にすることで実現できます。
それも1つの手です。

しかし、それで終わってはつまらないので、別の方法を紹介します。

Groovy Postbuild Plugin でオフラインにする
Groovy Postbuild Plugin を使います。

オフラインの仕方は以下のようにします。
def com = manager.build.getBuiltOn().toComputer()
  if( com.isOnline() ) {
    com.setTemporarilyOffline(true, new OfflineCause.ByCLI("オフラインメッセージ"))
  }

さらに、特定のログが含まれているかどうかは、
manager.logContains で調べられるので、

if( manager.logContains("致命的な失敗") ) {
    def com = manager.build.getBuiltOn().toComputer()
    if( com.isOnline() ) {
      com.setTemporarilyOffline(true, new OfflineCause.ByCLI("オフラインメッセージ"))
    }
  }

のようにすれば、特定のログ出力に応じてオフラインにできます。


まとめ
プラグインを使えば簡単に実現可能ですが、Groovy を使った方法も覚えておくとより柔軟に制御ができるようになると思います。Groovy Postbuild Plugin で使える Groovy Script を github に上げてますので参考にしてください。(あんまり整理・メンテしてませんが…)
https://github.com/srz-zumix/jgpbc

2015年7月6日月曜日

[C++][静的解析] PVS-Studio を使ってみた



どうやら C++ の静的解析ツールに PVS-Studio があるらしい。ということで、使ってみました。

インストール
PVS-Studio は Visual Studio の拡張機能として使います。(単体でも使用可能
インストーラーのダウンロードはこちらから。
http://www.viva64.com/en/pvs-studio-download/

インストーラーをダウンロードしたら指示にしたがってインストールしてください。

トライアル版を使ってみて
iutest を解析した結果がこちら。
検出数は2つだけ。それもテスト用にわざと書いたコードでした。


よかったよかったと思ったら、これは Level1 の警告で Level2, Level3 の警告がまだありました。

トライアル版では見れない!!
うーん、これは気になる。商売うまいぜ…

ライセンス購入するにはメールを送る必要があるようで、ちょっと敷居が高く感じた。
値段もパッとわからなかったので、今回はここまでとします。

ちなみに、無料の C++ 静的解析ツールといえば Cppcheck が有名ですが、PVS-Studio と Cppcheck との比較資料もありました。
http://www.viva64.com/en/b/0149/