tkqubo / codeclimate-tslint

Code Climate TSLint-Engine
40 stars 20 forks source link

unable to add engine to codeclimate #4

Open daudt opened 8 years ago

daudt commented 8 years ago

I'm using the latest docker image from code climate. Here's what I've tried to get tslint to work with cc: npm i codeclimate-tslint --save-dev codeclimate engines:enable tslint

Engine not found. Run 'codeclimate engines:list' for a list of valid engines.

Any ideas? Thanks.

mrb commented 8 years ago

@daudt If you have the image locally, you should be able to run codeclimate analyze --dev in a project which has tslint listed in the .codeclimate.yml. We're working on getting the tslint engine released.

tkqubo commented 8 years ago

@mrb thanks for answering question! @daudt as such, could you wait for a moment? thanks.

axe312ger commented 8 years ago

Any progress here? 😸

tkqubo commented 8 years ago

Sorry I'm still struggling to solve some issues.

Both npm start and codeclimate analyze --dev work on my MacBook, but when I setup CentOS 7 environment and try to run npm start, it fails with

/usr/src/app/node_modules/glob/sync.js:328
        throw er
        ^

Error: EACCES: permission denied, scandir '/code'
    at Error (native)
    at Object.fs.readdirSync (fs.js:856:18)
    at GlobSync._readdir (/usr/src/app/node_modules/glob/sync.js:275:41)
    at GlobSync._processReaddir (/usr/src/app/node_modules/glob/sync.js:135:22)
    at GlobSync._process (/usr/src/app/node_modules/glob/sync.js:130:10)
    at new GlobSync (/usr/src/app/node_modules/glob/sync.js:46:10)
    at Function.globSync [as sync] (/usr/src/app/node_modules/glob/sync.js:24:10)
    at /usr/src/app/dist/fileMatcher.js:21:53
    at arrayMap (/usr/src/app/node_modules/lodash/lodash.js:620:23)
    at Function.map (/usr/src/app/node_modules/lodash/lodash.js:8600:14)

Actually the command that's failing is

docker run -v $(pwd):/code -v $(pwd)/config.json:/config.json tkqubo/codeclimate-tslint

Even though I change the permissions of all the files and sub-directories to 777 but still fails.

And for codeclimate analyze --dev on CentOS, it fails with No '.codeclimate.yml' file found. while there is actually .codeclimate.yml on the current directory...

I have currently no idea what to do to them, Docker is a bit difficult to me :cold_sweat:

mathebox commented 8 years ago

We would really like to use this engine for our project! Is there any progress or a workaround to get this running on codeclimate?

tkqubo commented 8 years ago

Sorry recently I have no progress on this project at all... But I will tackle this again soon!

mathebox commented 8 years ago

If I can help in some way, please let me know.

tkqubo commented 8 years ago

Sorry I still stuck with codeclimate execution. Here is what I did:

