Skip to main content

2 posts tagged with "eclipse"

View All Tags

Eclipse:新規ファイルにBOM(UTF-8)をつける

· 2 min read
mebiusbox
engineer

Eclipse で新規にファイルを作成すると Workspace に設定されたエンコードで保存されます。 文字エンコーディングを UTF-8 に設定した場合、新規にファイルを作成しても BOM は付きません。 そこで、BOM を付加するスクリプトを書きました。Ruby 版と Python 版があります。

AddBom.rb

#! /usr/bin/env ruby

path = ARGV[0]
puts "Add BOM to #{path}"
src = File.read(path)
bom = "\xEF\xBB\xBF"
if src.index(bom) == 0
raise "BOM already exists"
end

File.open(path, "w") do |io|
io << bom
io << src
end

AddBom.py

# -*- coding:utf-8
import os
import sys

def main(path):
f = open(path, mode='rb')
data = f.read()
f.close()

utf8bom = "\xef\xbb\xbf"
if len(data) >= 3:
if data[0:3] == utf8bom:
print "BOM already exists " + path
return 0

f = open(path, mode="wb")
f.write(utf8bom)
f.write(data)
f.close()
print "Add BOM to " + path
return 0

if __name__ == '__main__':
if len(sys.argv) < 2:
print sys.argv
print "addbom <path>"
sys.exit(0)
else:
sys.exit(main(sys.argv[1]))

eclipse に外部ツールとして登録する

メニューバーから Run > External Tools > External Tools Configurations... を選択します。 新規作成し、AddBom.rb もしくは AddBom.py を登録します。

AddBom.rb の場合

項目設定
NameAddBom
Locationruby.exe のパス
Arguments<AddBom.rbのパス\> ${resource_loc}

AddBom.py の場合

項目設定
NameAddBom
Locationpython.exe のパス
Arguments<AddBom.pyのパス\> ${resource_loc}

使い方

新規ファイルを作成し、そのファイルを開いた状態で AddBom を実行します。 BOM がなければ追加され、すでに追加されていれば何もしません。 また、空ファイルでなくても問題なく動作します。

Eclipse:C++静的チェック環境

· 6 min read
mebiusbox
engineer

Eclipse の C++ 開発環境に静的コード解析をいくつか追加します。ここで解説する方法はプロジェクト単位ではなく1ファイル単位での解析となります。 追加するのはスタイルチェックやメトリクス解析などで、次のツールを使います。

  • cpplint
  • cppcheck
  • SourceMonitor

メニューバーから Run > External Tools > External Tools Configurations... を選択します。

001

ツールバーから選択してもいいです。

002

cpplint

まずは cpplint を登録します。 cpplint は以下の場所からダウンロードできます。

cpplint

cpplint を実行するには python が必要です。 インストールしていなければ適当な場所にインストールしてください。 ここでは cpplint.py を E:\cpplint.py、python は E:\python27 にインストールしてあります。

左下にある Program を選択するとその上にある New アイコンがクリック出来るようになるのでクリックします。

003

Namecpplint と入力し、LocationArguments に以下のように入力します。

Location:E:\python27\python.exe Arguments:E:\cpplint.py ${resource_loc}

004

次に Common タブを選択して、Display in favorites menu の Externals Tools にチェックを入れます。 また、Launch in background はチェックをはずします。設定が終わったら Apply を押します。

005

これで設定終了です。

cppcheck

同じような手順で、cppcheck を登録します。 cppcheck は以下の場所からダウンロードできます。

cppcheck

ここでは 1.74 (64bit) をデフォルト設定のままインストールしました。

cpplint と同じように New ボタンを押して新規に作成し、Name を cppcheck、Location, Arguments を以下のように設定します。

Location:C:\Program Files\Cppcheck\cppcheck.exe Arguments:--enable=all --force ${resource_loc}

cppcheck はインクルードしたファイルが検索できないとエラーとなりますが、--force で強制的に解析します。

SourceMonitor

SourceMonitor はメトリクス解析をやってくれます。以下の場所からダウンロードできます。

SourceMonitor

ここではデフォルト設定のままインストールしました。こちらは次のように設定します。

Name:SourceMonitor Location:C:\Program Files (x86)\SourceMonitor\SourceMonitor.exe Arguments:/DC++ ${resource_loc}

実行してみる

計測したいファイルを開いた状態で Run > External Tools... から実行したいツールを起動します。 cpplint と cppcheck はコンソール画面に、SourceMonitor はダイアログが表示されます。

CPPLINT.cfg

cpplint の設定は CPPLINT.cfg ファイルを作成し、その中で記述します。CPPLINT.cfg ファイルは対象のソースコードと同じところに入れておくか親のフォルダに入れても構いません。プロジェクトのトップフォルダに入れておくと楽です。

例えば以下のような設定になります。

set noparent linelength=100 filter=-whitespace/tab,-whitespace/indent,-whitespace/comment

linelength で行数を、filter でフィルターの細かい設定を行えます。 詳細はマニュアルを参照してください。

SourceMonitorが起動しない場合

対象のソースファイルが UTF-8 の場合、SourceMonitor が起動しないことがあります。 一度 SourceMonitor を直接起動し、File > Options > Allow parsing of UTF-8 files にチェックをつけて再度試してみてください。

006

メトリクス計測について

詳しくは検索してもらえれば沢山見つかると思います。 複雑度の数値については 10 以下が理想とありますが、個人的には 50 以下、出来れば 30 以下をキープすればいいかと思っています。 ただし、場合によっては複雑な条件だらけになることもあるので例外はあると思っています。

metriculator

Eclipse のプラグインに metriculator というメトリクス計測があります。 Eclipse Marketplace からインストールするこtが出来ます。

007

使い方は Project Explorer 上でフォルダまたはファイルを右クリックして Run C/C++ Code Analysis を選択します。 しばらくすると結果が表示されます。

項目名前説明
McCabecyclomatic complexサイクロマチック数(複雑度)
NbMembersNumber of Members per typeクラスのメンバー数
LSLOCLogical source lines of code行数
EfferentCouplingNumber of Efferent Couplings per typeクラスが参照している数
NbParamsNumber of parameters per functionメソッドのパラメータ数