静的解析系の備忘メモ

はじめに

現在アジャイルの皮をかぶったWF*1の仕事をやってまして、どうもレビューをそれ程重視していないから

  • レビューを自動化しようぜ
  • 静的解析で自動レビューを

な風潮が有るみたい。普通の開発現場とかではありえない感じなんだけど

日本企業らしいといえばらしいので、その時に調べたことをメモっておく

まあSI系の仕事は下記になりがちなんで微妙なんだけどね。日本でありがちの事なかれ主義なお仕事が多い

動作環境

  • Windows 10
  • 8G
  • AS 3.0.1 /AS 3.1.1
  • gradle plugin 3.0.1 / 3.1.1
  • gradle runtime 3.5.1

ツール一覧

CheckStyle

やたらと更新が速いPlugin(サイズも数十Mでデカい)

半閉鎖環境のネットが遅い環境だとIDEが固まるのでzipで落としてきてzip installが推奨

※jenkins pluginもあって、お客さんのbuild職人にエラーレポートで指摘されるからピリピリ

除外設定

https://qiita.com/ponsuke0531/items/effcdbf890f850030ba3

でもこの手の除外xml設定をgit管理するの嫌がるのはなんでなんだろ。

.ideaフォルダとかは平気でgit管理してたりするのになー*2

FindBugs

スコープカスタマイズで自分が担当したpackageだけ指定できるので便利では有る。

ただproject open時の除外設定毎回聞いてくるのは、いつも微妙に思ってる

※jenkins pluginもあって、お客さんのbuild職人にエラーレポートで指摘されるからピリピリ

除外設定

  • build.gradle
dependencies {
    compileOnly 'com.google.code.findbugs:annotations:3.0.1'
    compileOnly 'com.google.code.findbugs:jsr305:3.0.1'
}
  • dependenciesにjarを追加して
  • SuppressFBWarnings annotation で除外記述をする。

除外方法としてはErrorPhoneと同じく一番スマートかも

誤検知対応に関する考察

自分もこれ悩んでた話。

お客さんのJenkins職人オジサンがエラーログレポートを送ってくると仕事場大騒ぎになるんだよねー


PMD

な話が出てくるので正直かける意味あるのかわかんない。後述のandroid lintと同じポジション的な感じの位置づけ

除外設定

  • 行末に "//NOPMD" とコメントを入れる

これ調べなおしてみるまで知らなかったので勉強になった

android Lint

AS標準でついているんだけど

開発者の嗜み的にセルフチェックは当然だろ?JK

みたいな扱いされてる。

チェックで引っかかる場所は、前述3個と重複することが多いなー

あと build.gradleのLint除外もココの仕事だとかけないので、ウザくなってしまう感じもある*3

  • build.graleの改変に 稟議書スタンプラリーが必要らしいので
    • AS3.0ベースにするのに compile指定が残ってる
    • 技術に自信がないから的確な形に修正提案すらできないんだろうな・・・

開発内容以外のことを気にしすぎてて色々とおかしい

除外設定

www.lifull.blog


ErrorPhone

Googleが推奨している奴。

以前まとめていて、これが一番まともな指摘をしてくれている気がする

警告除外設定もURLで表示してくれて便利

ただ

  • 「日本語で書かれたソフトウェアテスト本(QA本)」的な奴に紹介されていないので知名度低い
    • SI屋さん的には存在しないもん扱いされてる

状況があってすごく残念

除外設定

  • SuppresWarningsで記載する。エラーURLが表示されているので簡単

2018/5/25備忘

最新版のgradle-plugin 3.2-alpha15 あたりだとアノテーション除外が効かなくなってる

IDEA標準機能

これ実は結構頭いいんだけど*4 知らない人多いから評価されないんだよなー

ココらへんは布教本次第なのかねー


静的解析系のツールをかけて品質って本当に上がるの??

な状況はあって、結局人の運用次第なんだよなー。

昨今はAIで自動コード作成、自動QAができるはずと言ってるけど

運用方針が固まってないから無理っしょ(苦笑*5

  • RPAエンジニア(Excelマクロ)大量募集 って根幹は
    • 会社ごとにExcelフォーマットがあって自動化出来ない*6

に尽きるからなーと。

よくIBMの業務パッケージ等をお役所に納品する案件で、日本だけよく裁判で賠償金ウンチャラで揉めてるよなー

海外だとありえないらしいんだけど*7

静的解析は神なのか?

ロジック適正か辺りのレビューはレビューアがその言語の玄人じゃないと無理だとは思うんだけどね

*1:gitを使ってれば、最近はアジャイル言うらしい・・

*2:正直いつもコンフリクト置きてて邪魔

*3:警告の重要度の判別ができてない

*4:AS上でgit commit時に聞いてくる機能と同じ

*5:日本人事なかれ主義多いし

*6:ツールプリセットに業務を合わせない日本人

*7:利用者が製品マニュアル読み込んで覚える