$ sudo yum upgrade -y
$ sudo yum install -y git docker gcc-c++ make
$ sudo groupadd docker
$ sudo gpasswd -a ${USER} docker
$ sudo service docker start
$ curl -L https://github.com/codeclimate/codeclimate/archive/master.tar.gz | tar xvz
$ cd codeclimate-master
$ sudo make install
$ codeclimate analyze --dev
# then error message:
No '.codeclimate.yml' file found. Run 'codeclimate init' to generate a config file.
$ codeclimate init
# different error message
Generating .codeclimate.yml...
error: (Errno::EACCES) Permission denied @ dir_initialize - /code
$ sudo service docker stop
$ sudo docker daemon
# then from another process,
$ codeclimate analyze --dev
docker: Error response from daemon: Cannot start container 8bb00bb5fdb6db6b7e8fc28f1d11a539e912d4a1987ba631e9f97fb09e546574: [9] System error: exit status 1.
WARN[0000] devmapper: Usage of loopback devices is strongly discouraged for production use. Please use `--storage-opt dm.thinpooldev` or use `man docker` to refer to dm.thinpooldev section.
WARN[0000] devmapper: Base device already exists and has filesystem xfs on it. User specified filesystem  will be ignored.
INFO[0000] [graphdriver] using prior storage driver "devicemapper"
INFO[0000] Graph migration to content-addressability took 0.00 seconds
INFO[0000] Firewalld running: false
INFO[0000] Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address
INFO[0000] Loading containers: start.
.
INFO[0000] Loading containers: done.
INFO[0000] Daemon has completed initialization
INFO[0000] Docker daemon                                 commit=9419b24-unsupported execdriver=native-0.2 graphdriver=devicemapper version=1.10.3
INFO[0000] API listen on /var/run/docker.sock
INFO[0002] {Action=create, Username=tkqubo, LoginUID=1000, PID=22164}
INFO[0002] {Action=attach, ID=8bb00bb5fdb6db6b7e8fc28f1d11a539e912d4a1987ba631e9f97fb09e546574, Username=tkqubo, LoginUID=1000, PID=22164}
INFO[0002] {Action=start, ID=8bb00bb5fdb6db6b7e8fc28f1d11a539e912d4a1987ba631e9f97fb09e546574, Username=tkqubo, LoginUID=1000, PID=22164, Config={Hostname=8bb00bb5fdb6, AttachStdin=true, AttachStdout=true, AttachStderr=true, Tty=true, OpenStdin=true, StdinOnce=true, Env=[CODECLIMATE_CODE=/home/tkqubo/codeclimate-master CODECLIMATE_TMP=/tmp/cc CODECLIMATE_DEBUG CONTAINER_MAXIMUM_OUTPUT_BYTES CONTAINER_TIMEOUT_SECONDS ENGINE_MEMORY_LIMIT_BYTES PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin CODECLIMATE_DOCKER=1], Cmd={parts:[analyze --dev]}, ArgsEscaped=false, Image=codeclimate/codeclimate, WorkingDir=/usr/src/app, Entrypoint={parts:[/usr/src/app/bin/codeclimate]}, NetworkDisabled=false, Labels=map[]}, HostConfig={Binds=[/home/tkqubo/codeclimate-master:/code /tmp/cc:/tmp/cc /var/run/docker.sock:/var/run/docker.sock], LogConfig={Type:json-file Config:map[]}, NetworkMode=default, PortBindings=map[], RestartPolicy={Name:no MaximumRetryCount:0}, DNS=[], DNSOptions=[], DNSSearch=[], Privileged=false, PublishAllPorts=false, ReadonlyRootfs=false, ShmSize=67108864, Resources={CPUShares:0 CgroupParent: BlkioWeight:0 BlkioWeightDevice:[] BlkioDeviceReadBps:[] BlkioDeviceWriteBps:[] BlkioDeviceReadIOps:[] BlkioDeviceWriteIOps:[] CPUPeriod:0 CPUQuota:0 CpusetCpus: CpusetMems: Devices:[] KernelMemory:0 Memory:0 MemoryReservation:0 MemorySwap:0 MemorySwappiness:0xc20883d428 OomKillDisable:0xc20883d432 PidsLimit:0 Ulimits:[]}}}
INFO[0002] Config: &{CommonCommand:{ContainerPid:0 ID:8bb00bb5fdb6db6b7e8fc28f1d11a539e912d4a1987ba631e9f97fb09e546574 InitPath:/.dockerinit MountLabel: Mounts:[{Source:/home/tkqubo/codeclimate-master Destination:/code Writable:true Data: Propagation:rslave} {Source:/tmp/cc Destination:/tmp/cc Writable:true Data: Propagation:rslave} {Source:/var/lib/docker/containers/8bb00bb5fdb6db6b7e8fc28f1d11a539e912d4a1987ba631e9f97fb09e546574/secrets Destination:/run/secrets Writable:true Data: Propagation:} {Source:/var/lib/docker/containers/8bb00bb5fdb6db6b7e8fc28f1d11a539e912d4a1987ba631e9f97fb09e546574/shm Destination:/dev/shm Writable:true Data: Propagation:rprivate} {Source:/var/lib/docker/containers/8bb00bb5fdb6db6b7e8fc28f1d11a539e912d4a1987ba631e9f97fb09e546574/resolv.conf Destination:/etc/resolv.conf Writable:true Data: Propagation:rprivate} {Source:/var/lib/docker/containers/8bb00bb5fdb6db6b7e8fc28f1d11a539e912d4a1987ba631e9f97fb09e546574/hostname Destination:/etc/hostname Writable:true Data: Propagation:rprivate} {Source:/var/lib/docker/containers/8bb00bb5fdb6db6b7e8fc28f1d11a539e912d4a1987ba631e9f97fb09e546574/hosts Destination:/etc/hosts Writable:true Data: Propagation:rprivate} {Source:/var/run/docker.sock Destination:/var/run/docker.sock Writable:true Data: Propagation:rslave}] Network:0xc2089ffbc0 ProcessConfig:{CommonProcessConfig:{Cmd:{Path: Args:[] Env:[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=8bb00bb5fdb6 TERM=xterm CODECLIMATE_CODE=/home/tkqubo/codeclimate-master CODECLIMATE_TMP=/tmp/cc CODECLIMATE_DOCKER=1] Dir: Stdin:<nil> Stdout:<nil> Stderr:<nil> ExtraFiles:[] SysProcAttr:0xc208a0f7a0 Process:<nil> ProcessState:<nil> lookPathErr:<nil> finished:false childFiles:[] closeAfterStart:[] closeAfterWait:[] goroutine:[] errch:<nil>} Tty:true Entrypoint:/usr/src/app/bin/codeclimate Arguments:[analyze --dev] Terminal:<nil>} Privileged:false User: Console:} ProcessLabel: Resources:0xc2089e0f00 Rootfs:/var/lib/docker/devicemapper/mnt/bb7b835888be871447cd416993bd5eaf201816bcda6b51974b959948acc2048f/rootfs WorkingDir:/usr/src/app TmpDir:/var/lib/docker/tmp/8bb00bb5fdb6db6b7e8fc28f1d11a539e912d4a1987ba631e9f97fb09e546574622022844 ContainerJSONPath:/var/lib/docker/containers/8bb00bb5fdb6db6b7e8fc28f1d11a539e912d4a1987ba631e9f97fb09e546574/config.v2.json} AllowedDevices:[0xc20803a2d0 0xc20803a320 0xc20803a5a0 0xc20803a5f0 0xc20803a640 0xc20803a690 0xc20803a6e0 0xc20803a780 0x1fc0cc0 0x1fc0d20 0x1fc0d80 0x1fc0de0 0x1fc0e40 0x1fc0ea0] AppArmorProfile: AutoCreatedDevices:[0xc20803a7d0 0x1fc0cc0 0x1fc0d20 0x1fc0d80 0x1fc0de0 0x1fc0e40 0x1fc0ea0] CapAdd:[] CapDrop:[] CgroupParent:/docker GIDMapping:[] GroupAdd:[] Ipc:0xc20882fc80 OomScoreAdj:0 Pid:0xc2089dbbe5 ReadonlyRootfs:false RemappedRoot:0xc2089dbbf0 SeccompProfile: Sysctls:map[] UIDMapping:[] UTS:0xc2089dbbe6}
WARN[0002] signal: killed
ERRO[0002] error locating sandbox id 3931f17f30487e6882b2bb60486107fe3c1e2017e45258581561d8019d3f71c9: sandbox 3931f17f30487e6882b2bb60486107fe3c1e2017e45258581561d8019d3f71c9 not found
WARN[0002] failed to cleanup ipc mounts:
failed to umount /var/lib/docker/containers/8bb00bb5fdb6db6b7e8fc28f1d11a539e912d4a1987ba631e9f97fb09e546574/shm: invalid argument
ERRO[0002] Error unmounting container 8bb00bb5fdb6db6b7e8fc28f1d11a539e912d4a1987ba631e9f97fb09e546574: not mounted
ERRO[0002] Handler for POST /v1.22/containers/8bb00bb5fdb6db6b7e8fc28f1d11a539e912d4a1987ba631e9f97fb09e546574/start returned error: Cannot start container 8bb00bb5fdb6db6b7e8fc28f1d11a539e912d4a1987ba631e9f97fb09e546574: [9] System error: exit status 1
INFO[0002] {Action=remove, ID=8bb00bb5fdb6db6b7e8fc28f1d11a539e912d4a1987ba631e9f97fb09e546574, Username=tkqubo, LoginUID=1000, PID=22164}

I don't know this is due to docker or codeclimate. Is there anyone who knows why this happens?

brantw commented 8 years ago

I was able to run codeclimate analyze --dev to run codeclimate-tslint both locally on macOS and on CentOS with the changes in pull request #6. I believe this corrects this issue, please try it out and let me know if you are still not able to run via Docker.

avegancafe commented 8 years ago

@tkqubo I think that issue has to do with docker/CentOS-- as with @brantw I'm able to run codeclimate analyze --dev locally (at least on macOS)

mrb commented 8 years ago

Hey Everyone - https://github.com/swimlane/codeclimate-tslint is working but needs some testing! If anyone has time to run through some of the QA spreadsheet, let me know.

avegancafe commented 8 years ago

💯! I'm down

mrb commented 8 years ago

@kyleholzinger The spreadsheet is here - https://docs.google.com/spreadsheets/d/1hGUh9EGTcRxND_uTJ684vgZV-9O-oRi75RgoEAEp1bE/edit#gid=0 - basically we need to run this through a few OSS repos to make sure it works. There is one additional bit of work to do, to add remediation_points to the engine output, but that can wait a bit.

avegancafe commented 8 years ago

Sounds great man! I'll check it out when I get a chance

avegancafe commented 7 years ago

@mrb sorry just getting back to this. I'm trying to install it locally again and having some issues. Could you post a step by step guide on how to install it? I've tried installing it via npm, npm -g, and cloning it but when I run codeclimate analyze --dev it says Unable to find image 'codeclimate/codeclimate-tslint:latest' locally

avegancafe commented 7 years ago

Update: for anyone looking to install it and test it locally here are the steps to install:

  1. Install docker. I got it from here
  2. Clone this repo and build the docker image locally
    git clone https://github.com/tkqubo/codeclimate-tslint/
    cd codeclimate-tslint
    docker build -t codeclimate/codeclimate-tslint .
  3. Go to your repo that has the ts files you want to lint in it and add the following to your .codeclimate.yml (or whatever your equivalent is)
    tslint:
    enabled: true
  4. Run codeclimate analyze --dev
  5. You're done!
tiagoefmoraes commented 7 years ago

codeclimate-tslint can now be used on codeclimate.com with this config on codeclimate.yml:

engines:
  tslint:
    enabled: true
    channel: beta

see: https://github.com/codeclimate/codeclimate-duplication/issues/127#issuecomment-286554197

lapanti commented 7 years ago

I'm having problem running codeclimate-tslint on codeclimate.com, I get the following error:

screen shot 2017-04-23 at 18 56 54

But when I run tslint 'src/**/*.{ts,tsx}' in my repo it says that everything is okay.

My .codeclimate.yml:

engines:
  tslint:
    enabled: true
    channel: beta
  scss-lint:
    enabled: true
  fixme:
    enabled: true
ratings:
  paths:
  - "src/**/*"
  - "**.ts"
  - "**.tsx"
  - "**.scss"
exclude_paths:
- dist/
- node_modules/

See https://github.com/Lapanti/ts-react-boilerplate/pull/28

murt commented 7 years ago

I'm getting the same error but only on codeclimate.com - directly calling codeclimate or tslint locally provides correct results. The issue on codeclimate.com seems to be related to finding the configuration file.

It's related to having any type of external config - eg: tslint-config-airbnb, tslint-react, etc...

Maybe considering creating something similar to the eslint whitelist for tslint

avegancafe commented 7 years ago

Good call, thanks for the info @murt! I'll look into adding some default external configs. Seems relatively easy enough! For now I'll try adding the airbnb and react ones, looks like that's what you're using @Lapanti

lapanti commented 7 years ago

What's the status on this? Do you need some help?

avegancafe commented 7 years ago

Hey @Lapnati! Sorry been crazy busy at work lately (doing this on the side), we're testing out 10 repos that use TSLint and we're 60% of the way there. Here's the GitHub project I made to track our progress, feel free to help out! https://github.com/kyleholzinger/codeclimate-tslint/projects/1